올리브영 결제 이야기 Part - 3
·2022.12.13 23:00
올리브영은 주문 결제 시 발생하는 Dead Lock 문제를 해결하기 위해 트랜잭션 단위를 분리하여 시스템 안정성을 확보했다.
올리브영의 주문 완료 프로세스는 재고 확인, 결제, 배송 정보 처리 등 많은 로직을 포함하며, 데이터 정확성을 위해 모든 과정을 하나의 Transaction으로 묶어 처리해 왔다.
하지만 트래픽이 몰릴 때 여러 사용자가 동시에 데이터를 수정하려고 시도하면서 DB Lock이 발생했고, 이는 데이터 처리 순서가 꼬이는 **Dead Lock(교착 상태)**으로 이어져 시스템 리소스를 과다하게 사용하고 서비스가 중단될 위험을 초래했다.
이를 해결하기 위해 기존의 거대한 트랜잭션 단위를 개별적인 트랜잭션으로 나누는 트랜잭션 분리를 진행했다. 1+1 상품, 증정품, 프로모션 상품 등 복잡한 상품 속성을 고려한 설계 과정이 있었으나, 결과적으로 각 아이템이 독립적으로 Commit될 수 있도록 구조를 개선했다.
Jmeter를 이용한 부하 테스트 결과, 개선 전에는 발생하던 수많은 오류와 Dead Lock이 개선 후에는 전혀 발생하지 않음을 확인했다. 실제 운영 환경에서도 높은 트래픽이 발생하는 이벤트 시점에 주문 처리가 안정적으로 이루어지는 성능 향상을 입증했다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.