SOAとは
大規模なシステムを「サービス」の集まりとして構築する設計手法。サービスとは、外部から標準化された手順によって呼び出すことができる一まとまりのソフトウェアの集合であり、単体で人間にとって意味のある単位の機能を持つものを指す。アプリケーションソフト自体に他のソフトウェアとの連携機能を持たせたものと考えても良い。
SOAでは、個々のアプリケーションの開発言語や動作環境などは問題とされず、共通のメッセージ交換インターフェースに対応していればそれでよい。また、アプリケーションの一部をサービスとすることもできるし、複数のアプリケーションをまとめて一つのサービスとすることもできる。
SOAを実現する具体的な技術基盤の標準として「Webサービス」が有望視されている。ソフトウェアをWebサービス化することにより、各サービスが-XMLで記述されたメッセージを-SOAPでやり取りし、連携して動作する。
純粋にSOAの概念に基づけばSOAを実現する技術をWebサービスに限定する必要はない。しかし、SOAの実現に必要なインタフェースの標準化や製品実装の業界動向からかんがみて、Webサービスの使用が事実上必須の状況となっている。
具体的には-Apache Axisフレームワークや-J2EE、-.NETなどのミドルウェア技術。Webサービスに対応した製品を用いたシステムであればそのままWebサービスインタフェースを付加し、サービスとして外部からアクセスできる。
サービスは、BPMやポータルフレームワークなどのサービスを活用する技術基盤上で運用される。
サービスを活用する側はWebサービスを呼び出す仕組みを組み込んでおり、ビジュアル開発環境などで簡単にサービスを組み合わせることができるものが多い。
SOAは最適な適用の範囲があると同時に、どんなシステムを実現するのであってもその妥当性を保証できるというわけではない。
サービスを有効に活用できる技術基盤と、それをさらに有効に活用できるシステム、たとえば、バラバラなシステムで運用されていたサプライチェーンをBPMを使って1 つのプロセスに統合するなどのように、明らかな有効性が見出される必要がある。