작업 스케줄러 구축 시, Lease 기반 작업 할당, Idempotency Key 관리, Timezone 처리 등 까다로운 기술적 문제 발생
Lease를 활용한 작업 할당, Idempotency Key를 통한 중복 방지, DST(일광 절약 시간제) 변환 시의 예외 처리 등 구체적인 해결 방안 제시
커뮤니티에서는 Heartbeat 개념, Petri Nets 활용, 상태 머신 모델링 등 다양한 접근 방식과 Temporal, BullMQ와 같은 도구 활용에 대한 논의 진행
작업 스케줄러에서 Lease는 작업의 독점적 실행을 보장하는 핵심 메커니즘이다. 구체적으로, 작업자는 Lease를 획득하여 작업 실행 중 장애 발생 시 작업을 안전하게 재할당할 수 있도록 한다. 따라서, Heartbeat 메커니즘을 통해 작업자의 생존 여부를 주기적으로 확인하고, Lease 만료 시 작업을 재할당하는 방식이 일반적이다. 반면, Lease 갱신은 오버헤드를 증가시킬 수 있으므로, 적절한 Heartbeat 간격 설정이 중요하다.
Idempotency Key는 중복 작업 실행을 방지하는 데 필수적이다. 구체적으로, Idempotency Key를 사용하여 동일한 작업을 여러 번 실행하는 경우에도 단일 결과만 보장한다. 따라서, Atomic Check-and-Insert 연산을 통해 경쟁 조건을 방지하고, Key의 유효 기간을 설정하여 불필요한 데이터 축적을 막아야 한다. 반면, Key의 스코핑은 큐별로 관리하여 충돌을 방지해야 한다.
Timezone 처리는 작업 스케줄링에서 가장 어려운 부분 중 하나이다. 구체적으로, DST(일광 절약 시간제) 변경 시 발생하는 시간의 모호성을 처리해야 한다. 따라서, UTC 시간 저장 및 사전 계산을 통해 문제를 해결하고, DST 변환 시의 예외 상황에 대한 명확한 정책을 정의해야 한다. 결과적으로, Temporal과 같은 도구를 활용하여 복잡성을 줄일 수 있다.