サービス指向アーキテクチャ(SOA)とは何か?
サービス指向アーキテクチャ(SOA)は、標準的なネットワークプロトコル越しにビジネス能力を公開する再利用可能なサービスからシステムを構築します。
SOAはマイクロサービスに先行し、その核心的な直感を共有します。すなわち、システムをよく定義された契約を持つサービスに分解することです。古典的なSOAは、しばしば中央の統合層を経由する、企業全体での再利用を強調しました。マイクロサービスは、より小さなサービスとより少ない中央の配管で行われたSOAとして説明されることがあります。
定義となる考え方
SOAでは、多くのアプリケーションが再利用できるように、能力が正式な契約を持つサービスとして公開されます。重点はアプリケーションごとのコードではなく、組織全体にわたる共有された再利用可能なサービスに置かれます。
SOA対マイクロサービス
どちらもサービスに分解しますが、古典的なSOAはしばしば重量級のenterprise service busと粗く共有されたサービスに依存したのに対し、マイクロサービスはスマートなendpointとdumb pipeを備えた、小さく独立してデプロイ可能なサービスを好みます。マイクロサービスは、より軽量で分散化された子孫と見なすことができます。
共通の構成要素
- 入力、出力、振る舞いを定義するサービス契約。
- consumerがサービスを発見できるようにするregistry。
- ルーティングと変換のための統合層またはbus。
- チーム間の versioning と再利用を管理するガバナンス。
pipelineにとっての意味
各サービスは独自のbuildとdeployを必要とし、加えて、変更が共有サービスに依存する多くのconsumerを壊さないようにするためのコントラクト検証が必要です。再利用は互換性を壊すあらゆる変更の重みを高め、それがpipelineで強制されるコントラクトテストを不可欠なものにします。
ガバナンスのオーバーヘッド
SOAが約束する再利用は、versioningと互換性がガバナンスされている場合にのみ機能します。そのガバナンスは、より緩いマイクロサービス構成ならスキップするかもしれない、必須のpipeline gate、コントラクトregistry、承認ステップとしてしばしば現れます。
多くのサービスpipelineの実行
マイクロサービスと同様に、SOA群は多くの並行buildを意味します。warmな容量を備えたマネージドrunner(Latchkeyが提供するような)は、繁忙期にこれらの並列サービスpipelineが列に積み重なるのを防ぎます。
重要なポイント
- SOAは、再利用可能で契約によって定義されたサービスからシステムを構成します。
- より多くの中央統合とガバナンスを備えた、マイクロサービスの概念的な祖先です。
- 共有サービスは互換性を壊す変更のコストを高めるため、コントラクトテストがより重要になります。