機能と技術からわかる!システム基盤の実力

第9回 SOAによる情報システム構築のポイント②サービスの抽出と階層化

この記事を読むのに必要な時間:およそ 2 分

前回は,SOAによる情報システム構築の一般的な流れについて説明しました。今回はその中でも特に重要なポイントとなる,システム設計時におけるサービスの抽出とそれに従ったシステムの階層化について解説します。

サービス抽出の考え方

サービスの抽出とは,サービスが提供する機能の洗い出しと,サービスの粒度(提供機能が及ぼす範囲)を決定することを言います。SOAシステム構築手法では,以下のようにサービスの粒度を設計の各工程で段階的に設計する点が特徴といえます。

要件定義:
サービスの初期抽出を行い,サービスの候補として位置づけます。
ビジネスプロセス設計:
ビジネスプロセスの階層化により,サービス粒度の見直しを行います。
サービスI/F設計:
サービスの粒度の決定とサービス I/Fの定義を行います。

たとえば図1で示すように,要件定義工程の段階では,作成した業務フローに基づき業務フローを構成する各業務をサービスの候補として位置づけます。これはあくまで候補であって,以降の工程においてより適切な粒度になるように見直しを行います。

図1 要件定義工程でのサービス候補抽出

図1 要件定義工程でのサービス候補抽出

サービス粒度の見直しは,主に業務の実施方法のバリエーションごとに,サービスを区分するかどうかを判断することで実施します。図2にサービス粒度の見直しの例を示します。⁠発注」業務をさらにビジネスプロセスで表現して階層化することで,業務のバリエーションが洗い出されます。ここでは発注業務のバリエーションとして,計画発注業務,計画外発注業務というバリエーションが抽出されています。これらの業務のバリエーションに対応した粒度でのサービスは,業務の変化を局所化する単位としてより適切な場合があり,この粒度をサービスとするかどうかを決定します。

要件定義工程の段階で抽出したサービス候補をそのままサービスとして用いる場合もあります。要件定義工程で作成する業務フローにおける業務は,多くが「サブシステム」に対応するものであり,変化を局所化することを考えると,この単位をサービスとするのが適当な情報システムもあるからです。ここで,サブシステムとは,データベースを共有するアプリケーションの集合で構成されるシステムのことを言います。

図2 階層化とサービスの決定

図2 階層化とサービスの決定

サービスの粒度の選定に関する考え方を図3に示します。業務機能の階層構造では,上位の階層は変化が少なく,他から独立している基本的な業務を示し,下位の階層になるほど変化が多く,他との依存関係が複雑になる傾向を示します。

サービスの適切な粒度は,図3では中位階層の業務に対応したものです。これは,業務の変化が発生する単位に近く,サービスの独立性が高い粒度です。業務の変化に対するプログラムの変更をサービスという実装単位に局所化できます。これにより,当該業務と対応したサービスを組み替えることで,システム変更を行うことが可能となります。サービスの組み換えとは,サービスを新たな実装のサービスと入れ替えることです。なお,この中位階層のサービス粒度として,図3に示したように,前述した業務のバリエーションに対応したものが考えられます。

これに対して,最上位の階層で示すサービス粒度では,業務の変化に対して実装の単位が大きすぎる場合があります。プログラムの変更はサービス内に閉じ込められはしますが,本来は入れ替えなくてよい部分まで入れ替える必要があるため,開発や運用のコストがより大きくなってしまいます。ただし業務によっては,変化を局所化する実装単位として,この最上位の粒度が適切な場合もあり,前述したようにビジネスプロセス階層化の中での設計が必要です。また既存システムのオープン化やパッケージ製品の導入といったシステム計画レベルの変化に対しては,この最上位の粒度のサービスを組み替えの単位とするのが適切と考えられます。

最下位の階層のサービス粒度では,業務の変化に対して実装の単位が小さすぎます。サービス間の依存関係が強く,プログラムの変更が複数のサービスに跨ってしまい,システム変更が1つのサービスに局所化されないことになります。

図3 サービスの粒度

図3 サービスの粒度

コメント

コメントの記入