Jump to content 日本-日本語
日本HPホーム 製品とサービス サポートとドライバ ソリューション ご購入方法
≫ お問い合わせ
日本HPホーム
ソリューション  >  大企業向け   >  SOA  

掌編連載小説 「ヤマタイ・チャレンジに乾杯」

第三話 「ヤマタイ・チャレンジに乾杯」解説編

掌編連載小説 「ヤマタイ・チャレンジに乾杯」

第一話
第二話
第三話
日本HPサイトマップ
コンテンツに進む

サービス定義から見たSOA導入の考え方

解説者(プロフィール)

 
日本ヒューレット・パッカード株式会社

コンサルティング・インテグレーション統括本部

シニア・アーキテクト

大楽 秀俊 日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
シニア・アーキテクト
大楽 秀俊
 
SOA導入には、なぜガバナンスが大事なのか?
サービス定義から見たSOA導入の考え方

―サービス実装の前に問題となるのが、サービスの定義です。サービス定義が曖昧だと再利用することが難しくなると思いますが、どのように考えればいいのでしょうか?

大楽 「HP SOA 7サービス」では、「基本設計」を終えてから「サービス定義」を行うことになります(図3参照。サービス定義から開始することもできる)。サービス定義を行うには、ビジネスの観点とITの観点という2つの観点で考える必要があります。ビジネスの観点においては、必要となるビジネス上の機能を洗い出し、その機能をどのようなプロセスで実現するかという観点でまとめていきます(図7参照)。

 
図7: サービスの定義
図7 サービスの定義
たとえばビジネスの観点で、宅配便サービスを考えてみましょう。サービス利用者は、相手に荷物を届けたいわけです。自転車で届けようが、車や飛行機を使おうが、途中経過は一切関係ありません。サービス名称がわかり(識別)、品物を梱包して伝票に相手先を記入することで(インタフェース)、荷物が届けばいいわけです(振舞い)。

一方ITの観点、ここでは宅配会社(サービス供給者)となりますが、具体的に相手に届けるための手段を考える必要があります。都内であれば自転車を使い、遠方であれば車、離島であれば飛行機そして車といった具合です。つまり、ITの観点では、プロセスを実現するにあたり、どのようなサービスが必要か、そしてそのサービスにはさらにどのようなサービスが必要かということを明確にしていく作業となります。

―次に問題となるのはサービスの粒度ですが、どの程度にサービスを分解すればいいのでしょうか?

大楽 結論から先に言えば、再利用可能な最大限の粒度を設定すべきです。粒度を小さくすればするほど利用範囲は拡大しますが、管理は大変になるからです。

サービスを定義する際、全社レベルでサービスを共通利用する場合と、EC など個々のプロジェクト単位での利用に分けて考えますが、それによって粒度も異なります(サービスをよく知っている部門内では粒度を小さくしても利用できるが、サービスを知らない全社レベルでは粒度を小さくすると利用しづらくなる)。いずれもサービス定義の方法論は同じです。

サービスを洗い出すに当たってはサービスの粒度を揃える必要がありますが、その妥当な粒度はお客様によって感じ方が異なるため、一概に定義することはできません。ビジネスプロセスも既存アプリケーションの機能範囲も、お客様によって異なるため、サービス粒度も異なるからです。また、全社レベルか部門内での利用かも考慮して粒度を決めます。

また初期分析の時点で、オブジェクト指向を意識しすぎて共通するクラスを捜そうとすると、話す相手によってレベルが異なるため、粒度がバラバラのクラスが抽出されてしまい、結果として収集がつかなくなる可能性もあります。こうした問題を避けるため、HPではビジネスとITの観点からサービス粒度を整理し、再利用可能な最大限のサービスを定義します(図8参照)。

 
 
図8: サービス粒度
図8 サービス粒度
レベル3サービスに当たるサービスポートフォリオは、お客様の業種・業態、企業規模などによって異なります。そのサービスポートフォリオから、再利用可能な業務を、ビジネスサービス、ユーティリティサービス、コンポーネントサービスに切り出します。ここでもHPならではの強みを発揮することができます。それは、ビジネスサービス、ユーティリティサービス、コンポーネントサービスを支えるインフラサービスを同時にご提供することができる点です。
   
