백엔드
오프라인 매장에 코드를 배포하다 Part 2: 올리브영 전자라벨(ESL) 최적화 여정
두줄요약
전국 1,300개 매장 전자라벨 배치를 위해 Partitioning으로 락 경합을 제거하고 처리 시간을 크게 줄였습니다. 또한 Aurora Serverless v2로 트래픽에 맞게 자동 확장해 성능과 비용을 함께 개선했습니다.
문제 상황
- 전국 1,300여 개 매장으로 전자라벨 배치를 확장하며 처리 시간이 급격히 증가한 상황
- 단순 병렬 처리 적용 시 긴 트랜잭션과 인접 인덱스 범위 락 경합으로 Deadlock 발생
- 트래픽 변동성이 커서 고정형 RDS로는 비용과 안정성을 동시에 맞추기 어려운 운영 딜레마
해결 방법
- Spring Batch Partitioning으로 PK 범위 기준 데이터 분할, 워커별 처리 구간 분리
- 데이터 간섭 제거로 DB Lock 경합을 원천 차단하고 배치 처리 시간을 대폭 단축
- Aurora RDS Serverless v2 도입으로 트래픽에 맞춘 즉각적 오토스케일링과 종량제 비용 구조 확보
성능/운영 포인트
- 1개 매장 평균 15분 처리에서 1,300개 매장 전체를 약 5분 만에 완료
- 배치 폭주 시 ACU 수직 확장, 비수기에는 최소 수준으로 축소
- 고정형 인스턴스 대비 약 40% 비용 절감
