✅ 모놀리식 구조: 주문 완료 단계가 1500라인 이상의 단일 트랜잭션으로 구성됨
✅ 높은 도메인 간 결합도: 모든 로직이 하나의 서비스에서 처리되어 변경이 어려움
✅ 확장성 제한: 새로운 기능 추가 시 기존 코드 변경이 필수적이므로 리스크 증가
✅ 부분 실패 시 롤백 부담 증가: 일부 단계에서 실패해도 전체 트랜잭션이 롤백되어 불필요한 리소스 낭비
제가 가장 도전적이라고 느꼈던 프로젝트는 스타벅스 사이렌오더의 주문 완료 단계 개발경험입니다.
이 프로젝트는 결제 확정, 장바구니 재정렬, 리워드 적립 등 다양한 비즈니스 로직이 포함된 도메인을 다루었습니다. 특히 사이렌오더는 일평균 50만 건 이상의 주문이 발생하는 시스템이기에, 대규모 트랜잭션 처리를 유지하면서 데이터 정합성을 확보하고 성능 병목을 방지하는 것이 도전 과제였습니다.
주문 완료 단계에서 저는 도메인 주도 설계(DDD)를 기반으로 각 기능을 Aggregate로 분리하여 도메인의 결합도를 낮추는 데 집중했습니다. 이를 통해 핵심 로직인 결제 확정과 주문 상태 업데이트를 독립적으로 관리할 수 있도록 설계하였으며, 실시간 처리가 필요 없는 로직인 알림톡 발송과 리워드 적립은 Kafka를 활용해 비동기 처리 방식으로 전환하여 시스템의 응답 속도를 향상시켰습니다. 또한 1500 line 이 넘던 로직을 100 line 이하로 줄여 한 눈에 알아보기 쉽게 리팩토링하였습니다. 처리속도 또한 평균 2초정도 소요되던 기능이 1초 이내로 처리가 돼, 기존기능 대비 50% 이상 성능향상을 이루었습니다.
데이터 정합성 유지를 위해 클라우드 생성 데이터를 온프레미스 DB에 저장하는 비동기 메시지 저장 방식을 채택했습니다. 이 접근법은 마이그레이션되지 않은 기능에 대해서도 동일하게 동작할 수 있도록 보장했습니다.