境界づけられたコンテキストのコミュニケーション
https://scrapbox.io/files/66907c4afb1220001d5268e2.png
人の顔に見える radish-miyazaki.icon
これにより、上流コンポーネント(Order-Taking)と下流コンポーネント(Shipping)は互いを意識せず、ドメインイベントを通じてコミュニケーションを取っている
自律的なコンポーネントを実現するには、このような 疎結合 が重要 具体的にどのようにドメインイベントを送信するかは、選択するアーキテクチャによって異なる
キューだろうが、関数呼び出しだろうが、コンポーネントが疎結合になりさえすれば OK
イベント(OrderPlaced)をコマンド(ShipOrder)に変換するハンドラ
下流のコンテキストの一部であっても良い
境界付けられたコンテキスト間のデータ転送
コンテキスト間のコミュニケーションに使用されるイベントは、下流のコンポーネントがイベントを処理するために必要な情報をすべて持っている
渡されるデータオブジェクトは、境界付けられたコンテキスト内で定義されたオブジェクト(ドメインオブジェクト)と似ている 同じではなく、コンテキスト間のインフラストラクチャの一部としてシリアライズされ共有されるように設計されている 上流コンテキストの境界では、ドメインオブジェクトは DTO に変換され、DTO は JSON や XML にシリアライズされる
https://scrapbox.io/files/669081c9e18ed9001c349f2c.png
下流コンテキストでは逆向き
https://scrapbox.io/files/66908228c271b4001cfb3b9a.png
信頼の境界線と検証
境界づけられたコンテキストの内側にあるものは信頼され有効だが、外側にあるものは信頼されていない
ワークフローの最初と最後に「ゲート」を追加する
https://scrapbox.io/files/669082dbc271b4001cfb449e.png
入力ゲート: 入力がドメインモデルの制約に適合しているか常にチェック
出力ゲート: 境界づけられたコンテキストの外にプライベートな情報が漏れないようにする
コンテキスト間の偶発的な結合を避ける
セキュリティのため