[NestJS] Batch 적용하기 with cron

joo·2022년 12월 7일
0

nestJS

목록 보기
3/3
post-thumbnail

0. 들어가기전

Batch는 특정시간에 프로그램을 실행시키는 것을 말한다. cron은 batch 시스템을 적용하는 종류중 하나이다.
이전에 42seoul과제에서 cron으로 10분마다 상태를 보여주는 과제를 한적이 있었다. 그 때는 그냥 그런것이 있구나 하고 넘어갔었는데, 이번 프로젝트에 사용하게 되어서 놀라웠다.

프로젝트에서 48시간 동안 응답이 없으면, 취소시키는 프로그램을 구현하기로 했다. 처음에는 그저 "setTimeout()을 적용하면 되겠다."하고 구현했다. 그러다 문제가 발생했는데

중간에 서버가 끊기거나 재부팅하면 어떡하지?
setTimeout()이 많으면 서버 부하는 괜찮은 건가?

우선 동작하게 하는 것이 1순위라고 생각되어 서버 재부팅시 문제를 해결하려 했다.

  1. 응답이 대기중인 리스트를 뽑고
  2. 생성 시간으로부터 현재 시간과 비교하여 다시 setTimeout()적용
    2-1. 예외로 48시간이 지났으면 취소

어? 일정 시간마다 48시간이 넘으면 그냥 취소해 주면 되겠는데?

1. 적용

nest 공홈 최고

사실 cron적용은 쉽다. 아는 것이 어려웠던것 같다.
nestjs docs에 잘 나와있고, cron시간 설정 설명도 친절히 설명되어 있다.



다음과 같이 잘나오는 것을 볼수 있다.
처음에 cron에 헷갈린점은 위에 코드는 30초마다 실행되는 것이 아니고 프로그램 시간이 30초일 때 실행된다.

끗..!

profile
간절한 개발자

1개의 댓글

comment-user-thumbnail
2023년 3월 19일

Batch의 정확한 의미는 사용자의 개입 없이 컴퓨터가 프로그램 흐름에 따라 순차적으로 자료를 처리하는 방식입니다. 스케줄링 개념이 포함되긴 하지만, "특정 시간에 프로그램을 실행시키는 것"을 Batch라고 하지는 않습니다.

답글 달기