IMG_7829.jpg

들어가며

집품 개발팀에서는 대용량 데이터를 적재하거나 가공하는 작업이 빈번하게 발생합니다. 그때마다 개발자들은 아래와 같은 과정을 반복했습니다.

  1. 데이터 읽기
  2. 비즈니스 로직 수행
  3. 최종 데이터 적재 또는 업데이트

단순해 보이지만, 이 과정에서 반복적인 코드 작성이 계속 발생했습니다. 더 큰 문제는 이렇게 작성한 코드를 실행할 때 나타났습니다.

기존 방식의 문제점

1. 진행상황 추적이 불가능

10만 건의 데이터를 처리하는데 현재 몇 퍼센트나 진행됐는지 알 수 없었습니다. 별도로 로깅 코드를 작성해야 했고, 이 과정이 매번 반복되었습니다.

2. 재시작이 어려움

5만 건째에서 에러가 발생하면? 처음부터 다시 돌려야 했습니다. 재시작을 위해선 어디서 중단되었는지 인덱스를 매번 기록해야 했고, 이 역시 수동으로 관리했습니다.

3. 변경에 취약함

읽기 방식이 바뀌거나 쓰기 방식이 바뀌면, 다른 곳에서 사용 중인 코드에 영향을 줄 수 있어 매번 새롭게 추가해야 했습니다. 비슷한 코드를 작성했습니다.

이러한 문제들을 해결하기 위해 Spring Batch 도입을 결정했습니다. 이 글에서는 집품 개발팀이 Spring Batch를 어떻게 도입하고 안정화시켰는지 공유하려고 합니다.


스프링 배치가 뭐죠?

팀에서 새로운 기술을 도입하기 위해서는 Spring Batch가 무엇이고, 현재 코드에서 어떤 것들이 바뀌어야 하는지 사전학습이 필요했습니다.

관련 강의를 통해 학습하고, 공식 문서를 참고하며 기본적인 개념을 익혔습니다.

핵심 개념 정리