「SOA 導入の成否をわける条件は何か~導入のポイントとアーキテクチャの壁(前編)」はこちら
アーキテクチャとしてのSOA
SOA の“A” は、アーキテクチャの略。アーキテクチャとは何を意味するかについては、色々な人が色々なことを言っている(注2)。
南波幸雄『企業情報システムアーキテクチャ:第2 章 アーキテクチャ』翔泳社, 2009.
ここでは、「情報システムを意味のある構成単位に分割し、構成要素間および構成要素と環境との間の関係を規定し、意図した目的を実現するための情報システムとして統合するための基本構造を統括する原理および設計思想」と定義する。このように考えると、SOAの場合はアーキテクチャそのものというよりは、アーキテクチャの1つの実現形態としての「概念」だと考えられる。
SOAはソフトウェアトポロジーだと述べたが、アプリケーションの論理的な機能配置であるアプリケーションパーティショニングの観点からは、2 層のクライアント・サーバー型と同一の構成となる(図5)。
2層クライアント・サーバー型におけるサーバーロジック層とデータベース層が、サービスとしてカプセル化される。そして、クライアント側のプレゼンテーション層とクライアントロジック層が、サービスコンシューマとしてプレゼンテーションを受け持つフロント層と、必要とするプロセスを業務の順序に応じて呼び出し、フロー制御するワークフロー層として構成される。
SOAは、サービスコンシューマとサービスプロバイダが、インターフェイスを介してメッセージを交換することによりアプリケーション機能を実現できるようにしたものである。サービスは、アプリケーション機能を適当な粒度で独立性の高い状態で切り出したものである。
サービスコンシューマとサービスとの接続に、必要に応じてSOA基盤を介在させる。SOA基盤は共通機能として、サービスコンシューマとサービスプロバイダとの独立性を維持させる役割も持つ。
2 層クライアント・サーバーとの相違点は、アクセスする単位と水平分散機能とが組み合わさっているかどうかである。前者の場合のアクセス単位は、個別の命令(メッセージ)となっている。SOAの場合は、サービスとして定義されたオブジェクトの集合体に対して、サービスコンシューマからの標準化されたメッセージによるアクセスである。
水平分散処理の観点からは、SOAで定義されたサービスは標準化メッセージの要求を満たす限り、同一のアプリケーションの枠外でも使用することができる。アーキテクチャ的には、SOA は以上の特性を備えた、分散処理システムの1 つの形態であると言えよう。
SOA の利用では、サービスコンシューマとサービスプロバイダをつなぐメッセージの役割が重要になる。特に両者の想定するデータモデルが整合していないときは、媒介する標準メッセージが調整をしなければならない。これはANSI/SPARCの3 階層スキーマにおいて、サービスコンシューマを外部スキーマ、サービスプロバイダを内部スキーマと考えれば、概念スキーマの役割に相当する。