코드를 그룹화할 위치와 그 이유에 대해 다양한 절충한을 명확히 하는 한 가지 방법궁극적으로 시스템에서 일부 결합은 피할 수 없으며 결합의 양을 줄이길 원한다.
도메인 결합
통과 결합
데이터가 필요하다는 이유로 다른 마이크로서비스에 데이터를 전달하는 상황
결합을 구현하는데 가장 많은 문제를 유발하는 형태 중 하나

하위에서 데이터를 변경하면 상위에서 더 큰 변경을 일으킬 수 있다는 문제점
- 배송에서 데이터 변경 시 주문 처리기, 창고 변경 필요

중간자를 우회하지 않고 직접 통신
도메인 결합이 늘어나지만 트레이드 오프를 생각
그러나 배송 서비스를 사용해 패키지를 발송하기 전에 창고 서비스에 재고를 예약해야 하고 배송이 완료된 후 재고를 업데이트 해야한다.
- 복잡성 증가

배송 마이크로서비스가 배송 목록을 원한다는 사실을 숨기기 위해 창고 서비스가 계약의 일부로 필요한 정보를 받은 다음 로컬에서 배송 목록을 만든다.
초기에는 강한 결합이 있었지만 현재는 더 쉬운 배포 단계 진행 가능
공통 결합
내용 결합
상위 서비스가 하위 서비스의 내부까지 도달해 서비스 내부 상태 변경하는 상황
소유권 경계선이 명확하지 않아 개발자가 시스템을 변경하기 더 어렵다.

주문 처리기, 창고 모두 주문 서비스의 내부 데이터를 액세스하는 예시
보편 언어
애그리거트
실제 도메인 개념을 표현하는 객체들의 집합
하나의 애그리거트는 하나의 마이크로서비스에서 관리
- 상태 변경 시 비정상적 상태 전환이 불가능하도록 거절 가능

서로 다른 마이크로서비스의 두 애그리거트 간 관계가 구현되는 방식의 예시
경계 콘텍스트
복잡성을 숨기는 비즈니스 도메인 내부의 명시적 경계
은닉 모델
공유 모델

크고 대분화된 콘텍스트 관점에서 분리하고 내부 콘텍스트에 따라 세분화한다.
이벤트 스토밍
개인정보 및 보안 문제로 인해 데이터를 분리해야하는 경우가 많다.
