SOA(サービス指向アーキテクチャ)
SOA(service oriented architecture/サービス指向アーキテクチャ)とは、業務アプリケーションを構築する際、全体の業務を独立した複数の業務プロセスに分割することで、部分的な業務の変更時にシステム全体への影響を少なくする開発手法です。
今までも「部品化」や「サブシステム分割」といった大きなシステムを小さな単位に分割する設計手法がありました。しかし、従来の手法は、業務の変更時に別のサブシステム(部品)とのインタフェースを意識する必要があり、一部の修正が全体に大きな影響を及ぼしていました。SOAは、インタフェースを意識せず、サービス単位で個別に追加・更新することが可能です。
各サービスが独立性を保ち、かつ、連携できるのは、Webサービスという基盤技術を利用している点にあります。具体的には、業務プロセスを商品調達、受注処理などに分解します。分解した各業務にWebサービスを追加します。さらに、システム全体を統括するため、Webアプリケーションを実装したWebサーバとつなげます。Webアプリケーションには、各業務の役割やつながりを記述した、アプリケーションフローが定義されています。
【業務システム1】【業務システム2】【業務システム3】
(Webサービス)(Webサービス)(Webサービス)
| | |
+----------------------------------
【Webサーバ】
Webアプリケーション
アプリケーションフロー
+----------------------------------
| | |
【クライアント】【クライアント】【クライアント】…
図1 SOAのシステム構成
業務プロセスにWebサービスを実装するためには、BPM(ビジネス・プロセス・マネジメント)ツールを利用します。また、アプリケーションフローの記述は、通常、BPEL(ビジネスプロセス実行言語)を用いて行います。また、各サービス間のデータは、ESB(エンタープライズ・サービス・バス)という、仮想のネットワークを介してやり取りされます。
SOAに基づいてシステム設計をする場合、業務システムの分割方法(分割粒度)が問題になります。
業務プロセス・レベルの分割は、粒度が大きいわけ方です。販売管理システムの場合、仕入処理、入金処理、出荷処理、在庫処理といった分け方をします。機能レベルでの分割は、粒度が小さい。データベース処理、業務ロジック、フロー制御、データ入出力や帳票出力などです。粒度が大きすぎると、汎用性が失われ、小さすぎると1度の改修で複数の業務プロセスに手を入れるため、非効率です。
SOAを導入する場合、業務システムの洗い出しと分割粒度の見極めが重要なポイントになります。
参考文献:日経コンピュータ 特別編集版 IT Keyword 2007
今までも「部品化」や「サブシステム分割」といった大きなシステムを小さな単位に分割する設計手法がありました。しかし、従来の手法は、業務の変更時に別のサブシステム(部品)とのインタフェースを意識する必要があり、一部の修正が全体に大きな影響を及ぼしていました。SOAは、インタフェースを意識せず、サービス単位で個別に追加・更新することが可能です。
各サービスが独立性を保ち、かつ、連携できるのは、Webサービスという基盤技術を利用している点にあります。具体的には、業務プロセスを商品調達、受注処理などに分解します。分解した各業務にWebサービスを追加します。さらに、システム全体を統括するため、Webアプリケーションを実装したWebサーバとつなげます。Webアプリケーションには、各業務の役割やつながりを記述した、アプリケーションフローが定義されています。
【業務システム1】【業務システム2】【業務システム3】
(Webサービス)(Webサービス)(Webサービス)
| | |
+----------------------------------
【Webサーバ】
Webアプリケーション
アプリケーションフロー
+----------------------------------
| | |
【クライアント】【クライアント】【クライアント】…
図1 SOAのシステム構成
業務プロセスにWebサービスを実装するためには、BPM(ビジネス・プロセス・マネジメント)ツールを利用します。また、アプリケーションフローの記述は、通常、BPEL(ビジネスプロセス実行言語)を用いて行います。また、各サービス間のデータは、ESB(エンタープライズ・サービス・バス)という、仮想のネットワークを介してやり取りされます。
SOAに基づいてシステム設計をする場合、業務システムの分割方法(分割粒度)が問題になります。
業務プロセス・レベルの分割は、粒度が大きいわけ方です。販売管理システムの場合、仕入処理、入金処理、出荷処理、在庫処理といった分け方をします。機能レベルでの分割は、粒度が小さい。データベース処理、業務ロジック、フロー制御、データ入出力や帳票出力などです。粒度が大きすぎると、汎用性が失われ、小さすぎると1度の改修で複数の業務プロセスに手を入れるため、非効率です。
SOAを導入する場合、業務システムの洗い出しと分割粒度の見極めが重要なポイントになります。
参考文献:日経コンピュータ 特別編集版 IT Keyword 2007