AI Briefing

Spring Batch 애플리케이션 성능 향상을 위한 주요 팁

·2023.09.05 19:00

Spring Batch의 성능 저하 원인인 Network 및 Database I/O를 벌크 처리와 병렬 처리로 최적화하는 방법을 제시한다.

Spring Batch 성능 향상을 위해서는 처음부터 구조를 크게 바꾸는 병렬 처리보다는, 현재 구조를 유지하며 I/O 작업을 묶어 처리하는 방식이 효율적이다. 과도한 구조 변경은 향후 더 큰 성능 요구가 있을 때 더 많은 비용을 발생시킬 수 있기 때문이다.

성능 저하의 주요 원인은 두 가지로 요약된다. 첫째는 ItemProcessor에서 단건으로 API를 호출하며 발생하는 Network I/O 대기 시간이며, 둘째는 JpaItemWriter의 Dirty Checking으로 인해 발생하는 빈번한 Database I/O다. 예를 들어, 150ms의 API 응답 시간이 걸리는 작업을 1,000건의 Chunk 단위로 처리하면 약 2.5분의 대기 시간이 발생한다.

이를 해결하기 위한 최적화 전략은 다음과 같다.

  • Processor 제거 및 Writer 통합: Processor에서 수행하던 단건 작업을 Writer로 옮겨 벌크 처리가 가능하도록 구조를 개선한다.
  • 병렬 처리 활용: Network I/O 대기 시간을 줄이기 위해 병렬 처리를 도입하여 API 호출 효율을 높인다.
  • I/O 횟수 최소화: Projection을 사용하여 영속성 컨텍스트의 오버헤드를 줄이고, In Update 방식을 통해 데이터베이스 업데이트 횟수를 획기적으로 줄인다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.