アーキテクチャ・ジャーナル

SOAのためのエンタープライズ アーキテクチャ戦略

Hatay Tuna
2010/08/04
Page1 Page2 Page3

サービス内での不安定要素のカプセル化

 “サービス指向モデリング” は、サービスを通じてケイパビリティをその実装に関連付ける方法です。ケイパビリティは、ビジネスまたはビジネス機能が実行する、または実行しようとしている内容を抽象的に表します。人、IT、およびプロセスが集まって、ケイパビリティの実装を構成します。このような実装は、サービスとして論理的にグループ化されます。

 サービス指向モデリングによって、アーキテクトは次の作業を生産的に行うことができます。

  1. サービスに対するケイパビリティの評価 (またはマッピング) 。
  2. 構成要素であるコンポーネントを含む、サービスのモデリング。

 図 3 は、サービス指向モデリングの主な概念を示しています。

図 3: ビジネスと IT の関連付け

 サービスは、ケイパビリティを実装するサービス コンポーネントで構成されます。つまり、サービスは、ケイパビリティの実装を構成するコンポーネントの論理的なグループです。サービスは、ケイパビリティとサービス コンポーネントとの論理的な関連付けを示します。これによって、ケイパビリティの内容と、ケイパビリティの実装に必要な方法とを緩やかに結合します。

 前に示した就職斡旋企業のケイパビリティ マップの例に含まれていた、“応募を管理する” というケイパビリティについて考えてみましょう。このケイパビリティは、応募者から送付される応募書類と履歴書の承認に関係しています。処理には、履歴書の分析、応募者情報の抽出、その情報と仕事内容との照合が含まれます。一致するものがある場合は、応募者に応募書類の提出が受け付けられたことが通知されます。これにより、プロフィールが仕事に適合している応募者に絞り込むことができるので、コンサルタントは貴重な時間を節約できます。一方、プロフィールが仕事の内容と一致しなかった応募者には、却下の通知が送付されます。

 応募者と仕事の照合が行われた後も、就職斡旋のサイクルは継続します (面接、推薦など)。

  • 応募を管理する
    • 応募書類を提出する
    • 応募書類を処理する
      • 履歴書を分析する
    • 応募者に通知する
      • 応募者に応募の受付を通知する
      • 応募者に応募の却下を通知する

 図 4 は、これらのケイパビリティの粒度レベルと、ケイパビリティ間の相互作用を示しています。

図 4: “応募を管理する” ケイパビリティ

 この例を念頭に置いて、これらのケイパビリティをどのようにサービスにマップできるかを見ていきましょう。

サービスとしてのケイパビリティの評価

 “評価” とは、ケイパビリティをサービスにマッピングするプロセスです。サービスはサービス コンポーネントによって構成され、ケイパビリティの実装を提供します。

 事前に定義された評価基準や、業界を超えてあらゆる組織に適合するコンテキスト、また、すべてのビジネス シナリオの要件を満たす魔法のような公式は存在しません。とはいえ、ケイパビリティの属性 (明確な境界、目的、およびその他の属性) は、ケイパビリティをサービスとして評価する際に非常に役立ちます。

 図 5 は、“応募を管理する” ケイパビリティ (棒付きキャンディーのような図) とその実装をカプセル化するサービスとの間で考えられるマッピングを表しています。

図 5: サービスにマッピングされたケイパビリティ

 さらに、ケイパビリティとその実装の間の動作の関連付けのために、サービスはケイパビリティの実装の期待値 (パフォーマンス、信頼性、サービス レベルの期待値、サービス品質 (QoS) の要件、主要業績評価指標 (KPI) など) を定義する論理エンティティも形成します。

 このようにして、ケイパビリティのパフォーマンスを、ビジネスの目標に基づいて監視および評価できます。

 先ほどの就職斡旋企業のシナリオの “履歴書を分析する” は、次の点を考えるうえで適切な例と言えます。

  • 90% の精度 (履歴書の属性情報の抽出に関して)
  • 1 時間あたり 1000 件の履歴書を処理

 このような属性や要件に関する重要な情報やコンテキストが提供されることよって、アーキテクトは、適切な製品やテクノロジを選択したり、優れたアーキテクチャを開発することが可能になります。たとえば上記の場合、アーキテクトは、90% の精度があり、パフォーマンス (1 時間あたり 1000 件の履歴書を分析) と規模の要件を満たすテクノロジを見つける必要があることになります。

 評価は “合理的”、“論理的” で、“目的が明確な” アクティビティです。評価が完了すれば、アーキテクトは次にサービス指向モデルの開発について検討し始めることができます。

サービスのモデリング

 “モデリング” は、サービス間の関係と相互作用を把握し、明らかにするプロセスです。サービス指向モデルには、構造モデルと動作モデルがあり、サービスのさまざまな面をとらえて詳細に示します。

 たとえば、図 6 に示すとおり、“応募者通知サービス” は、電子メールで通知を送信するのに “電子メール メッセージング サービス” に依存するということを示しています。

図 6: 構造モデル

 “構造モデル” は、サービスと他のサービスとの関係を分解したものです。これによって、アーキテクトはサービス間の依存関係を把握できるほか、変更による影響を事前に把握したうえで分析することができます。

 一方、“動作モデル” は、ビジネス プロセス、シナリオ、ユース ケースなどのコンテキストによって、サービス間の相互作用を表します。

 図 7 は、応募者が仕事に応募するシナリオを示しています。履歴書が分析され、仕事との照合が行われ、応募者に電子メールで通知されます。

