DevBoi

[Spring Batch] Spring Batch에서 멱등성을 유지하는 방법 본문

Develop/[Spring Batch]

[Spring Batch] Spring Batch에서 멱등성을 유지하는 방법

HiSmith 2022. 4. 10. 11:09
반응형

멱등성 : 연산을 여러번 적용하더라도,  결과가 달라지지 않는 성질

 

예를 들어서 오늘 날짜의 매출 데이터를 집계하는 배치가 있다고 가정하자

코드에서 만약에 LocalDate.Now가 있다면, 배치는 항상 오늘 날짜를 가져와서 혹은 오늘기준의 특정 날짜를 가져와서

배치를 실행 시킬 것이다.

 

근데 만약에,,,어제 배치를 다시 돌려달라고 하거나, 어제 배치가 오류가 나서 어제의 배치를 다시 돌려야할때는?

소스 수정 -> 배포 -> 롤백의 과정을 거쳐야한다.

이와 같은 것은 멱등성이 깨졌다고 할수있다.

 

해당 케이스의 경우에 멱등성을 지킬수 있는 방법은 몇가지가 있다.

Spring Batch Job Parameter를 통해, 오늘날짜의 값을 외부에서 주입받아서 실행 시켜주면 된다.

그러면 이와 같은 경우에는 멱등성을 유지할 수 있게 된다.

또한 Spring Batch의 스케쥴러 중 하나인 Jenkins에서는 DateParameter 플러그 인이 존재하여, 날짜를 주입 받아서 사용할 수있다.

이 플러그인은 Java8의 LocalDateTime과 호환하여 사용 할 수있어서 편하게 관리가 가능하다.

 

Jenkins 예시

반응형