サービス指向アーキテクチャ

サービス指向アーキテクチャ(SOA)とは



サービス指向アーキテクチャ(SOA)は、ソフトウェア工学におけるシステム構築の概念であり、大規模なコンピュータシステムを効率的に構築するための手法です。ビジネスプロセスにおける一連の処理を「サービス」という単位で捉え、これらのサービスをネットワーク上で連携させることでシステム全体を構築します。

SOAは、ビジネスの変化に迅速に対応できる柔軟なシステム開発を可能にすることを目指しています。2004年頃からIT業界で注目され始め、2009年頃からのクラウドコンピューティングの普及に伴い、その重要性が再認識されるようになりました。

SOAの必要条件



SOAを実装するためには、以下の3つの条件を満たす必要があります。

1. サービス単位でのソフトウェア構成
- ソフトウェアは、業務上の一処理に相当する単位で構成されている必要があります。SOAにおけるサービスとは、プログラム上の部品ではなく、「決済処理」や「在庫照会」など、具体的な業務単位で定義されます。サービスの粒度については様々な議論がありますが、ビジネスプロセスに沿った単位で分割することが推奨されます。
2. 標準化されたインターフェース
- サービスのインターフェースは、オープンで標準化された技術仕様に基づいて定義され、呼び出しと応答が標準的な方法で行える必要があります。Webサービスが事実上の基盤技術として利用されており、XMLやHTTPなどのインターネット標準技術を活用します。
3. サービス連携によるシステム構築
- サービスをネットワーク上で連携させ、迅速にシステムを構築できる必要があります。そのためには、サービスを単位として業務処理の流れを記述する技術や、その記述に従ってシステム連携を実行する技術が不可欠です。

SOAの経緯



SOAに通じる考え方や技術は以前から存在していました。

オブジェクト指向やコンポーネント指向ソフトウェアを部品化し、組み合わせるという考え方がSOAの基盤となっています。しかし、これらの手法はプログラム上の部品を単位とするため、業務変化への対応においては柔軟性に欠ける側面がありました。
分散オブジェクト、メッセージング、EAI:これらの技術は、ネットワークを介したソフトウェア連携を可能にしましたが、特定のソフトウェア基盤への依存や連携の煩雑さが課題として残っていました。

2000年頃から提唱されたWebサービスは、これらの課題を解決する技術として注目されました。しかし、当初のWebサービスは連携自体に重点が置かれており、サービスの位置づけや複雑なトランザクション処理の設計が課題でした。2004年頃から、Webサービスの概念や技術の拡張に伴い、SOAというキーワードが注目されるようになりました。

ポートレットフレームワークの活用



SOAの課題解決策として、ポートレットフレームワークが注目されています。オブジェクト指向やコンポーネント指向がIT部品の再利用を目指すのに対し、ポートレットフレームワークは、エンドユーザーが直接利用するWebページ上の機能の再利用を目指します。

ポートレットフレームワークでは、ユーザーが要求する機能ごとにプラグインを作成します。これにより、エンドユーザーがWebページに配置するビジネス機能を柔軟に実装できます。また、ポートレットは表示、インターフェース、ビジネスロジックを含むため、技術に依存せずに開発でき、異なる技術で作成されたポートレットを同一のWebページに配置することが可能です。ポートレット間の通信は、Java API、RMI、Webサービス、など様々なプロトコルを使用できます。

技術的基盤



現在のSOAは、ほとんどの場合、Webサービスを技術的基盤としています。Webサービスは、XMLやHTTPなどのインターネット標準技術をベースとしており、SOAの実現に必要な技術要素を提供します。

Webサービスは以下の3つの主要な技術要素で構成されています。

1. SOAP (Simple Object Access Protocol):サービス間の呼び出しと応答を行うプロトコルです。通常HTTPが下位プロトコルとして使用されますが、HTTP以外のプロトコルも使用可能です。
2. WSDL (Web Services Description Language):SOAPによるサービスの呼び出しや応答インターフェースを定義する言語です。
3. UDDI (Universal Description, Discovery, and Integration):WSDLで記述されたサービス情報を登録・検索するための技術です。UDDI自体もWebサービスとして提供されます。

さらに、複雑なサービス連携を設計するための技術として、BPEL (Business Process Execution Language) やBPMN (Business Process Modeling Notation) が登場しました。ESB (Enterprise Service Bus) は、これらのサービス連携を実行するための技術です。

BPEL:業務プロセスの順序やルールを記述する言語であり、XMLを使用します。BPELは、サービス連携の記述と個々のサービスのインターフェースを分離し、柔軟で疎結合な連携を可能にします。
BPMN:業務プロセスの順序やルールを図として可視化するための表記法です。BPMNで作成した図はBPEL形式に変換できます。
ESB:サービス間を接続する中継バスとして機能する技術や製品です。ESBを使用すると、多数のサービス間接続を一元的に管理し、監視することができます。

これらの技術を組み合わせることで、BPMN形式の図を描くだけでシステム連携が可能になり、ビジネスプロセスの変更に迅速に対応できるとされています。

個々のサービスの実装には任意の技術を使用できますが、WebサービスやSOA製品の実装ではJava.NETが先行しています。既存システムをサービスとして活用する場合には、Javaなどを使用してインターフェースを作成するのが一般的です。

代表的な関連ソフトウェア



Liferay(オープンソース ポータルフレームワーク)
IBM WebSphere
SOPERA ASF Community Edition / Enterprise Edition
SoftwareAG webMethods
富士通 GLOVIA smart
フィオラノ ソフトウェア Fiorano SOA Platform
レッドハット JBoss Enterprise SOA Platform
サン・マイクロシステムズ Sun Java CAPS
Oracle SOA Suite
SOA using ESB based on executable UML
ESB Mule(オープンソース)
BEA SOA Resource
ビトリア・テクノロジー
SRAオープンソースSOA基盤
SAP NetWeaver
ARIS
HP SOA Manager software
日立 Cosminexus

関連項目



Object Linking and Embedding
OpenDoc
エンタープライズアーキテクチャ
クラウドコンピューティング
オーケストレーション (コンピュータ)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。