図 7: 動作モデル

 サービス レベルで開発されたモデルでは、詳細なテクニカル モデルとは対照的に、わかりやすい実例が提供されるので、実装の複雑な面が隠蔽され、明確な境界が設けられることによって、アーキテクトがビジネス要件を把握しやすくなります。

 図 8 は、“応募を管理する” ケイパビリティを実装するサービス コンポーネントに関するサービスの論理的な構成を示しています。

図 8: サービス コンポーネントで構成されるサービス

 表 1 は、ケイパビリティ、サービス、およびサービス コンポーネントへの対応を示しています。

ケイパビリティ サービス サービス コンポーネント/動作
応募書類を提出する 応募書類提出サービス 求人 Web サイト: 応募者がインターネットを通じて Webブラウザーから仕事の情報を参照し、仕事に応募できるようにします。
応募書類提出 Web サービス: Web サイト経由で応募書類を受け付けます。将来的には、他の求人掲示板から応募書類を提出できるようにします。
応募書類を処理する 応募書類処理サービス 応募書類処理 Web サービス: 応募書類を処理します。応募者の履歴書を分析して、応募者情報を抽出し、仕事内容と照合します。
応募書類データベース: 応募書類と応募者の詳細情報を格納します。
応募者に通知する 応募者通知サービス 応募書類通知 Web サービス: 応募者に応募の受付または却下のステータスを通知します。
電子メール メッセージング 電子メール メッセージング サービス 電子メール サービス: 電子メール メッセージを送信します。
表 1: サービスとサービスが実装するケイパビリティの構成

 サービス コンポーネントには、デバイスの組み合わせを使用できます。たとえば、携帯電話やプリンター、ネットワークやサーバーなどのハードウェア コンポーネント、および (特に重要なものとして) アプリケーションや Web サービス、データベースなどのソフトウェア コンポーネントなどを使用できます。たとえサービス コンポーネントが商用市販の単体のアプリケーションであれ、夜通し実行されるバッチ ファイルであれ、また、クラウドで実行される Web サービスであれ、レガシー COBOL アプリケーションであれ、すべてのプリンシパルはシームレスに適用されます。

 通常、既存の投資を無視して新しく何かを始めるという選択肢はありません。アーキテクトは既存の資産を、サービスを通じてケイパビリティにマップし、管理および再利用できるようにする必要があります。この場合は、“電子メール メッセージング サービス” を通じて電子メール メッセージの送信を行います。

 それでは、先ほどの就職斡旋企業のシナリオを構築して、変更に対応できるようにしましょう。この組織では、ビジネス ニーズに基づく以下の変更を実装することによって、“応募を管理する” ケイパビリティを変換しようとしていると仮定します。

  • 市販の専用アプリケーションを使用することによって、履歴書の解析の精度を 90% から 95% に向上させる
  • 電子メール メッセージングの代わりにSMS メッセージングを使用する
  • 応募者の窓口を拡大するために、スマート フォン用のモバイル アプリケーションから求人に応募できるようにする

 図 9 は、これらの変更を示しています。

図 9: 境界は安定している

 サービスの境界に注目してください。最新のビジネス ニーズに合わせて実装は変更されていますが、ケイパビリティに由来する適用範囲や境界は変化しないので、組織では変更の影響を最小限に抑え、発展と技術革新を推進する余地が生まれます。

ギャップを意識せよ

 サービス指向モデリングは、“何を行うか”、“何を行うべきか” と、“どのように行うか”、“どのように行うべきか” とを抽象的な視点で結びつけることによって、ビジネスと IT とのギャップ、つまりビジネス アーキテクチャ (ビジネス ケイパビリティで表される) と IT アーキテクチャ (サービス コンポーネントで表される) のギャップを埋める重要な役割を果たします (図 10 を参照)。

図 10: EA と SOA の連携におけるミッシング リンク

 また、サービス指向モデリングによって、ビジネス モデルとテクノロジ モデルとのルース カップリング (疎結合) が可能となるので、変更に対応できるようになり、結果として敏捷性を実現できます。

 サービス指向モデリングには、アーキテクトにとって興味深い次の 3 つの属性があります。

  • ビジネス モデルとテクノロジ モデルをサービスによって結び付け、緩やかに結合する。
  • IT の複雑さや変化をサービスによって隠蔽する。
  • 強固なサービス モデリングにより、サービスの配布が迅速になる。

 ここまで、“ケイパビリティ アーキテクチャ” と “サービス指向モデリング” が持つ直接的なメリットと実用性を明らかにしてきました。次に、これらをコンテキストに当てはめて、ライフサイクルの観点から SOA の実装について説明し、これらの方法がインタラクティブかつインクリメンタルに実行できることを確認していきます。


 INDEX
  [アーキテクチャ・ジャーナル]
  SOAのためのエンタープライズ アーキテクチャ戦略
    1.不安定要素から安定要素への抽象化
  2.サービス内での不安定要素のカプセル化
    3.サービスを通じた変更の管理

インデックス・ページヘ  「アーキテクチャ・ジャーナル」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間