サービスとはビジネス機能を備えた論理的構造であり,内部的にはその責務を果たす,複数の自律的コンポーネントないしマイクロサービスで構成される - Jeppe Cramon氏は,ビジネス機能とそれを取り込むコンテキストにおけるサービス構築に関しての,自らの見解を明確にした前シリーズのブログ記事に引き続いて,自律的なサービスという観点から見たSOAとマイクロサービスの議論の中で,このような定義をしている。
大規模システムを対象とするデンマークのシステムコンストラクタであるCramon氏はかつて,サービスはビジネス機能に関連して開発されるべきだ,と主張していた。しかし現在では,サービスはビジネス機能と整合性を持つべきだ,と主張の表現を変えた上で,Udi Dahan氏の主張を参照しながら,サービスとは唯一のサービスが所有するすべてのデータないしルールを備えた,特定のビジネス機能に関する技術的機関であるべきだ,と主張している。
Cramon氏は自身の見解を,サービスを定義する4つのルールに要約している。
- そのビジネス機能に対する技術的機関か。
- 必要とされるすべての場所において,このビジネス機能をサポートするデータとルールをすべて所有しているか。
- その機能に関するただ一つの真のソースを形成すること。
- 自律性とカプセル化を維持可能であること。
これら定義の結果として,サービスは,そのデータおよびロジックが必要とされるすべての場所で利用可能なようにデプロイされる必要がある。Cramon氏にとってこれは,サービスが論理的構造であることを暗示すると同時に,Philippe Krutchen氏,およびシステムの論理的観点を物理的観点から分離した氏の4+1 アーキテクチャビューモデルを示している。これら論理サービスに関連するアプリケーションの構築を可能にするためには,同じシステムあるいはアプリケーション,同じサーバ上に,複数のサービスをデプロイできなくてはならない。
サービスが論理的構成体であることに関してCramon氏は,サービスの構築には,その機能的責務を分担する自律的なコンポーネントないしマイクロサービスを使用するべきであり,そのためにはマイクロサービスを,論理的サービスの実装詳細とすることが効果的だ,と提案している。サービス内の各マイクロサービスは,それ自身のドメインモデルを持っている。このドメインから他のマイクロサービスに対してイベントを公開することにより,外部のアクタがHTTPなどの手段を使って対話するための,ひとつないし複数のエンドポイントの参照と公開を実現している。エンドポイントはプロセス内のインターフェースとして,リモート呼び出しを必要とせずに使用することも可能である。
マイクロサービスをそのプロセス内にデプロイしなければならないとする理由はない,という点を指摘して,Cramon氏は記事を終えている。 理屈の上では個別にデプロイすることも可能だが,それが理に適う場合にのみ考慮すべきことだ。
Dahan氏とCramon氏はいずれも,昨年11月のMicroservices Conferenceでプレゼンテーションを行っている。