Hitachi

Cosminexus V11 アプリケーションサーバ & BPM/ESB基盤 概説


7.4.2 サービス

SOAで利用するサービスとは,業務と1対1に対応し,再利用できるソフトウェア部品のことです。業務アプリケーションをサービスとして扱う(サービス化する)ことで,これまで分散していたシステムを,SOAを適用したシステムとして統合できます。SOAの考え方を適用した業務システムのサービス化とシステムの統合について,次の図に示します。

図7‒7 業務システムのサービス化とシステムの統合

[図データ]

ネットワーク上に分散する業務アプリケーション,業務パッケージ,データベース操作などは,それぞれインターフェースが異なる場合があります。そのため,システムの統合が困難でした。サービスプラットフォームでは,業務アプリケーション,業務パッケージ,データベース操作などをサービス化して,共通の標準的なインターフェースを使用することで,分散している業務システムを統合できます。

サービスは独立性が高いため,あるサービスで障害が発生したり,業務のプロセスの見直しに伴ってあるサービスを追加・変更したりしても,ほかのサービスに与える影響が少ないという特長があります。また,既存のサービスを再利用することもできます。

〈この項の構成〉

(1) サービスとビジネスプロセスとの関係

ビジネスプロセスを構成するサービスは,互いに緩やかに連携しているため,障害が発生したり,システムを変更する必要があってサービスを入れ替えたりする場合にも,影響範囲がより小さいという利点があります。そのため,業務の手順の変更に即応してビジネスプロセスを変更できます。

また,あるビジネスプロセスで利用しているサービスを,ほかのビジネスプロセスで再利用することもできます。ビジネスプロセスを構成するサービスを追加・変更する場合の例を次の図に示します。

図7‒8 ビジネスプロセスを構成するサービスの追加・変更例

[図データ]

(2) サービスのインターフェース

サービスには,業務に提供する機能を利用するためのインターフェースがあります。このインターフェースを通じて,ビジネスプロセスと連携します。インターフェースは,サービスの接点であり,サービスが提供できる機能や必要な入出力データを定義します。サービスが提供する機能の実装は,このインターフェースが入口となり,コンポーネントが担います。コンポーネントとは,サービスとして,要求のあった内容を処理する部分をいいます。コンポーネントには,同期処理や非同期処理をするオンライン型アプリケーションや,対話型アプリケーションなどがあり,新規開発や,既存システムの再利用,およびパッケージ導入などの方法が利用できます。サービスの構造を次の図に示します。

図7‒9 サービスの構造

[図データ]

図7-9では,各業務は,要求に応じたコンポーネントを,インターフェースを経由して利用することを示しています。

(3) サービスの抽出とサービスの粒度

SOAを適用したシステムでは,開発から運用まですべてサービス単位で考えます。そのため,サービスの切り出し方やサービスの大きさによって,システムの性能や柔軟性が異なってきます。このサービスの切り出し方のことをサービスの抽出といいます。サービスの抽出では,業務内容を調査し,サービスが提供する機能を決めます。また,サービスが提供する機能の範囲(大きさ)を粒度といいます。SOAを適用したシステム開発では,粒度の決め方によって,システムがビジネス環境の変化に対応しやすくなるかどうかが決まります。

サービスの粒度は,業務体系や業務フロー,データの依存関係などから,総合的に決定します。サービスとして適切な粒度は,業務上の変更が発生する単位を基に決定します。業務の変化が発生する単位に近く,各サービスの独立性が高いと,サービスの組み替えによる変更で変化を吸収できます。このような単位がサービスの粒度として適切となります。

業務の変化が発生する単位に対してサービスが大き過ぎると,サービスの組み替えで変化に対応できなくなります。サービスの単位が小さ過ぎると,サービス間の依存関係が複雑になって,変化対応時の変更が1つのサービスで完結できなくなります。サービスの単位とサービスの粒度との関係を次の図に示します。

図7‒10 サービスの単位とサービスの粒度との関係

[図データ]

ただし,業務の変化の内容によっては,上位階層のサービスが変化に対応しやすい場合があります。このような場合は,ビジネスプロセスを階層化することで対応できます。ビジネスプロセスと業務の階層化の例を次の図に示します。

図7‒11 ビジネスプロセスと業務の階層化の例

[図データ]