핵심 요약
반려생활이 Spring Batch 6 도입으로 동시성의 단위가 청크에서 아이템으로 바뀐 문제를 분석하고, JPA 기반 배치를 재설계해 LazyInitializationException를 해결한 경험을 공유합니다.
구현 방법
- Spring Batch 6의 ChunkOrientedStep 도입으로 아이템 단위 비동기로 처리
- Processor에서 엔티티를 제거하고 JSON 파싱/이미지 업로드만 워커 스레드에서 수행하는 Command 패턴 적용
- Writer에서 메인 스레드로 엔티티를 재로딩해 세션 유지 문제를 방지하고 도메인 메서드 재사용성 확보
주요 결과
- 이미지 동기화 스텝에서 약 1.8배 처리 속도 향상
- 비-I/O 중심 스텝은 단일 스레드 도입으로 속도 감소; 전체 시간은 이미지 비중이 커 개선 효과 큼
- JPA vs JDBC 선택에 따른 설계 교훈 도출

