Goodpic.com
2003年11月05日

サービス・オリエンテッド・アーキテクチャ(SOA)とは何か?

WEBサービス、SOAP、RESTなどを調べる過程で、サービス・オリエンテッド・アーキテクチャ(SOA:Service Oriented Architecture)という言葉を使っている記事があったので、メモします。アーキテクチャの概念としてはセマンティックwebRESTと共通する部分が多いように思われます。

What is Service-Oriented Architecture?
by Hao He
webservicex.xml.com / September 30, 2003

Service Oriented Architecture (SOA). SOA is an architectural style whose goal is to achieve loose coupling among interacting software agents. A service is a unit of work done by a service provider to achieve desired end results for a service consumer. Both provider and consumer are roles played by software agents on behalf of their owners.

サービス・オリエンテッド・アーキテクチャ(SOA)とは、互いに協調動作するソフトウェア・エージェントが、自由に連結しやすいようなアーキテクチャ・スタイルを示します。サービスとは、サービス利用者(Service Consumer)が望む結果を実現するために、サービス提供者(Service Provider)が実行する一連の仕事の編成(Unit)という意味合いになります。サービス提供者と利用者は双方とも、ソフトウェア・エージェントの役割となり、ソフトウェア・エージェントがニーズを実現します。
より具体的な例としては、例えば家にあるCDプレイヤーは、CDを再生するというサービスを提供している。音楽を聴くというニーズを実現する方法は、CDウォークマンや高価なHiFiプレイヤーなど、様々な手段から選択することができるが、それぞれ異なるクオリティーを持っている。オブジェクト指向であるともいえるが、すなわち処理自体は隠蔽しつつ、外部にサービスを提供する。

以上のような基本的な概念を説明しつつ、実際にSOAアーキテクチャで、ソフトウェア・エージェント同士の自由な連結を実現するために重要な二つの必要事項を述べている。

1. A small set of simple and ubiquitous interfaces to all participating software agents. Only generic semantics are encoded at the interfaces. The interfaces should be universally available for all providers and consumers.

軽量、かつユビキタスなインターフェースを、すべてのソフトウェア・エージェントに提供する。インターフェースにはGeneric Semantics(総称的な意味)的なものだけがエンコードされる。インターフェースはすべてのサービス提供者と利用者に普遍的に提供される。

2. Descriptive messages constrained by an extensible schema delivered through the interfaces. No, or only minimal, system behavior is prescribed by messages. A schema limits the vocabulary and structure of messages. An extensible schema allows new versions of services to be introduced without breaking existing services.

記述可能なメッセージが、インターフェースを通じて、拡張可能なスキーマによって定義される。システムの挙動自体はメッセージによって記述されることがない、あるいは最小限であること。スキーマがメッセージのボキャブラリーと構造を規定する。すでに存在するサービスに影響を与えることなく、拡張スキーマによって新しいバージョンのサービスを実現する。


その他にもサービス・オリエンテッドであるためには幾つかのポイントとして、
・ メッセージは用途の記述であって、手続きのガイドではないこと。レストランのウェイターに料理方法を伝えるのではなく、食べたいものを伝えるのと同じ
・ スケーラビリティーのために、できるだけStatelessなサービスにすことが望ましい。
などを述べている。またSOAPとRESTにもふれ、document-centric SOAP web services はSOAであるがSOAP RPC Web ServicesはSOAではないと。SOAPはWSDLでインターフェースを記述することができる点がメリット。RESTに関してはHTTPという普及している方法を利用することで、シンプルにSOAを実現することができるとの記述でした。
サービス・オリエンテッド・アーキテクチャでは、シンプルかつ目的指向のソフトウェアの組み合わせでサービスを提供するべき、という原則的な点は共通認識であるものの、ではシンプルとはどういうことか?どこまでSOAの原則に忠実にして、どこまで既存の技術のアドバンテージを認めるか?というような点で、細かい試行錯誤がつづけられている、というのが全体としての印象です。

Posted by jkanekomt at 2003年11月05日 13:35 | trackBack



Comments
Post a comment









Remember personal info?







関連記事