BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース SOAにおける依存性法則

SOAにおける依存性法則

原文(投稿日:2013/07/28 )へのリンク

去年、SOA at QConでSOAに対する自分の考えを論じたGanesh Prassd氏が、今年の初めに自分の観点で書いたSOA as Dependency Oriented Thinkingで説明を敷延した。

SOAはシステム間の依存性を分析し管理する科学です。ここで言う”依存性管理”は不要な依存性を除去し、妥当な依存性を分かりやすく関連付けることです。

そして彼は説明をしやすくするため、次のような図を書いた

Ganesh氏はこう語る

ビジネス層では依存関係にフォーカスを当てることでプロセスの合理化とスリム化が可能になります。ビジネス層では組織のビジョン(=理想郷)に基づき、その理想郷へ たどり着く戦略とそれらの戦略たち(製品管理、技術開発、営業、販売など)を実行する幅広い機能を適切な場所に配置する必要があります。[中略]アプリ ケーション層で我々はグループオペレーションを試みます。ちなみに、作業プロセスのランタイムグループ化はすでにビジネス層で定義済みです。アプリケー ション層では、静的にグループ化する必要があります。どの作業がグループ化するべきで、どの作業がそうではないでしょうか?それはアプリケーション層で決 めるべき依存性の問題です。しかし、その答えはインフォーメション層でしか見つけられません。なぜならその作業たちはデータモデルを共有する場合のみセッ ト化ができるからです。ご存知のとおり、データモデルは「外部」と「内部」の2種類が存在します。その「内部データモデル」は「ドメインデータモデル」と も呼ばれ、外部システムからは見えません。対照的に、「インタフェースデータモデル」と呼ばれる「外部データモデル」は外部に公開され、他のシステムと共 有されます。

Ganesh氏は最近、上記の概念を実業務のユースケースで試して、間近で観察できる機会を手に入れた。障害を持つ各シナリオで、Ganesh氏は 障害の原因を依存性の原則から遡って探すことができると推測した。その結果、Ganesh氏はその依存性原則のルールを守ることこそ「SOA達成」への道 であると信じた。
もちろん我々はSOAを失敗又は成功に導く原則とルーを数年に渡って蓄積した多数のサンプルと一緒に持っている。その原則をGanesh氏はそれらの動作を4つの層で分類した。

ビジネス層:(1)追跡性-中核管理を適応、”組織のビジョンに基き、すべての事の意味を明確にすること”。(2)最小限主義-想定に意義を持つ。(3)ドメイン洞察力-ビジネス本質の理解、”最初の原則からビジネスを再認識する。”

アプリケーション層:(4)結束とカップリング-”何を一緒に置くべで、何を一緒にリンク(個別システム間の最小限)するべきなのか”。(5)実装 と公開-”ビジネスロジックとドメインデータモデルを共有するグループ作業は製品になるし、それらのインタフェースデータモデルの共有はサービスにな る”。(6)バリエーションとバージョン-”複数の論理演算を同時に識別し、それらのロジックとインタフェースへの継続的な変更をサポートする手段を確立 する”。

インフォメーション(データ)層:(7)内部 VS 外部-"ドメインデータモデルからインタフェースデータモデルを識別する”。(8)コンテンツ VS コンテキスト-”インタフェースデータモデルから中核データ要素を抽出する”。(9)抽象VS具象-”コンテンツとコンテキスト要素の両方のデータ型階層 を作成する”。

テクノロジー層:(10)バンドルの依存関係-”ビジネスロジックを実装する過程で無関係なコンポーネント間の新たな依存関係作成を避ける”。 (11)ランタイムバインディング-”依存関係を生成を出来るだけ遅らせる”。(12)正しいツールの選択-”最も適切なメカニズムを使用してロジックを 実装する”。

あなたは”Dependency-Oriented Thinking(依存指向思考)"というSOAコンセプトと上記の12法則についてどのように思ってますか?それらの法則はあなたのSOAプロジェクト にお役に立つものでしょうか?今すぐそれらを使用することを検討しますか、またはあなた自身の経験に基づいて、それらを修正するでしょうか?

BT