コンピューティングにおいて、サービスの構成可能性は、サービス指向設計パラダイム内で適用される設計原則であり、複数のソリューションで再利用できるサービスの設計を奨励するものです。これらのソリューション自体も、複数のサービスで構成されています。サービスを再構成できる能力は、理想的にはサービス構成の規模や複雑さとは無関係です。[ 1 ]
この原則は、既存のサービスを再利用して新しいソリューションを構成することを促進するため、SOAが約束する俊敏性に直接的に寄与している。[ 2 ]
独立して存在するコンポーネントからソフトウェアを開発するという概念は、構成という概念を促進します。これはオブジェクト指向の根底にある概念であり、最終製品は、ソリューションの複雑さに関わらず、複数のソフトウェアソリューションの一部となることができる、相互にリンクされた複数のオブジェクトで構成されます。同じ構成の概念はサービス指向にも受け継がれており、複数のサービスを組み合わせることでビジネスプロセスを自動化します。しかし、サービス指向では、SOAが約束する俊敏性を実現するために、複数のソリューション内で構成および再構成可能なサービスを構築することに、より重点が置かれています。この重点の結果として、複数のソリューションに効果的に集約できるサービスを開発するためのガイドラインが必要となります。
サービス構成可能性の原則は、サービスの再利用を最大限に促進することを目的として、構成可能なサービスを設計する上で役立つ設計上の考慮事項を提供します。この原則によって提供されるガイドラインは、サービスが追加の設計変更を必要とせずにサービス構成に参加できるように準備します。
サービス構成可能性の原則を適用するには、サービスを設計して、他のサービスを制御するサービス(コントローラ サービス)として、または他のサービスをさらに構成することなく、構成内の他のサービスに機能を提供するサービス(構成メンバー)として、サービス構成で使用できるようにする必要があります。[ 2 ]
サービスがこの二重の機能を提供するには、サービス契約[ 3 ]は、さまざまなレベルの入力データと出力データに基づいて機能を提供するように設計する必要があります。構成メンバーとして参加する必要がある場合、通常、サービスへの入力パラメータは、構成コントローラとして参加する必要がある場合と比較して、よりきめ細かくなります。再利用頻度の高いサービスは、複数のサービス構成内で構成されたときに最適なパフォーマンスを提供できるように、 可能な限りステートレスである必要があります(サービスステートレス原則)。この原則の有効性は、他の設計原則が どの程度うまく適用されているかに依存します。標準化されたサービス契約原則の適用により、サービスは他のサービスと相互運用可能になり、実行時データモデル変換を実行する必要性を回避することで、構成設計を簡素化するのに役立ちます。[ 4 ]サービスの疎結合原則を適用することで、サービスは、構成内の他のサービスとの間にいかなる形の負の結合[ 5 ]も発生しないという確信を持って再構成できます。サービス自律性とサービス無状態性の原則を適用することで、サービスの信頼性と可用性が向上し、複数のサービス構成においてより高い信頼性で再利用できるようになります。
サービスが効率的なサービスコントローラおよびサービスメンバーとして機能するためには、基盤となる技術アーキテクチャが、スケーラブルで、サービスに必要なステートレス性をサポートできるランタイム環境を提供する必要があります。同様に、サービス構成の規模が大きくなるにつれて、サービスの実行時相互作用に関連するコンテキストデータの保存と取得は、サービス自身が管理するのではなく、ランタイム環境に委任する必要が生じる場合があります。これにより、サービス構成の効率性が向上します。
サービス構成が構築されるにつれて、再利用頻度の高いサービスに依存する傾向が強まります。そのため、サービス構成の設計時に慎重な分析を行い、重要な機能については代替のスタンバイサービスを検討する必要があります。一方で、複数のサービス構成の一部となったサービスを進化させるのは困難になる場合があります。これは、サービスに対して複数の同時契約を維持することを推奨する同時契約設計パターンを適用することで対処できます。[ 6 ]この方法では、後方互換性を維持しながらサービスを進化させることができます。
サービスの構成可能性を決定する要因には、次のようなものがあります。[ 7 ]