큰 시스템을 여러 개의 작은 컨텍스트로 나누어 각 컨텍스트 내에서 특정한 비즈니스 규칙과 데이터 모델이 적용되는 것을 의미한다.
각 컨텍스트는 독립적으로 설계되고 구현되며, 서로 다른 컨텍스트간에는 인터페이스를 통해 상호작용한다.
ex. 주문 처리 도메인, 회원 관리 도메인
"무엇을 하는 영역인가?"에 대한 개념적 단위
ex. 주문 처리 도메인이라는 같은 도메인이 있어도..
Order Management
: 주문 생성, 주문 상태 변경
Order Payment
: 주문 결제 및 결제 상태 관리
"어떻게 나눌 것인가, 어디까지를 하나의 경계로 볼 것인가?"에 대한 실체적 설계 단위
쉽게 비유하자면 도메인 = "의료", 바운디드 컨텍스트 = "내과", "소아과" 등
Order
가 Product
에 의존, Product
가 User
를 호출하는 식의 순환 구조)Order
-> Product
, 가격 확인 API 호출장점 : 실시간 데이터 조회 가능
단점 : 호출 서비스 장애 시 영향 받음
Order
완료 이벤트 발생 -> Payment
와 Inventory
서비스 비동기 처리장점 : 서비스 간 결합도가 낮고, 장애 전파가 없음
단점 : Eventual Consistency 보장, 설계 복잡성 증가
(* Eventual Consistency: 분산 시스템이나 데이터베이스에서 데이터의 일관성을 유지하는 방법)
조직 구조
업무 용어와 의미 차이
데이터 일관성 요구 수준
분산 트랜잭션 문제
2PC
활용이나 SAGA
패턴 활용이벤트 기반으로 비동기 상태 동기화
OrderInventory
이벤트 -> Inventory
차감