현재 회사에서 맡고 있는 프로젝트에서 꽤나 자주 사용하는 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