Context Mapping Patterns

2025-08-03

Context Mapping은 서로 다른 Bounded Context 간의 관계를 정의하는 방법이다.

https://github.com/ddd-crew/context-mapping 레포지토리에서 Context Mapping의 여러 전략을 소개한다.

Open Host Service

특정 Bounded Context(업스트림)가 다른 Bounded Context(다운스트림)에게 기능을 표준화하여 제공하는 방식

  • 다수의 다운스트림 Bounded Context가 존재할 때

Conformist

다운스트림 Bounded Context가 업스트림 Bounded Context에 강하게 의존하여 모델을 그대로 사용하는 방식

ACL (Anti-Corruption Layer)

업스트림 Bounded Context의 복잡한 모델을 다운스트림 Bounded Context에 맞게 변환시켜주는 다운스트림 앞단 레이어

  • Conformist 방식에서는 업스트림의 복잡성이 그대로 다운스트림에 전달되는데 ACL을 사용하면 복잡성 전파를 막을 수 있다.

Shared Kernal

여러 Bounded Context가 비즈니스 모델의 스키마를 공유하는 방식

  • 결합도가 높은 방식으로 최소의 Bounded Context로 유지하는 것이 좋다.

Partnership

여러 Bounded Context가 함께 도메인 모델을 개발하는 방식

  • 결합도가 높아 함께 변경되어야하는 Bounded Context일 경우 유리하다.

Customer / Supplier Development

다운스트림의 Bounded Context의 요구사항이 업스트림 Bounded Context 개발 과정에 반영되는 방식

Published Language

Bounded Context 간의 통신을 위해 Published Language(JSON, XML, OpenAPI, 프로토콜 등)를 사용하는 방식

Separate Ways

두 Bounded Context의 상호작용이 필요 없어 독립적으로 분리해서 개발하는 방식

Big Ball Of Mud

Bounded Context 간의 경계가 모호하고, 로직이 뒤죽박죽 섞여서 아무도 전체 시스템을 이해하거나 수정하기 어려워지는 안티 패턴


https://github.com/ddd-crew/context-mapping