SOA(サービス指向アーキテクチャ)は,独立したサービスの集合体としてシステムを設計,構築する考え方です。一つひとつのサービスは何らかの機能と,その機能を利用するためのインタフェースを持ち,システムはこれらのサービスを組み合わせることで,固有の業務プロセスを実行します。個々のサービスは独立して稼働するため,再利用が容易で,業務プロセスの変更に素早く対応できるほか,あるサービスに対する変更の影響もごく限られた範囲に抑えられるなどのメリットがあります。

 小さな部品を組み合わせて大きなシステムを作る,という考え方は,小規模のソフトウエア開発では誰もが実践している当たり前の考え方です。しかし,企業の情報システムのように,大規模なソフトウエアの開発では当たり前とは言えませんでした。業務アプリケーションを構築するためのパッケージは,その開発ベンダー独自のインタフェースやプロトコルを持つことが多く,別個の企業が開発したパッケージを連携させることが容易ではなかったためです。

 SOAが注目を浴びるようになったきっかけは,サービスを公開/利用するための標準インタフェースとして「SOAP(Simple Object Access Protocol)」が登場したことです。個々の機能を,SOAPでアクセス可能な「Webサービス」として実装し,それをTCP/IPネットワークに接続すれば,ネットワークのどこからでも標準的な方法でその機能を利用できます。外部のプロパイダが提供するサービスをシステムの一部に組み入れることもできるようになります。

 サービスを組み合わせて信頼性の高いシステムを作るには,単にサービスを呼び出すだけでは不十分です。障害への対応をはじめとする複雑な処理が必要です。そのために,専用の業務プロセス記述言語も開発されています。代表的なものとして,米IBM,米Microsoft,米BEA Systemsなどが共同で作成し,標準化団体OASISで策定が進められている「BPEL(Business Process Execution Language)」,World Wide Web Consortium(W3C)で策定が進められている「WS-CDL(WS-Choreography Description Language)」などがあります。