オープンホストサービス / 公表された言語
定義
**オープンホストサービス(Open Host Service, OHS)**とは、自コンテキストの機能を複数の下流コンテキストに対して提供するためのプロトコル(API)を定義し公開するパターン。
**公表された言語(Published Language, PL)**とは、OHSで使われる、文書化された共有スキーマ。JSON Schema、OpenAPI、Protocol Buffers などが該当する。
上流コンテキスト(Identityサービス)
↓ Open Host Service(REST API / gRPC)
↓ Published Language(OpenAPI仕様)
下流コンテキストA(注文サービス)
下流コンテキストB(通知サービス)
下流コンテキストC(分析サービス)
なぜ重要か
複数の下流コンテキストがそれぞれ独自の統合方式を求めると、上流コンテキストはすべての要求に個別対応しなければならない。
OHS+PLを定義することで:
- 上流は単一のプロトコルを維持するだけでよい
- 下流は明文化されたスキーマに従って統合でき、不確実性が減る
- スキーマのバージョン管理が明示的になり、後方互換性を管理しやすい
適用場面
- 複数チームが一つのサービスを消費するとき
- 外部パートナーや第三者に統合ポイントを提供するとき
- 内部APIを「契約(Contract)」として扱いたいとき
カスタマー/サプライヤーとの違い
| オープンホストサービス | カスタマー/サプライヤー | |
|---|---|---|
| 下流数 | 複数(不特定) | 1対1 |
| 交渉 | 下流は受け入れるかACLを置くかを選ぶ | 下流の要求を上流が計画に組み込む |
| 公開度 | 広く公開 | チーム間協議 |
関連概念
- → コンテキストマップ
- → 腐敗防止層(ACL)
出典
実践ドメイン駆動設計(Vaughn Vernon)第3章