현재 회사에서 맡고 있는 프로젝트에서 꽤나 자주 사용하는 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을 사용하기 위해서는 우선 관련 모듈을 설치해야 한다.
npm install --save @nestjs/schedule
npm install --save-dev @types/cron
yarn add @nestjs/schedule
yarn add --dev @types/cron