피드로 돌아가기
10년 된 레거시를 현대화하다 - Part.1: 도메인 분리의 첫걸음
올리브영 테크블로그올리브영 테크블로그
Backend

10년 된 레거시를 현대화하다 - Part.1: 도메인 분리의 첫걸음

올리브영이 10년 된 모놀리식 백오피스(올리브원)에서 매장 도메인을 분리하기 위해 이벤트 스토밍과 바운디드 컨텍스트 식별로 비즈니스 로직 중복 제거

2025년 1월 24일9intermediate

Context

올리브원이라는 단일 백오피스 플랫폼에 매장, 발주/입고, 재고, 상품, 쿠폰, 포인트 등 다양한 도메인이 혼재되어 있었습니다. 2021년 이후 개발 조직이 7명에서 140명 이상으로 급증하면서 각 스쿼드가 매장 테이블을 직접 조회하는 상황이 발생했습니다. 예를 들어 설날 같은 공휴일 영업시간 정책이 한 스쿼드에서만 반영되면 사용자가 잘못된 영업 여부 정보를 받는 문제가 발생했습니다.

Technical Solution

  • 매장 도메인과 다른 도메인의 경계를 식별하기 위해 AWS Korea 퍼실레이터와 함께 이벤트 스토밍 워크숍 진행
  • 레거시 올리브원을 개발했던 PO와 개발자를 포함해 매장 도메인에 대한 바운디드 컨텍스트 도출
  • 매장 바운디드 컨텍스트를 독립적인 매장 서비스로 분리하여 매장 정보 제공 API의 단일 소유권 확립
  • 상품 정보가 컨텍스트에 따라 다르게 해석됨을 인식하고(상품 메타 vs 매장 취급상품 vs POG), 충돌 방지 계층(Anti-Corruption Layer)으로 매장 컨텍스트와 상품 컨텍스트 간 도메인 모델 변환
  • 설계 단계에서 컨텍스트 매핑 종류를 정의하여 각 경계 간 협력 방식 수립

Key Takeaway

도메인 주도 설계의 전략적 설계 단계에서 충분한 시간을 투자하면 구현 단계에서 설계 변경으로 인한 비용을 크게 절감할 수 있습니다. 특히 이벤트 스토밍을 통한 도메인 전문가와의 협력과 바운디드 컨텍스트 식별이 모놀리식 시스템 분리의 핵심입니다.


레거시 모놀리식 시스템을 도메인별로 분리할 계획이 있는 팀에서는 구현 전에 이벤트 스토밍 워크숍을 통해 각 도메인의 바운디드 컨텍스트를 명확히 식별하고, 컨텍스트 간 협력 패턴(소비자-공급자, 충돌 방지 계층 등)을 미리 정의하면 마이그레이션 단계에서의 재작업을 최소화할 수 있습니다.

원문 읽기
10년 된 레거시를 현대화하다 - Part.1: 도메인 분리의 첫걸음 | Devpick