다중 인스턴스 환경에서 스케줄링 중복 실행을 제어하는 @ShedLock 에 대해 정리하는 글입니다.코드는 깃허브에 있습니다. Spring 에서는 정해진 시간마다 지정한 메소드가 실행되도록 스케줄링 기능을 지원하는 @Scheduled 어노테이션이 존재합니다.이 스케줄링 기능을 Spring 에서 구현하였을 때, 단일 인스턴스 (1개 서버) 배포환경에서는 신경써줘야할게 없지만 다중 인스턴스 (n 개의 서버, scale-out) 배포 환경일 경우n 개의 인스턴스 환경에 배포되어있는 n 개의 프로그램이 특정 시간에 n 번의 스케줄링을 체크하여n 번의 기능을 수행합니다.즉, 중복이 일어날 수 있습니다.이러한 문제점을 해결하기 위해서는 아래와 같은 처리를 해주어야합니다.1번만 작업을 해도 된다.혹은 특정 스레드에서 ..