SOAは,アプリケーションをコンポーネント化する手法である。Part1では,DCOMやCORBAといった分散オブジェクトとの違いを明らかにし,「SOAの“サービス”とは何か」を解説する。

 SOA(Service Oriented Architecture:サービス指向アーキテクチャ)とは,アプリケーションあるいはその機能の一部を共通の“サービス”としてコンポーネント化(部品化)し,それらサービスを必要に応じて組み合わせることで,新たなシステムを構築しようという設計手法である(図1)。

図1●SOAに基づくアプリケーション開発のイメージ
図1●SOAに基づくアプリケーション開発のイメージ
アプリケーションの機能を独立したサービスとして部品化し,それらを必要に応じて組み合わせることで新たなアプリケーションを構築する

 SOAという言葉が広く認識されるようになったのは2004年のことだ。しかし,SOAの概念自体は,決して新しいものではなく,それ以前から存在していた。SOAの考え方は,分散オブジェクト技術の流れをくむもので,2004年以前からマイクロソフトのDCOM(Distributed Component Object Model)や標準化団体であるOMG(Object Management Group)が策定したCORBA(Common Object Request Broker Architecture)など,現在のSOAのコンセプトと同等のことを実現しようという試みがなされてきた。

 しかし,これらの技術は残念ながら普及したとは言いがたい。例えば,DCOMはWindows同士でしか通信ができず,汎用性に欠けた。一方,CORBAはプラットフォームに制約はないものの,仕様が複雑だったので,実装が難しく,結果的にCORBAに準拠したミドルウエアは一部のベンダーでしか開発されなかった。また,異なるCORBA実装間の相互運用性も不十分であった。

 これらに対して,現在,SOAを実現する技術として最も有望視されているWebサービスはXMLやHTTPというシンプルで一般的な仕様をベースとしている。そのため,実装が容易で,ベンダー各社が支持を示したことによって,相互接続性の問題もほぼ解決している点で違いがある(図2)。

図2●従来のSOA,現在~これからのSOA
図2●従来のSOA,現在~これからのSOA
プラットフォームに依存,仕様が複雑といった理由から普及に至らなかったDCOMやCORBAと異なり,Webサービスを実装技術とする現在のSOAは汎用的な仕様をベースとし,異なるベンダー間の互換性も確保されている

SOAにおける“サービス”とは何か?

 ここで,「サービス指向の“サービス”とは何か」について考えてみよう。SOAにおけるサービスとは,アプリケーションの処理単位を論理的に記述したもので,以下の特徴を備える(図3)。

図3●SOAにおけるサービス
図3●SOAにおけるサービス
サービスとは,明確に定義されたインタフェースを持つ,独立して稼働するソフトウエア・コンポーネントである。サービス・コンシューマは,このインタフェースに「プロキシ(代理)」と呼ばれる仕組みを通してアクセスし,サービスを呼び出す。サービスの実装方法は問わない
  • 外部から呼び出せるように明確に定義されたインタフェース(入力項目,処理内容,出力項目が明確)を備える
  • インタフェースを介して,ネットワーク上のどこからでもアクセスできる
  • 一つのサービス内で,あるまとまった処理が完結している
  • 個々のサービスは独立して稼働する
  • サービスの実装方法(Javaか.NETかなど)や稼働しているプラットフォーム(WindowsかUnixかなど)は問わない