컬리 OMS, Shared Cache 기반 MSA로 소규모 팀의 고효율 운영 실현
핵심 내용
컬리 OMS 팀은 Shared Cache 아키텍처와 MSA 분리를 통해 소규모 인력으로도 안정적인 주문 처리와 배포 효율성을 확보했다.
자세히 보기
컬리 OMS는 판매처의 주문을 풀필먼트 정보로 변환하는 '주문 인터프리터' 역할을 수행하며, Shared Cache 중심의 마이크로서비스 아키텍처(MSA)를 적용해 안정성과 효율성을 높였다. 이 구조는 자주 활용되는 데이터를 특정 MSA가 쓰기(Write)하고 나머지는 읽기(Read Only)로 조회하도록 데이터 소유권을 명확히 하여, 내부 MSA로 트래픽이 전파되는 것을 방지한다.
Shared Cache 아키텍처와 안정성 전략
Shared Cache는 '주문정보 조회' 등 높은 트래픽이 발생하는 API 요청에 대해 거의 대부분 캐시만으로 응답하도록 설계되었다. 이를 통해 내부 MSA의 네트워크 비용을 절감하고, 컬리몰 주문 마감 시간인 23시 피크 트래픽에도 시스템이 평온하게 유지되도록 한다. 다만 캐시 장애 시 최소 스펙으로 운영되는 MSA 인스턴스에 과부하가 걸릴 수 있어, Auto Scale Out 룰을 보수적으로 설정하고 캐시 히트율과 메모리 사이즈를 복합적으로 고려해 대응한다.
소규모 팀의 MSA 운영 효율화
PM 1명과 엔지니어 3명으로 구성된 소규모 팀은 독립적인 기능 단위로 MSA를 분리하여 개발 충돌을 최소화했다. 예를 들어 주문 반품/회수 기능 개발 시, 회수 주문 접수(Operation API), 택배사 회수 접수(Order), 검수 상태 관리(Tracking)를 각각 다른 MSA에서 동시에 개발하도록 티켓을 분배했다. 이렇게 하면 소스 코드 컨플릭트가 발생하지 않으며, 독립적인 배포와 모니터링이 가능해진다.
배포 및 기술 스택 구성
MSA 구조를 통해 카나리 배포와 유사한 선제 배포가 가능해졌다. 최종 전체 배포 전에 특정 MSA만 먼저 배포하여 문제를 사전에 차단하고, 라이브러리의 카나리 버전업 테스트에도 활용된다. 기술 스택은 서비스 특성에 따라 Spring MVC와 Spring WebFlux를 혼용하여 구성했으며, 아키텍처는 특정 시점에 일괄 전환되지 않고 팀 내 공통 개념으로 점진적으로 정착되었다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.