올리브영이 MSA 환경에서 흩어진 데이터를 연동하는 세 가지 기준

썸네일

올리브영 앱에서 가까운 매장을 찾으면, 매장별 재고, 행사 정보, 픽업 주문 현황이 한 화면에 펼쳐져요. 사용자 입장에서는 자연스러운 화면이지만, 이 데이터들은 각기 다른 스쿼드가 관리하고 있어요. 스토어 스쿼드의 오프라인 매장 정보, 쿠폰증정 스쿼드의 프로모션 정보, 주문결제 스쿼드의 픽업 주문 정보가 하나의 화면에 모여야 하죠. MSA 환경에서 이 흩어진 데이터를 어떻게 연동할 것인가가 핵심 과제였어요.

프로모션 데이터 연동

변경 빈도가 낮은 프로모션은 캐시, 변경이 잦은 픽업 주문은 이벤트로

데이터 연동 방식을 결정하는 기준은 세 가지예요. 사용처(Use Case), 변경 특성(Characteristic), 라이프사이클(Lifecycle)이죠. 이 세 관점이 캐시, 이벤트, API 직접 호출 중 어떤 방식을 선택할지 결정해요.

오프라인 프로모션 데이터는 행사 전에 미리 등록되고, 운영 중에는 자주 변경되지 않아요. 전형적인 Low Change 패턴이죠. Cache-Aside 패턴을 적용하되, 갱신이 필요한 시점에만 API를 호출해서 Redis에 캐싱하는 방식을 채택했어요. 반면 픽업 주문 데이터는 완전히 달랐어요. 빈번한 상태 변경이 일어나는 High Change 패턴이라 단순 캐싱만으로는 데이터 불일치 위험이 컸고, 무거운 데이터 특성상 API를 반복 호출하면 서버에 과도한 부하가 걸렸거든요.

Kafka 이벤트와 API 호출을 지능적으로 결합하는 하이브리드 전략

픽업 주문 데이터에는 이벤트 주도 방식과 API 호출을 결합하는 하이브리드 전략을 선택했어요. Kafka를 통해 상태 변경 이벤트를 실시간으로 수신하면서, 필요한 시점에만 API를 호출해서 최신 데이터를 보완하는 구조죠. 실시간성 확보와 시스템 부하 절감을 동시에 달성하기 위한 선택이었어요.

결국 "모든 데이터에 같은 전략을 적용하자"는 접근이 아니라, 데이터의 변경 빈도, 사용처, 유효 기간에 따라 가장 효율적인 방법을 골라야 한다는 게 핵심 교훈이에요. 불필요한 API 호출을 줄이면서도 고객에게는 빠르고 정확한 데이터를 제공하는 균형점을 찾은 셈이죠. Phase 1에서 서비스 재정의, Phase 2에서 UI/UX 리뉴얼, Phase 3에서 행사 및 프로모션 고도화까지 거친 올영매장의 진화 과정이 이 전략의 실전 검증 결과이기도 해요.