본문으로 건너뛰기

스케줄러

ShedLock 기반 분산 스케줄러 작업 목록입니다.

작업 목록

작업명주기락 설정설명
이용 종료 알림톡매 10분 (정각 기준)20s ~ 40s예약 종료 시 카카오 알림톡 발송
네이버 예약 동기화30초 간격5s ~ 15s네이버 스마트플레이스 예약 크롤링 + 가상계좌 발급
네이버 세션 헬스체크매시간 정각30s ~ 60s네이버 API 쿠키 유효성 확인
쿠키 갱신 사전 알림09:00, 23:0030s ~ 60sSlack으로 쿠키 갱신 리마인더
초과체류 감지매 10분 (5초 오프셋)20s ~ 4mYOLO 기반 룸 내 사람 감지
다중 인원 감지매 5분30s ~ 120s이용 중 2인 이상 감지 시 Discord 알림
HA 헬스체크매 5분30s ~ 4mHomeAssistant 연결 상태 확인

ShedLock

분산 환경에서 스케줄러 중복 실행을 방지합니다.

  • 저장소: PostgreSQL shedlock 테이블
  • lockAtLeastFor: 최소 락 유지 시간 (빠르게 끝나도 다른 인스턴스에서 재실행 방지)
  • lockAtMostFor: 최대 락 유지 시간 (행 걸린 작업의 락 자동 해제)

로깅

@LogScheduler AOP 어노테이션으로 MDC에 서비스 라벨이 자동 설정됩니다.

라벨작업
scheduler-alimtalk이용 종료 알림톡
scheduler-naver-crawler네이버 예약 동기화
scheduler-occupancy초과체류 감지
scheduler-ha-healthcheckHA 헬스체크

Grafana Loki에서 서비스별로 로그를 필터링할 수 있습니다:

{service="scheduler-naver-crawler"} | json | level="ERROR"

연속 예약 처리

이용 종료 알림톡 발송 시, 다음 예약의 시작 시간이 현재 예약 종료 시간과 동일하면 연속 예약으로 판단하여 알림을 SKIP합니다.