ビジネスサービス 大まかにお客様のビジネスプロセスの構成要素と同じレベルあるいは、大きな業務単位を一段階ブレークダウンした程度
ユーティリティサービス
(プロセスサービス、コンポーネントサービス)
既存のアプリケーションや構成済みのサービスを参考にし、お客様が使いやすい同等のレベルで定義。ただし、そのレベルが明らかに適当でない場合には、さらに分解する。CRMシステムなどとして括れる程度でクラス化するのも可。なお、この時点ではプログラム開発をあまり意識せず、無理に共通のクラスを出そうとしない方が良い。
インフラサービス ユーティリティサービスを実現するインフラストラクチャー

―では実際にどのようにサービス粒度をブレークダウンしていったらいいのでしょうか?

大楽 そのおおまかな流れを表したのが図9となります。必要に応じてレベル3サービスからレベル6サービスにまで分解し、最終的にプロセス定義書・サービス定義書を作成します。なお、レベル1サービスはインダストリープリントであり、レベル2、3サービスはこれらをブレークダウンしたもので、アーキテクチャ策定時にサービスポートフォリオとして定義します。

 
 
図9: サービス開発の流れ
図9 サービス開発の流れ
販売業務を例に考えてみましょう。まず、ビジネスサービス抽出を行います(図10参照)。
 
図10: ビジネスサービス抽出 Swim Laneチャート
図10 ビジネスサービス抽出 Swim Laneチャート
業務プロセスを顧客の1業務単位(レベル4サービスと呼ぶ)に表現し、レベル4サービス間の関連を明らかにします。ここでは、「注文→受注処理を行う→製造指示をする→製造する」という流れになります。また、併せて、画面等の外部設計も行い、パッケージとのFit & Gapはこのフェーズで必要であれば行います。

次に業務プロセスを分解します(図11参照)。受注処理を行う場合、あるレベル4サービスに注力し、そのレベル4サービス機能の設計とプロセスの分解を行い、レベル5サービスの抽出を行います。基本的にサービスの分解はレベル5サービスに止め、再利用性、保守性等を考慮し必要ならば、より細かな粒度のサービスの抽出を行います。

 
図11: 業務プロセスフロー分解 プロセスサービス
図11 業務プロセスフロー分解 プロセスサービス
レベル4サービスでは、「注文受付→注文情報を入力する→在庫をチェックする→製造リードタイムをチェックする→オーダをエントリする」という流れになります。さらにそれぞれのサービスは、レベル5サービスに抽出することができるわけです。例えば、「注文情報を入力する→注文情報入力サービス」という具合です(さらに、再利用性、保守性を考慮し、レベル5サービスを分解して、レベル6サービスを抽出する場合もあります)。

最後に、分解しないレベル5サービスを含めサービス一覧を作成します。これでITの裏付けのあるサービスの粒度を決めることができるわけです。こうした作業を、必要な範囲で行うことで、再利用可能なサービスの定義を行うことができます。

―ここまでお話を伺っていると、従来のDOAと似ている気がしますが、どこが違うのでしょうか、またSOA化のタイミングをどう考えればいいのでしょうか?

大楽 適切な情報(データ)が提供されるという点では DOA (Data Oriented Approach)に似ています。しかし、DOAはビジネスにリンクしていませんが、SOAはビジネスにリンクしている点が決定的に違います。

たとえば、ポイントカードの場合を考えてみましょう。DOAではリアル店舗とECサイトでのポイントを別々のデータとして管理している場合、DOAでは概念データモデルを作成し同一のデータとして扱えるように実装する必要があります。そのように実装しなければ、DOAでは同じ店のポイントでも、リアル店舗では使えてもEC店舗では使えないということがおこります。しかし、SOAではポイントサービスという名称(識別)だけなく、インタフェースや振舞いも定義しますので、最初から両方の店舗で使えるようにすることができるわけです。また、新たなポイント制度を導入する場合も、他のシステムへの影響を最小限にできます。

SOA化は、サービス利用者にとって使いやすさをもたらし、ビジネスの効果的な遂行を可能にします。また、再利用可能なサービスが増えれば増えるほど、ますます利用されるという好循環構造をもたらします。一方SOA化は、IT側にも大きなメリットをもたらします。アーキテクチャがよりシンプルになりビジネスと密接に連携しますので、ダイレクトにビジネスに貢献きるようになり、その存在意義が一層評価されるようになるからです。

最後にSOA化のタイミングですが、ここ2〜3年でSOA化が本格化すると予想されている現在、HPでは、一日も早くSOA化を検討・採用されて、先行者利益を享受できるようお手伝いさせていただければと願っております。

前のページへ
印刷用画面へ
プライバシー 本サイト利用時の合意事項 ウェブマスターに連絡
© 2008 Hewlett-Packard Development Company, L.P.