컬리 주문서비스개발팀이 새 주문 서버를 만들며 첫 서비스로 선물하기를 출시한 회고다. 카카오톡으로 상품을 선물하고 수령인이 주소를 입력하는 서비스를, 레거시 PHP 모놀리식과 호환을 유지하며 dual write로 구축한 과정을 다룬다.
핵심 포인트- 선물하기는 새 주문 서버의 첫 출시 서비스로, 레거시와의 호환 유지가 핵심 과제
- 레거시가 고도몰(PHP) 기반 모놀리식·단일 DB라 분산 시스템 구축 시 단일 장애점(SPOF) 우려
- 신규 DB와 레거시 간 dual write로 데이터를 동기화해 운영 호환성을 유지
- 혁명적 교체가 아니라 점진적(evolutionary) 방식으로 별도 선물 주문 생태계를 구성
- 분산 서버 구조로 수평 확장이 가능하고 필요 시 메시지 큐 스로틀링 여지 확보
상세 정리- 서비스 정의: 고객이 상품을 사서 카카오톡 메시지로 선물하면 수령인이 배송지를 입력해 받는 구조로, 여러 커머스가 유사 서비스를 내던 시점의 요구사항이었다.
- 어려움 1: 레거시가 고도몰 솔루션(PHP) 기반 모놀리식에 단일 DB라, 분산 시스템을 붙일 때 단일 장애점이 될 수 있었다.
- 어려움 2: 8명 규모의 주문개발팀이 운영과 신규 개발을 동시에 감당해야 했다.
- 어려움 3: 기존 서비스들과 요구사항을 조율하며 촉박한 일정을 맞춰야 했다.
- 개발 방식: 신규 주문 서버는 신규 DB와 레거시 사이에 dual write로 데이터를 동기화해 호환성을 유지했고, 급격한 교체 대신 기존 프로세스와 호환되는 별도 선물 주문 생태계를 점진적으로 구축했다.
- 확장성: 분산 서버 구조로 수평 확장을 가능하게 했고 필요하면 메시지 큐로 스로틀링할 여지를 뒀다.
- 운영 호환 고려: 일정 준수, 도메인 전문가 개입 범위, 기존 시스템에 맞춘 상품 구성, 연관 서비스팀 요청 최소화를 함께 고려했다.
- 배포·QA: 8월 말 연관 도메인 배포 후 9월 2일 출시했고, 출시 전 1000건 이상의 QA 이슈를 만들고 해소하며 한 달간 QA 기간을 둬 운영 장애를 예방했다.
왜 읽나레거시 PHP 모놀리식과 호환을 유지하며 새 주문 서버로 점진 이관하려는 백엔드 개발자에게 dual write·분산 구조·QA 전략의 회고 레퍼런스.