8주2일차_MSA_DDD설계_및_구현_실습
8주2일차_MSA_DDD설계_및_구현_실습
필기 내용
1.1 DDD의 핵심 개념
- 도메인(Domain): 비즈니스 문제 영역
- 모델(Model): 도메인을 반영한 개념적 구조
- 서브도메인(Subdomain): 도메인의 하위 개념
- 유비쿼터스 언어(Ubiquitous Language): 비즈니스와 개발자가 공유하는 공통 언어 (업무 용어를 사용)
1.3 마이크로서비스 아키텍처(MSA)와의 관계
- DDD의 바운디드 컨텍스트 개념이 MSA의 서비스 경계와 일치
- 독립적인 컨텍스트를 서비스로 나누어 확장성과 독립성을 보장
1.5 전략적 설계 (Strategic Design)
DDD에서는 전략적 설계(큰 그림)와 전술적 설계(세부 구조)를 함께 사용해야 합니다.
- 전략적 설계: 도메인의 경계를 정의하고 MSA와 같은 아키텍처 설계
- 전술적 설계: 객체 지향적으로 도메인 모델을 설계하여 비즈니스 로직을 코드에 반영
Examples:
- 전략적 설계 → “주문(Order), 결제(Payment), 배송(Shipping)”을 개별 컨텍스트로 분리
- 전술적 설계 →
Order,OrderItem,OrderRepository등의 도메인 모델을 설계
두 가지를 함께 활용하면 복잡한 비즈니스 로직을 효율적으로 관리 가능합니다.
1.5.1 Bounded Context
- 도메인 모델이 적용되는 경계를 명확하게 정의하는 개념
- 같은 개념(예: “Order”)이라도 바운디드 컨텍스트에 따라 의미가 다를 수 있음
- 각각의 컨텍스트는 독립적인 모델과 용어를 유지해야 함
1
2
3
4
5
예시: E-commerce 시스템의 Bounded Context
- User Context: 사용자 관리, 인증/인가
- Order Context: 주문 처리, 결제
- Product Context: 상품 관리, 재고
- Delivery Context: 배송 관리
1.5.2 Context Mapping
- 여러 개의 바운디드 컨텍스트가 어떻게 상호 작용하는지 나타냄
- 조직 간 협업 관계와 의존성을 이해하는 데 도움을 줌
1.6.3 Aggregate
- 관련된 Entity와 Value Object를 하나의 단위로 묶은 개념
- 데이터 일관성을 유지하기 위해 한 번에 한 aggregate 루트만 변경 가능
- 예:
Orderaggregate →Order(entity) +OrderItem(entity) +ShippingAddress(value object)- Order가 aggregate 루트이며, 주문 상태 변경을 관리
- OrderItem과 ShippingAddress는 Order를 통해서만 변경 가능
2. Event Storming을 활용한 e-commerce 도메인 설계
비즈니스 도메인을 분석하고 모델링하는 협업 기반 방식
도메인에서 발생하는 주요 이벤트(Event)를 나열합니다.
이벤트를 발생시키는 명령(Command)과 이를 처리하는 어그리게이트(Aggregate) 도출
- 예) 주문이 생성됨 이벤트 분석
3단계 : Actor(사용자 역할) 정의
각 이벤트를 실행하는 “주체(Actor)”를 명확히 식별
- E-commerce에서의 주요 Actor
4단계 : Aggregate 간 관계 설정
이벤트를 처리하는 도메인 객체(Aggregate) 간의 관계를 도출
- E-commerce에서의 주요 Aggregate 도출
Action Plan
수업 내용 필기 정리.
This post is licensed under CC BY 4.0 by the author.
