リレーションシップ
リレーションシップは、アーキテクチャ要素がどのように通信、依存、または相互作用するかを示します。アーキテクチャドキュメントの重要な部分です。
リレーションシップの作成
ドラッグ&ドロップ
- ソース要素にカーソルを合わせる
- 接続ポイント(小さな円)からクリック&ドラッグ
- ターゲット要素にドロップ
- リレーションシップが自動的に作成される
コンテキストメニュー
- ソース要素を右クリック
- 「リレーションシップを作成」を選択
- ターゲット要素をクリック
リレーションシップのプロパティ
ラベル
ラベルはリレーションシップが何を表すかを説明します:
- 「注文を送信する」
- 「データを読み取る」
- 「認証に使用する」
- 「デプロイする」
ベストプラクティス:
- 能動態を使用
- 何が流れるかを具体的に
- 簡潔に
技術
オプションで技術やプロトコルを指定:
- 「REST/HTTPS」
- 「gRPC」
- 「AMQP」
- 「SQL/TCP」
- 「WebSocket」
方向
リレーションシップには矢印で示される方向があります:
- 単方向: 一方向の通信(最も一般的)
- 双方向: 双方向の通信
リレーションシップのスタイリング
線のスタイル
- 実線: 直接的な依存関係または通信
- 破線: オプションまたは非同期通信
色
色でリレーションシップを分類:
- 青: データフロー
- 緑: 正常系パス
- 赤: エラーハンドリング
- グレー: オプション
曲線 vs 直線
- 曲線: 複雑なダイアグラムに適し、重なりを回避
- 直線: シンプルなダイアグラムにすっきり
一般的なパターン
リクエスト-レスポンス
Web App --"APIコールを実行 [REST/HTTPS]"--> APIサーバー
イベント駆動
Order Service --"イベントを発行 [AMQP]"--> メッセージキュー
Notification Service <--"イベントをサブスクライブ [AMQP]"-- メッセージキュー
データベースアクセス
APIサーバー --"データの読み書き [SQL/TCP]"--> データベース
外部API
Payment Service --"支払い処理 [REST/HTTPS]"--> Stripe API
レベル間のリレーションシップ
コンポーネントレベルで表示する際、リレーションシップは異なるコンテナ間にまたがることができます:
- コンポーネントはシステムの他の部分のコンテナに接続可能
- 現在のビューを離れずに全体像を把握するのに役立つ
ヒント
接続しすぎない
すべての可能なリレーションシップを表示する必要はありません。以下に集中:
- 主要なデータフロー
- 重要な依存関係
- 自明でない接続
関連するリレーションシップのグループ化
複数の要素が同じ方法で通信する場合:
- 仲介者(APIゲートウェイ、メッセージキュー)の使用を検討
- オーバーレイでグループ化
ラベルを読みやすく保つ
- ラベルが重ならないように配置
- よりすっきりしたダイアグラムには短いラベル
- 詳細は代わりに要素の説明に追加