境界づけられたコンテキスト間の契約
誰が契約を決定するのは、コンテキスト間の関係性に依る
2 つのコンテキストがなんらかの共有のドメイン設計を共有しているため、関係するチームが協力しなければならない場合
e.g. 発送コンテキストと受注コンテキストが発送先住所に対して同じ設計を使用しなければいけない場合
受注コンテキストは住所を受け入れて検証し、発送コンテキストは同じ住所を使用して荷物を発送する
ドメインイベント または DTO の定義を変更する場合、影響を受ける他のコンテキストの所有者と協議してから行う必要がある 下流のコンテキストが上流のコンテキストに提供して欲しい契約を定義している場合
上流のコンテキストが契約上の義務を果たす限り、2 つのドメインは独立して発展できる
e.g. 請求書作成コンテキストが契約を定義し、受注コンテキストはその情報のみを提供する
下流のコンテキストは上流のコンテキストが提供する契約を受け入れる場合
コンシューマ駆動契約の逆
e.g. 製品カタログによって定義された契約を受注コンテキストが受け入れ、それをそのまま使用する
腐敗防止層(ACL)
外部のシステムとコミュニケーションを取る際に、利用可能なインタフェースがドメインモデルと全く一致しないことが多々ある
このとき、インタラクションやデータを、境界づけられたコンテキスト内での使用に適したものに変換する必要がある
https://scrapbox.io/files/669082dbc271b4001cfb449e.png
主な責務は、上流のコンテキストで使用される言語と下流のコンテキストで使用される言語間の翻訳
https://scrapbox.io/files/66908921e316bb001d293297.png