Cron으로 Task Scheduling

Olivia·2024년 11월 25일
0

[NestJS]

목록 보기
12/12
post-thumbnail

현재 회사에서 맡고 있는 프로젝트에서 꽤나 자주 사용하는 Cron에 대해서 정리해보고자 한다.
예전에 Kubernetes를 살짝 찍먹할때 Cronjob에 대해서 아주 살짝 공부한 적이 있기 때문에 그렇게 낯설지 않 았던 Cron...

쿠버네티스에서 Cronjob
- 클러스터 레벨에서 동작하는 스케줄링 리소스
- 주기적으로 pod 생성해 작업 수행

또 다시 마주치고 싶지 않아 k8s...🤦‍♀️

위에서 살짝 언급했듯, 쿠버네티스에서 Cronjob클러스터 레벨에서 작동을 한다.
반면, Nest.js의 Cron애플리케이션 레벨에서 동작하며, 애플리케이션이 실행중인 동안 계속 동작하게 된다.

어쨌거나 저쨌거나 내가 이번 프로젝트에서 Cron을 사용한 이유는 여러가지가 있겠지만 크게 두 가지 기능을 위해서다.

1. 사용자 비밀번호 만료일 관리: 비밀번호 만료일(expire date)를 확인하고, 만료된 계정을 자동으로 disabled 처리하는 작업
2. 로그 데이터 정리: 2022년부터 쌓여있는 방대한 로그 기록 중 최근 1달치만 보관하고 나머지는 자동 삭제하는 작업

이렇게 반복적이고 정기적으로 실행해야하는 작업들은 Cron을 통해서 자동화할 수 있다.
특히, Nest.js에서는 애플리케이션 코드 내에서 이런 작업들을 직접 스케줄링할 수 있어서 별도의 인프라 설정 없이도 편리하게 사용할 수 있다.

백엔드를 하게된지 0.5개월된 신입 개발자의 머리에는 Cron말고 떠오르는게 없는데, 더 좋은 방법이 있다면 언제든 댓글로 알려주십쇼.. 😮‍💨


Nest.js에서 Cron 사용하기

Nest.js에서 Cron을 사용하기 위해서는 우선 관련 모듈을 설치해야 한다.

npm을 사용하는 경우:

npm install --save @nestjs/schedule
npm install --save-dev @types/cron

yarn을 사용하는 경우:

yarn add @nestjs/schedule
yarn add --dev @types/cron
profile
👩🏻‍💻

0개의 댓글