ShedLock으로 스케줄러 중복 실행 막기
ShedLock: 분산 환경에서 @Scheduled 작업이 동시에 두 번 이상 실행되지 않도록 보장하는 라이브러리. net.javacrumbs.shedlock 패키지에서 제공한다. 핵심 애노테이션이 @SchedulerLock이라, 흔히 SchedulerLock으로도 불린다. 스케줄러 자체를 대체하지 않는다. 스프링의 @Scheduled는 그대로 두고, 그 위에 “한 번만 실행” 제약만 얹는 동시성 제어 도구다. 왜 필요한가 무상태 애플리케이션을 여러 인스턴스로 띄우면, 각 인스턴스가 자기 스케줄러를 갖는다. @Scheduled(cron = "0 0 * * * *") 하나만 붙여두면 인스턴스가 3대일 때 매시 정각에 같은 작업이 3번 실행된다....