コンテキストマップ

IDDD本から理解するドメイン駆動設計

コンテキストマップ

「境界づけられたコンテキスト」間の俯瞰図

認証アクセス

コンテキスト

アジャイルプロジェクト管理

コンテキスト

コラボレーション

コンテキスト

U

U

U

D

D

D

U:上流

影響を与える側

D:

影響を受ける側

上流を上に配置する

コンテキストマップを描く理由

システム間の関係を適切に把握できる

他チームとのコミュニケーションの必要性を判断する材料

コンテキストマップを描くタイミング

早い段階から作成し、随時更新

チームメンバがアクセスできるところに置く

書き方

1. 複数のコンテキストをホワイトボードに書き出す

2. 境界づけられたコンテキストが適切に

分割されているか検討する

ユビキタス言語が最適になるように修正する

3. 境界づけられたコンテキストの関係性について

「組織パターン」と「統合パターン」を確認する

組織パターン...チーム間の関係を示す

統合パターン...チームとプログラムの連携方法を示す

パートナーシップ

組織パターン

両者の利害が一致しており、協力関係にある

計画から連携試験までを共同でマネージメント

インターフェイス部をともに検討する

別々の道

組織パターン

統合しない

お互いに関与しない

連携するメリットがない場合に両者に繋がりがないことを明確に宣言する

順応者

組織パターン

上流側が下流側の要望に応えない状態

順応者が腐敗防止層を用意して受け入れる

上流側Twitter, Facebook API

下流側API利用者

U

D

顧客/供給者

組織パターン

上流側が供給側、下流側が顧客

上流側が下流側のサポートを確約

上流側の成否が下流の成否に影響を大きく与える場合、

上流が下流に適切なサポートを行う。

U

D

共有カーネル

統合パターン

共有専用のドメインモデルを

ソースコードレベルで共有利用

共通で利用するドメインモデルは

ソースコードレベルで共有

共有カーネル

(共通コード)

巨大な泥団子

統合パターン

適切なサイズの「境界づけられたコンテキスト」分割を

諦め、一つの大きな塊として使用

自分たちの「境界づけられたコンテキスト」に

巨大な泥団子が侵食してこないように注意する

(既存のレガシーシステム等)

巨大な泥団子

システムA

システムC

システムB

システムD

システムF

システムE

公開ホストサービス

統合パターン

コンテキストにアクセスするためのサービス

公開ホストサービス

RESTやSOAP

U

D

D

公表された言語

統合パターン

コンテキスト内のモデルを示すための共通言語

公表された言語
(XMLやJSON等)

U

D

D

腐敗防止層

統合パターン

上流のドメインモデルの影響を受けないように

下流側で変換用のレイヤを用意

腐敗防止層

(上流概念を変換)

U

D

下流側のチームは上流側の機能を自コンテキストのドメインモデルに変換する

データを受信する側とデータを

送信する側双方に変換する

SaaSOvasion

コラボレーションの考えの中にユーザーと権限といったセキュリティの概念が混ざっている

コンテキストマップを用いた分析と発展

セキュリティサブドメイン「ユーザーと権限コンテキスト」の登場

分析

統合ポイント

コンテキスト間の接続部分

洗練

認証・アクセス

コンテキスト

コラボレーション

コンテキスト

アジャイル

プロジェクト管理

コンテキスト

ACL

ACL

ACL

OHS/PL

OHS/PL

U

U

U

D

D

OHS:公開ホストサービス (Open Host Service)

PL:公表された言語 (Published Language)

ACL:腐敗防止層 (Anti Coruption Layer)

コンテキストマップを用いた分析と発展

SaaSOvasion

コンテキストの統合方式例

他コンテキストに依存しない設計

認証・アクセス

コンテキスト

アジャイル

プロジェクト管理

コンテキスト

他のコンテキストにアクセスできない場合でも自分のコンテキストが正しく動作するように設計する

非同期

リアルタイム性より「結果整合性」を重視

メンバー同期

メンバーサービス

認証アクセス度通知アダプタ

メンバー変換

HTTPクライアント

ファサードの役割

通知リソース

タイマーイベント

メンバーをメンテナンス

メンバーを同期

取得

REST API 「/tenants/notifications」や「/tenants/notifications/${id}」で呼び出す

メンバーへ変換

メンバーを更新

アジャイルプロジェクト管理コンテキスト

アジャイルプロジェクト管理コンテキストが認証・アクセスコンテキストに汚染されないための腐敗防止層

認証アクセスコンテキストにおける「RESTの公開ホストサービス」と「XMLの公表された言語」

IDDD本から理解するドメイン駆動設計

By masapon

IDDD本から理解するドメイン駆動設計

  • 145