“장보기 지원금이 곧 소멸돼요” 알림 뒤에서 일어난 일
백엔드
“장보기 지원금이 곧 소멸돼요” 알림 뒤에서 일어난 일
두줄요약
장보기 지원금 소멸 알림 배치에서 메시지 발송 대기 중 DB 커넥션을 오래 점유해 타임아웃이 발생했습니다. 이를 위해 리소스 사용 구간과 발송 대기 구간을 분리해 배치 안정성을 높였습니다.
문제 상황
- 장보기 지원금 소멸 알림 대량 발송 배치에서 수행 시간이 길어지고 간헐적 실패 발생
- DB 커넥션 타임아웃 발생, 메시지 발송 대기 동안 커넥션을 오래 점유하는 구조
원인 분석
- Spring Batch Chunk 흐름 안에서 대상자 조회와 메시지 발송 API 호출이 함께 묶인 구조
- API 응답을 기다리는 동안에도 DB 커넥션이 반환되지 않아 Connection Pool 부담 증가
해결 방법
- DB 리소스 사용 구간과 메시지 발송 대기 구간 분리
- ResourcelessTransactionManager 적용으로 Chunk 트랜잭션의 리소스 점유 범위 조정
성능/운영 포인트
- 병렬 처리로 전체 배치 처리 시간 단축
- 대량 발송 상황에서 커넥션 점유 완화와 배치 안정성 개선 기반 마련
