하나의 도메인 모델과 그 용어가 일관된 의미를 갖는 경계. 도메인 주도 설계 (DDD)에서 가장 중요한 전략적 개념으로 꼽힌다.
- 같은 "사용자"도 결제 쪽에서는 결제 수단과 청구지를 가진 고객이고, 마케팅 쪽에서는 관심사와 수신 동의를 가진 대상이며, 배송 쪽에서는 주소와 연락처다. 하나의 거대한 User 모델로 합치려 하면 모든 쪽의 요구가 뒤섞인다
- 그래서 컨텍스트마다 자기 모델을 따로 두고, 경계를 넘을 때 번역한다. 외부 모델이 내부로 새어 들지 않게 변환 계층을 두는 것은 어댑터 패턴과 비슷하다
- 유비쿼터스 언어(Ubiquitous Language)는 컨텍스트 안에서만 유일하다. 같은 단어가 컨텍스트마다 다른 뜻이어도 괜찮다
서비스 경계와의 관계
바운디드 컨텍스트는 마이크로서비스(Microservices)를 나누는 좋은 기준이 된다. 팀 경계까지 맞추면 콘웨이의 법칙이 오히려 도움이 된다. 다만 처음부터 서비스로 쪼갤 필요는 없다. 한 저장소 안에서 모듈 경계로 먼저 지키다가 필요할 때 떼어 내는 편이 안전하다(골의 법칙, 모노레포).
컨텍스트 사이에서 데이터를 주고받으면 즉시 일관성을 보장하기 어려워 최종 일관성(Eventual Consistency)을 받아들이게 되는 경우가 많다. 업스트림·다운스트림 관계는 업스트림과 다운스트림 참고.