Service Oriented Architecture(サービス指向アーキテクチャ)の略。システム全体を「サービス」と呼ぶ部品の集合体とみなす考え方のこと。関連性のある複数のプログラムやコンポーネントを、「サービス」として部品化する設計思想を指す。それぞれのサービスの独立性を高め、システムに変更の必要が生じた際の影響範囲を極力抑えることを目指す。
SOAに基づいて設計したサービスは、ほかのサービスと処理をやり取りする際、WebサービスやMQ、JMS(Javaの非同期メッセージ交換サービス)といった呼び出し手段を意識しないで済む(実際には、Webサービスの技術を使うことが多い)。サービス同士の通信を中継するESB(エンタープライズ・サービス・バス)と呼ぶ仮想的なデータの通り道(バス)が、サービス間の通信手段の違いを吸収する。
従来の部品化やサブシステム分割といったシステム設計技術は、部品やサブシステムにまたがって処理をやり取りする場合、相手先を意識しなければならないことが多かった。
SOAの威力は、システム開発における生産性や保守性の向上にとどまらない。ビジネスの変化に合わせて業務プロセスを組み替え、その変更をシステムにも反映できるようにするのが、究極の目的である。
SOAに基づき業務とシステムを連携させる一連の流れは、次のようになる。まず、システム化の対象となる業務プロセスの現状分析と部品化を行う。この作業には、BPM(ビジネス・プロセス・モデリング)ツールと呼ぶソフト製品を使うことが多い。
次に、業務部品単位でシステム部品(サービス)を設計・実装する。同時に、システム部品の実行順序やESBを使った部品間の連携方法も定義する。サービスの呼び出し順序やサービス同士の関連は、「BPEL(Business Process Execution Language=ビジネス・プロセス実行言語)と呼ぶ言語で記述する。
BPELは、Javaで構築したサービス、ERPパッケージ(統合業務パッケージ)で構築したサービス、レガシー・システムのサービスなど、さまざまな種類のサービスを一つの環境で定義するためのもの。米IBMや独SAP、米マイクロソフトなどが中心となって標準化を進めている。
BPELで定義された流れに基づき一連の処理を実行する。システムの実行ミドルウエアは、ESBの機能を備えた製品を使う。システムの実行状況は監視ソフトでチェックする。問題があれば、システム部品の呼び出し順序をBPELで変更し、実行する。
SOAはここ数年、米国で注目を集めている。日本でもユーザー企業の関心が高まりつつある。SOA対応と銘打ったソフト製品の提供が中心だったITベンダーにも、変化が出てきた。顧客企業の業務プロセスの分析や部品化を支援するコンサルティング・サービスの登場がそれだ。例えば日本IBMは今年5月、SOAの導入に向けたコンサルティング・サービスを発表している。