サービス指向アーキテクチャ
Service Oriented
独立したコンポーネントが特定の機能を提供するサービスとして実装される。
実行時にサービスを組み合わせ、システムの振る舞いを定義する。
サービスの利用者は、サービスの背後の仕組みを知らなくても、サービスを発見し使用できる状態が必要。
C&C構造に適用される。
要素
サービス。特定の機能を提供する単位。
独立してデプロイ可能。
明確に定義されたインタフェースをもつ。
サービスレジストリ。利用可能なサービスの一覧。サービスが他のサービスを見つけるために使う。
メッセージシステム。サービス間の通信方法。
SOAP、REST、gRPC、非同期メッセージングなど。GraphQLもあり?
関係
大体の場合は「呼び出す」。サービスAがサービスBを呼び出す。
非同期メッセージングがベースであれば「発行する(Publish)」「購読する(Subscribe)」になるかも。
規約
サービスは他のサービスの実装を知らない。
強み
相互運用性、再利用性、スケーラビリティを促進する。
研究が進んでおり、多くのサブパターンが存在する。
#TODO 具体的には?
弱み
可用性、信頼性、パフォーマンスを抑制する。
分散システム、分散計算に伴う複雑さ。
モノリスでは設計時に自明な問題が実行時の問題になる。