배치 작업하여 MongoDB에 저장한 결과물을 가져오는 API 성능 부하 테스트를 진행하였는데 Fail하는 경우가 전체 Request 중에서 2% 정도 발생하였다. 언제 발생하는지 보니 Scheduler가 딱 새로운 배치 작업하면서 업데이트하고나서 잠깐동안 Fail이 나는 것을 확인하였다.
이유는 간단했다. 최신 배치 결과를 가져오기 위해서 최신 배치 결과 ID를 스태틱 변수에 저장하는데, 이 ID를 먼저 최신 ID로 바꾸고 MongoDB에 배치 작업한 데이터를 삽입하고 있었다. 그래서 MongoDB에 새로운 배치를 저장하기 직전 없는 데이터를 조회하느라 API가 실패하고 있던 것이다.
순서 바꿔서 해결하였다.