올영매장, MSA 환경에서 데이터 연동 전략: 캐시와 이벤트의 절묘한 조화
올리브영의 O2O 서비스인 '올영매장'은 MSA 환경에서 매장 관련 데이터 연동을 위해 다양한 스쿼드(Squad)의 데이터를 통합해야 함
프로모션 데이터는 캐시(Redis)를 활용하여, 픽업 주문 데이터는 이벤트(Kafka)와 캐시(Redis)를 결합하여 데이터 연동
데이터의 사용처, 변경 특성, 라이프사이클(Lifecycle)을 고려하여 최적의 연동 방식을 선택, 서버 부하 감소 및 실시간 데이터 제공
데이터 소비자가 연동 설계를 주도하여 MSA 환경에서의 책임과 자율성을 확보하고, 비즈니스 요구사항에 맞는 유연한 시스템 구축
MSA 환경에서의 데이터 연동 과제
올리브영의 '올영매장'은 MSA(Microservice Architecture) 환경에서 스토어, 쿠폰, 주문결제 등 여러 스쿼드(Squad)의 데이터를 통합해야 하는 과제에 직면했다. 각 스쿼드는 상이한 환경, 서버, 데이터양을 가지며 개별적으로 데이터를 관리한다.
데이터 격리 아키텍처(Data Isolation Architecture): 각 서비스가 독립적으로 운영되면서 데이터 일관성(Data Consistency) 유지가 어려워짐
API 호출 빈도 증가: 단순 API 호출은 불필요한 트래픽을 유발하고, 성능 저하의 원인이 됨
데이터 정합성 문제: 데이터 변경 사항을 실시간으로 반영하기 어려움
이러한 문제 해결을 위해 데이터 특성을 고려한 연동 전략이 필요했다.
캐시(Redis)를 활용한 프로모션 데이터 연동
오프라인 프로모션 데이터는 낮은 변경 빈도(Low Change)와 높은 조회 빈도(High Read) 특성을 가진다. 올리브영은 이러한 특성을 고려하여 캐시(Redis)를 활용하는 전략을 채택했다.
Cache-Aside 패턴: 애플리케이션이 캐시를 직접 관리하며, 캐시 미스(Cache Miss) 시 원본 데이터베이스에서 데이터를 가져와 캐시에 저장
갱신 시 API 호출: 갱신이 필요한 시점에만 API를 호출하여 Redis 캐시를 업데이트
주기적 배치: 종료된 프로모션 데이터를 캐시에서 자동 삭제하여 데이터 정확성 유지
이러한 방식을 통해 서버 부하를 줄이고, 실시간에 가까운 응답 속도를 제공한다.
이벤트(Kafka)와 캐시(Redis)를 결합한 픽업 주문 데이터 연동
픽업 주문 데이터는 빈번한 상태 변경(High Change)과 무거운 데이터(Heavy Data) 특성을 가진다. 올리브영은 실시간성 확보와 시스템 부하 절감을 위해 이벤트 주도 방식과 API 호출을 결합한 하이브리드 전략을 사용했다.
이벤트 알림(Event Notification) 패턴: Kafka를 통해 주문 상태 변경 알림을 받고, Redis에 주문 관련 Key를 캐싱
선택적 API 호출: Redis에 Key가 존재하는 경우에만 API를 호출하여 상세 데이터를 조회
트래픽 최적화: Redis Key 필터링을 통해 불필요한 API 호출을 방지
이러한 방식으로 실시간성을 확보하고, 데이터 제공 서버의 부하를 최소화했다.
데이터 특성에 따른 연동 방식 선택의 중요성
올리브영은 데이터의 사용처, 변경 빈도, 라이프사이클(Lifecycle)을 분석하여 각 데이터에 적합한 연동 방식을 선택했다.
프로모션 데이터: 캐시(Redis)를 활용하여 조회 성능(Read Performance) 극대화
픽업 주문 데이터: 이벤트(Kafka)와 캐시(Redis)를 결합하여 실시간성(Real-Time) 확보
데이터 중심 설계: 데이터 특성을 먼저 분석하고, 그에 맞는 연동 방식을 선택하는 것이 중요
결론적으로, 데이터 특성을 고려한 연동 전략은 서버 부하를 줄이고, 고객에게 빠르고 정확한 정보를 제공하는 데 기여한다.
데이터 소비자가 주도하는 연동 설계
올리브영은 데이터 소비자가 연동 방식 결정에 주도적으로 참여하여 MSA 환경에서의 책임과 자율성을 확보했다. 이는 비즈니스 요구사항에 유연하게 대응하고, 팀 간의 협업을 강화하는 데 기여한다.
Stream-Aligned Team: 비즈니스 흐름에 맞춰 팀을 구성하고, 자율적인 의사결정을 지원
데이터 이해: 데이터를 소비하는 팀이 데이터의 특성을 가장 잘 이해하고, 최적의 연동 방식을 설계
MSA 성공 요인: 특정 기술보다 데이터의 본질을 꿰뚫어 보는 관점이 MSA 환경에서 성공적인 데이터 연동을 위한 핵심
결과적으로, 데이터 소비자가 주도하는 연동 설계는 MSA 환경에서 유연하고 효율적인 시스템 구축을 가능하게 한다.