SOA(Service Oriented Architecture:サービス指向アーキテクチャ)とは、異なるサービス間の通信を支える基盤となる構造である。ここでいうサービスとは、コンピューティングに関連した実体要素(ユーザーやプログラム)のために実行される単位作業として定義される。SOAは、1つのコンピューティング要素(プログラムなど)が別の要素のために単位作業を実行可能にするような連係動作の方法を定義する。サービスの連係動作は記述的言語を用いて定義される。各連係動作は自己完結型でゆるやかに結び付けられており、それぞれの動作は互いに独立している。
SOAの実装形態として最も一般的になってきたのが、SOAP(Simple Object Access Protocol)ベースのWebサービスである。しかし、Webサービスを使用せずに同様の機能を提供するSOAの実装形態も存在する。SOAのプロトコル非依存性は、異なるサービスコンシューマー(クライアント)がさまざまな方法でサービスと通信できることを意味する。理想的には、サービスプロバイダーとサービスコンシューマーの間に管理レイヤがあり、各種の実装プロトコルに関して完全な柔軟性が保証されることが望ましい。
意識しているかどうかは別として、読者もおそらくSOAを利用したことがあるはずだ。例えば、オンラインショッピングをするときなどがそうだ。例として、Lands' End(衣料品専門のショッピングサイト)を取り上げてみよう。このサイトにあるカタログを見て、幾つかの製品を注文したとする。このサービスは在庫サービスと通信し、注文した製品で希望するサイズと色の品物があるかどうか確認する。そして注文内容と配送情報は別のサービスに送られ、注文した品物の配送日および追跡番号が通知される。追跡番号はさらに別のサービスを通じて、注文処理と商品配送の状況確認を可能にする。最初の注文から商品の配送に至るプロセス全体は、Webサービス間の通信、つまり異なるプログラム同士が会話することによって管理される。こういったことを可能にする基盤フレームワークを提供するのがSOAなのである。
Copyright © ITmedia, Inc. All Rights Reserved.