SOAは導入が増えているにもかかわらず、多数のSOAプロジェクトがいまだ失敗している(参考記事・英語)。あまりにも深刻な状況に陥ることが多いので、最近では「SOAかDOAか」(SOAか失敗か)(source)という受けを狙ったような題名の記事があった。DOAは「Dead on Arrival」、つまり「最初から機能しない」を意味する。この状態を改善する方法の1つが、適切なSOAガバナンス(参考記事リンク)である。
Muhammed Yaseen Muriankara氏は最近の論文「SOA governance framework and solution architecture」(SOAガバナンスのフレームワークとソリューション・アーキテクチャ)(source)で、ガバナンスの基本レベル3つを定義している。エンタープライズ・ガバナンスとは、
責任の連鎖、権限、コミュニケーションを確立して人々に権限を与え、測定、ポリシー、制御の各メカニズムを確立して、人々が個々の役割と責務を果たせるようにすることです。
エンタープライズ・ガバナンスの一部を構成するITガバナンスは、
組織の情報技術(IT)プロセスに関係したガバナンスの側面であり、そうしたITプロセスがビジネスの目標を支援する方法のことです。
最後に、SOAガバナンスは次のように定義されている。
サービス構成要素やサービス、ビジネスプロセスのライフサイクルの中に、重要なITガバナンスの解決を委ねるITガバナンスの専門分野。このライフサイクルの効果的な管理がSOAガバナンスの重要目標なのです。
論文は、SOA Governance and Management Method(SGMM=SOAガバナンスと管理手法)(source)という、SOAガバナンスを導入するためのIBMによる方法論とモデルを紹介している。この方法論は、IBM Rational® Method Composer(source)を使って文書化されており、ダウンロードできる。
SGMMはサービスライフサイクル(source)を中心に組み立てられており、以下を網羅している。
サービス定義
SOAガバナンスの最重要側面は、サービスの作成を監督することです。サービスを識別し、その機能を記述し、動作を詳しく調べ、インタフェースを設計しなければなりません。
サービステスト
SOAにより、機能を分離状態でテストする機会が増え、その機能が意図したように働くという期待が高まります。しかし、SOAにより、新しい消費者が現れるごとに同一機能を繰り返し再テストすることにもなるのです。サービスの新しい消費者は、利用するサービスが常に正しく働いていると確信しているとは限らないのです。一方、複合アプリケーションはサービスを共有しますから、バグのあるサービスが一つあれば、表面上無関係に見える複数のアプリケーションに悪影響を与え、こうしたプログラミングミスがもたらす結果が増幅されてしまいます。
サービスデプロイメントのライフサイクル
サービスは即座に生まれて、その後永久に存在するわけではありせん。あらゆるソフトウェアがそうであるように、サービスには計画、設計、実装、デプロイ、維持、そして最終的な廃棄が必要です。アプリケーションのライフサイクルは公開可能で、組織の様々な部分に影響を与える可能性がありますが、サービスのライフサイクルはさらに大きな影響を与える可能性があります。なぜなら、複数のアプリケーションがひとつのサービスに依存する可能性があるからです。
サービスのバージョニング
サービスのバージョニングにより、既存サービスに満足しているユーザーはそのバージョンを変更せずに使い続け、新しい必要条件のあるユーザーに対しては、要件を満たすようにサービスを進化させることが可能になります。現在のサービスインタフェースと動作を1つのバージョンとして維持すると同時に、別バージョンとして新しいサービスを導入します。
サービス所有権
SOAはビジネスを反映すべきです。これが意味することは通常、SOAを変えてビジネスに適合させることですが、ビジネスを変えてSOAにマッチさせることが必要な場合もあるかもしれません。それが不可能な場合、部門間の協力を強めて、共通のサービスを開発する負担を複数の部門でシェアする必要性が出てきます。全組織にまたがる常任委員会が事実上サービスを所有し、管理するのですが、部門間のこうした協力は、常任委員会によって実現することができます。
サービスのセキュリティ
SOAによって、容易に再利用できるサービスが誕生しますが、再利用すべきではない消費者でも容易に再利用できてしまいます。認可ユーザーであっても、サービスがアクセスする全データへ、すべてのユーザーがアクセスしてよいわけではありません。サービス消費者の中には、同一サービスの他の消費者よりも、より高度のデータ機密性、完全性、否認防止を必要とする消費者もいるのです。
サービスの監視
複数のサービスを結合した複合アプリケーションの信頼性は、そのアプリケーション自体が依存しているサービスの信頼性を上回ることはありません。複数の複合アプリケーションはサービスの共有が可能になっているので、ひとつのサービスに障害が出ると、多数のアプリケーションが影響を受けます。消費者の拠り所となり得る信頼性とパフォーマンスを記述したSLA(サービス内容合意書)を定義する必要があります。定義済みのSLAを必ず満たしているように、サービスプロバイダを監視しなくてはなりません。
論文は、SOAガバナンスの方法論だけでなく、ツール一式(ガバナンス・プラットフォーム)も説明しており、多数のガバナンスプロセスを少なくとも部分的に支援し、自動化可能にしている。
スタートアップ・プロジェクト向けに最低限必要な自動化機能には、以下が含まれます。
サービス関連のアーチファクトやメタデータを検索するための、中央集中されたレジストリおよびリポジトリ。この機能は以下を可能にするために必要です。
- 適切な認可サービスを検出する
- 取り組みの重複を回避する
- 再利用を促進する
- SOAライフサイクル内でのサービスの現状を識別する
- サービスのサブスクライバーに可視性を提供する
- 関連サービスとサービス変更の影響を探し出す
- サービスに施した変更を伝える
サービスに適用するポリシーを関係づけ、実施するメカニズム。ポリシーはガバナンスフレームワークを利用することにより定義します。 カスタマイズ可能なライフサイクル認識システム。ライフサイクル内の段階変更に伴って妥当性確認を発動するライフサイクル認識システムにより、段階ごとのガバナンスの妥当性確認を自動化できるようにします。 レジストリはSOAランタイムで最適化されていれば理想的であり、そうすればレジストリに格納されたメタデータを使い、ランタイム時に動的ルーティングを介してエンリッチメントを提供可能です。
この論文とリストに挙げられた参考資料は、SOA実装に関わるすべての人々、特にSOAガバナンスの関係者に最適の読み物である。
原文はこちらです: