このページはExams Labs Braindumps [ http://blog.examslabs.com ] からエクスポートされました。 エクスポート日時:Thu Dec 12 4:45:05 2024 / +0000 GMT ___________________________________________________ タイトル最新[2023年9月28日] S90.08B試験 正確なSOAデザイン&アーキテクチャラボ サービス&マイクロサービスPDF問題集[Q10-Q33]付き --------------------------------------------------- 最新[2023年9月28日] S90.08B試験 正確なSOA Design & Architecture Lab with Services & Microservices PDF問題集 SOA 17問を取得してキャリアを飛躍させよう SOA S90.08B試験はラボベースの試験で、理論的な知識だけでなく、専門家の実践的なスキルと能力をテストするように設計されています。S90.08B試験では、SOAアーキテクトおよび設計者として業務で遭遇する可能性のある実際のシナリオや課題をシミュレートするように設計された一連のタスクを完了することが求められます。 SOA S90.08B: SOA Design & Architecture Lab with Services & Microservices試験は、サービスとマイクロサービスを使用したサービス指向アーキテクチャ(SOA)の設計とアーキテクチャに焦点を当てた上級レベルの認定試験です。SOA Design & Architecture Lab with Services & Microservices認定資格は、SOAの経験があり、SOAソリューションの設計と実装の専門知識を深めたい専門家に最適です。 QUESTION 10当社のサービスインベントリには、Invoice関連のデータアクセス機能を提供する次の3つのサービスが含まれています:Invoice、InvProc、Proclnvです。これらのサービスは、異なるプロジェクト・チームによって異なる時期に作成され、設計標準に準拠する必要はありませんでした。したがって、これらのサービスはそれぞれ、請求書データを表現するための異なるデータ・モデルを持っています。現在、これら3つのサービスはそれぞれ異なるサービス・コンシューマを持っています:サービス・コンシューマーAはInvoiceサービス(1)にアクセスし、サービス・コンシューマーB(2)はInvProcサービスにアクセスし、サービス・コンシューマーC(3)はProclnvサービスにアクセスする。各サービス利用者は、請求書関連サービスのデータアクセス機能を呼び出し、そのサービスがすべての請求書関連サービスで使用される共有会計データベースと相互作用することを要求する(4、5、6)。さらに、サービス利用者Dは、共有会計データベースから請求書データに直接アクセスするように設計されている(7)。さらに、サービスコンシューマーDは、共有会計データベースから請求書データに直接アクセスするように設計されている(7)。(このアーキテクチャのコンテキストでは、サービスコンシューマーDは、例示したサービスアーキテクチャに関連するリソースにアクセスしているため、サービスコンシューマーと表示されている)。Invoiceサービス、InvProcサービス、およびProclnvサービスが同じサービスインベントリの一部であると仮定すると、Official Endpointパターンを完全に適用するにはどのような手順が必要ですか? 請求書関連サービスの1つを、請求書データ・アクセス機能を提供する公式サービスとして選択する必要があります。次に、サービス利用者A、B、Cは、選択された請求書関連サービスにのみアクセスするように再設計する必要があります。サービス・コンシューマDは請求書関連サービスに依存しないため、公式エンドポイントパターンの影響を受けず、会計データベースに直接アクセスし続けることができる。サービス抽象化の原則をさらに適用することで、共有会計データベースの存在やその他の実装の詳細を、現在および将来のサービス利用者から隠すことができる。 請求書関連サービスの1つを、請求書データアクセス機能を提供する公式サービスとして選択し、他の2つのサービスからのロジックを、公式Invoiceサービスのコンテキスト内で実行するように移動する必要があります。サービス・コンシューマーA、B、Cは、選択された請求書関連サービスのみにアクセスするように再設計する必要がある。サービス・コンシューマーDも、共有会計データベースに直接アクセスせず、公式請求書関連サービスと相互作用してデータ・アクセスを実行するように再設計する必要がある。サービス抽象化の原則をさらに適用して、共有会計データベースの存在やその他の実装の詳細を、現在および将来のサービス利用者から隠すことができます。 サービスコンシューマーA、B、Cは、すでに公開されたコントラクトを介してデータアクセスを行っているため、公式エンドポイントパターンの影響を受けません。サービスコンシューマーDは、共有会計データベースに直接アクセスするのではなく、公式請求書関連サービスと相互作用してデータアクセスを実行するように再設計する必要があります。サービス抽象化の原則をさらに適用することで、共有会計データベースの存在やその他の実装の詳細を、現在および将来のサービス・コンシューマーから隠すことができる。 請求書関連サービスの1つを、請求書データアクセス機能を提供する公式サービスとして選択する必要がある。サービス利用者Dは請求書関連サービスに依存しないため、公式エンドポイントパターンの影響を受けず、会計データベースに直接アクセスし続けることができる。サービス・ルース・カップリングの原則をさらに適用して、サービス利用者A、B、Cを共有会計データベースやその他の実装の詳細から切り離すことができる。 説明Legacy Wrapperパターンを適用して、コンポーネントBを、共有データベースをラップする別のユーティリティサービスに分離することができます。コンポーネントCが、レガシー・システムAPIのラッパーとして動作する別のユーティリティー・サービスに分離されるように、Legacy Wrapperパターンを再度適用することができます。Legacy WrapperパターンをコンポーネントDにもう一度適用し、ファイル・フォルダへの標準化されたアクセスを提供する別のユーティリティ・サービスに分離することができます。Service Facadeパターンを適用することで、コンポーネントAと新しいラッパー・ユーティリティ・サービスの間に、3つのファサード・コンポーネントを追加することができます。こうすることで、分離の結果発生する可能性のある動作の変化をファサードコンポーネントで補うことができます。サービスコンポーザビリティの原則をサービスAと3つの新しいラッパーユーティリティサービスにさらに適用することで、4つのサービスすべてが新しいサービスコンポジションに参加するために最適化されます。コンポーネントB、C、Dを3つの異なるユーティリティ・サービスに分離するためにLegacy Wrapperパターンを適用することで、IT企業内の共有リソース(データベースA、レガシー・システム、ファイル・フォルダ)を適切にカプセル化し、専用サービスで管理することができます。サービスファサードパターンを使用して、コンポーネントAと新しいラッパーユーティリティサービスのそれぞれとの間にファサードコンポーネントを作成し、サービスコンシューマーAの動作に影響を与えることなくシームレスに相互作用できるようにします。これは、3つのコンポーネントを別々のサービスに分割することによって生じる可能性のあるパフォーマンス低下を軽減するのに役立ちます。質問11サービス利用者AはサービスAにメッセージを送信します。現在、サービスAの実装は3つ(実装1、実装2、実装3)重複しています。サービス消費者Aによって送信されたメッセージは、サービスエージェントA(1)によって傍受され、サービスエージェントAは実行時にメッセージを転送するサービスAの実装を決定します。サービスAの3つの実装はすべて、同じ物理サーバー上に存在する。サービスAの実装が重複して存在するにもかかわらず、パフォーマンスが低下することがある。また、IT企業内の他の多くのクライアントやアプリケーションが使用する共有データベースへのアクセスを必要とする機能を導入するため、近々サービスAに新しいサービス機能を追加する必要があることも知らされています。新しいサービス機能の追加に備えてパフォーマンスを向上させるには、このサービスアーキテクチャをどのように変更すればよいでしょうか。 標準化サービス契約の原則を適用して、新しいサービス機能が現在の設計標準に準拠した方法で既存のサービス契約を拡張するようにすることができます。冗長実装パターンを適用して、サービスAが共有データベースから必要とするデータのコピーを含む複製データベースを含むサービスAの別個の実装を確立することができる。 Service Autonomyの原則を適用して、サービスAの個々の実装を異なる物理サーバーに分離することができる。新しいサービス機能が追加されたら、サービスデータレプリケーションパターンを適用して、サービスAの各実装に共有データベースから必要なデータの独自のコピーを与えることができる。 新しいサービス機能がサービス契約に追加された後、サービスコンシューマーAが共有データベースに間接的に結合されないようにするために、標準化サービス契約原則とともにサービス疎結合原則を適用することができる。レガシーラッパー(Legacy Wrapper)パターンを適用して、共有データベースに標準化されたデータアクセスサービス機能を提供する新しいユーティリティサービスを確立することができる。 Service Autonomy原則を適用することで、サービスAの個々の実装を異なる物理サーバーに分離することができます。新しいサービス機能が追加されたら、State Repositoryパターンを適用して、サービスAの各実装に共有データベースから必要なデータの独自のコピーを与えることができる。 説明サービスAの個々の実装を異なる物理サーバーに分離することで、サービスA同士を分離したり、IT企業内の他のクライアントやアプリケーションから分離したりすることができ、パフォーマンスを向上させることができます。さらに、Service Data Replicationパターンを使用して、サービスAの各実装に共有データベースから必要なデータの独自のコピーを与えることで、共有データベースの負荷を軽減し、パフォーマンスを向上させることができます。これは、共有データベースへのアクセスを必要とする新しいサービス機能が追加された場合に特に重要です。これは、共有データベースに追加された要求によってサービスAのパフォーマンスが影響を受けないようにするのに役立ちます。サービスAとサービスBは、同じ共有状態データベースを使用して、実行時に状態データを延期します。3つのサービスの評価により、各サービスには、非可知ロジックと一緒にバンドルされているため再利用できない不可知ロジックが含まれていることが判明しました。また、サービスA、サービスB、および共有状態データベースは、それぞれ物理的に別々の環境に配置されているため、サービスAとサービスBが共有状態データベースと対話するために必要なリモート通信が、実行時パフォーマンスの不合理な低下を引き起こしていることがわかりました。 Orchestrationパターンを適用すると、Official Endpoint、State Repository、Service Data Replicationパターンが自動的に適用される環境になり、サービスAとBの公式サービスエンドポイントを介して共有ステートデータベースをレプリケートできるため、各タスクサービスは専用のステートデータベースを持つことができる。 Orchestrationパターンを適用すると、サービスA、B、Cに存在する不可知ロジックから不可知ロジックをきれいに分離できる環境になり、その結果、サービス再利用性原則の適用によって再利用の可能性が保証された新しい不可知サービスを設計する必要が生じる。State Repositoryパターンは、オーケストレーション環境でサポートされ、オーケストレーション環境にローカルに存在するため、サービスAとBで共有できる中央ステートデータベースを提供します。 Orchestrationパターンを適用すると、Compensating Service Transactionが自動的に適用される環境になり、その結果、サービスAとBがリモートで状態データベースにアクセスすることによって生じるパフォーマンスの問題を補うために使用できる、高度な例外ロジックを作成する機会が得られる。API GatewayパターンとService Brokerパターンも自動的に適用され、集中処理レイヤーで共通の変換機能を提供し、新しい不可知論的サービスのために作成する必要があるサービスコントラクトの不一致を克服するのに役立つ。 Orchestrationパターンは、必要なステートリポジトリのホスティングをサポートしていないため、このアーキテクチャには適用できない。 説明Orchestrationパターンを適用することで、不可知論的ロジックから不可知論的ロジックをきれいに分離し、再利用の可能性がある新しい不可知論的サービスの設計を可能にすることで、このアーキテクチャを改善することができます。State Repositoryパターンは、オーケストレーション環境でサポートされ、オーケストレーション環境に対してローカルであるため、サービスAとBで共有できる中央状態データベースを提供します。さらに、オーケストレーションパターンは、サービスA、B、C間の相互作用を調整する中央コントローラーを提供し、サービス間のリモート通信の必要性を減らして実行時のパフォーマンスを向上させます。サービスBは、データベースへの汎用データアクセスを提供するRESTベースのユーティリティサービスです。このサービスコンポジションアーキテクチャでは、サービスコンシューマーAが請求書XMLドキュメントを含むSOAPメッセージをサービスAに送信します(1)。このサービス構成アーキテクチャでは、サービス利用者Aは請求書XMLドキュメントを含むSOAPメッセージをサービスAに送信し(1)、サービスAは請求書XMLドキュメントをサービスBに送信し(2)、サービスBは請求書ドキュメントをデータベースに書き込む(3)。サービス利用者Aが請求書ドキュメントを表現するために使用するデータモデルは、XMLスキーマAに基づいている。サービスBが請求書レコードを書き込む必要があるデータベースは、独自のCSV(Comma Separated Value)形式のビジネス文書全体しか受け付けません。サービスによって使用されるXMLスキーマの互換性がないため、サービス利用者AからサービスBへの請求書文書の送信は、現在存在するサービスを使用して達成することはできません。契約一元化パターンが適用され、ロジック一元化パターンが適用されていないと仮定した場合、実行時のパフォーマンス要件を高めるロジックを追加することなく、サービスコンシューマーAからデータベースへの請求書ドキュメントの送信を可能にするには、どのような手順を踏めばよいでしょうか。 サービスコンシューマーAは、送信するSOAPメッセージがサービスAのサービス契約に準拠するように、XMLスキーマBを使用するように再設計することができます。次に、データモデル変換パターンを適用して、サービスAから送信されたSOAPメッセージを、サービスBが使用するXMLスキーマAに準拠するように変換することができます。次に、標準化サービス契約の原則をサービスBとサービスコンシューマーAに適用して、請求書XMLドキュメントが不要な検証を回避するように最適化する必要があります。 サービス消費者AとサービスBはXMLスキーマAを使用するため、変換ロジックの必要性はありません。サービス・コンシューマAとサービスBはXMLスキーマAを使用するため、変換ロジックは必要ありません。サービス・コンシューマAは、サービスBが使用するデータベースに準拠した形式で請求書ドキュメントを送信する必要がないため、サービス・ルース・カップリングの原則が自然に適用されます。 サービス・コンシューマAは、請求書ドキュメントをデータベースに直接書き込むように設計し直すことができます。これは、サービスAとサービスBの関与を回避することにより、パフォーマンス要件を削減します。さらに、サービスコンシューマAがデータベースに直接結合するデータアクセスロジックを含むことを保証することにより、サービス疎結合原則の適用をサポートします。 サービス・コンポジションは、サービス・コンシューマーAが請求書ドキュメントをサービスBに直接送信するように再設計できる。サービス・コンシューマーAとサービスBはXMLスキーマAを使用するため、変換ロジックの必要性は回避される。サービス・コンシューマーAはサービスBが使用するデータベースに準拠した形式で請求書ドキュメントを送信する必要がないため、これは当然、ロジックの集中化パターンを適用します。 推奨されるソリューションは、データモデル変換パターンを使用して請求書XMLドキュメントをスキーマBからスキーマAに変換してからサービスBに渡すことである。さらに、サービスBとサービスコンシューマーAに標準化サービス契約原則を適用して、不必要な検証を確実に回避し、請求書XMLドキュメントを最適化する。このソリューションでは、実行時のパフォーマンス要件を高めるようなロジックを追加する必要はありません。サービスBに連絡する前に、サービスAはまず自身のデータベースからコード値のリストを取得し(1)、このデータを自身のメモリに配置する必要があります。サービスCにメッセージを送信する必要があることが判明した場合、サービスAはサービスBから受信したデータとコード値リストのデータを組み合わせて、サービスCに送信するメッセージを作成する必要があります。サービスCを呼び出す必要がない場合、サービスAはコード値を破棄してタスクを完了することができます。その結果、サービスAはSOAPベースのWebサービスであり、サービスBはJSON形式のメッセージを交換するRESTサービスです。したがって、サービスAとサービスBは現在通信できません。さらに、サービスCは不可知論的なサービスであり、多くのサービスコンシューマーが同時にアクセスしています。サービスCは頻繁に使用量のしきい値に達し、その間は利用できず、サービスCに送信されたメッセージは受信されません。これらの問題を解決するには、どのような手順を踏めばよいでしょうか? データモデル変換パターンは、サービスAとサービスBの間に、実行時にあるデータモデルから別のデータモデルにメッセージを変換できる中間処理レイヤーを確立することで適用できます。中間ルーティングパターンとサービスエージェントパターンを適用することで、サービスBが応答メッセージを送信する際に、サービスエージェントがメッセージをインターセプトし、その内容に基づいて、メッセージをサービスAに転送するか、サービスCにルーティングすることができる。サービス自律原則をさらにサービスCに適用し、冗長実装パターンと組み合わせることで、より信頼性が高くスケーラブルなサービスアーキテクチャを確立することができる。 データフォーマット変換パターンは、サービスAとサービスBの間に、実行時にメッセージをあるデータフォーマットから別のデータフォーマットに変換できる中間処理レイヤーを確立することで適用できる。非同期キューイングパターンは、サービスAとサービスCの間に中間キューを確立し、サービスAがサービスCにメッセージを送信する必要があるときに、キューがメッセージを保存し、正常に配信されるまでサービスCに再送信するように適用できる。サービス自律原則は、冗長実装パターンとともにサービスCにさらに適用することで、より信頼性が高くスケーラブルなサービスアーキテクチャを確立することができる。 データモデル変換パターンは、サービスAとサービスBの間に、実行時にメッセージをあるデータモデルから別のデータモデルに変換できる中間処理レイヤーを確立することで適用できる。中間ルーティングとサービスエージェントのパターンは、サービスBが応答メッセージを送信するときに、サービスエージェントがそのメッセージをインターセプトし、その内容に基づいて、メッセージをサービスAに転送するか、またはメッセージをサービスCにルーティングするように適用することができる。 データ形式変換パターンは、サービスAとサービスBの間に、実行時にメッセージをあるデータ形式から別のデータ形式に変換できる中間処理レイヤーを確立することで適用できる。非同期キューイングパターンは、サービスAとサービスBの間に中間キューを確立し、サービスAがサービスBにメッセージを送信する必要があるときに、キューがメッセージを保存し、正常に配信されるまでサービスBに再送信するように適用できる。サービス再利用性の原則は、冗長実装パターンと一緒にサービスCに適用することで、より再利用可能でスケーラブルなサービスアーキテクチャを確立することができます。 問題は、サービスAとサービスBが異なるテクノロジーを使用しており、通信できないことである。そのため、実行時にメッセージをあるデータ形式から別のデータ形式に変換できる中間処理レイヤーを確立する必要がある。このキューはサービスAからサービスCに送信されたメッセージを保存し、正常に配信されるまで再送信する。さらに、冗長実装パターンをサービスCに適用して可用性と拡張性を確保し、サービス自律原則を適用してサービスCを他のサービスから独立させることができます。このサービスは、IT企業内で独立して展開できるように購入することもできる。サービス・インベントリBではサービス抽象化原則が厳格に適用されているため、サービスBとサービスCについて利用可能な情報は、公開されたサービス契約のみである。サービスDについては、サービス契約とサービスレベル合意(SLA)が利用可能である。あなたは、サービスインベントリAのサービスを構築しているプロジェクトチームのアーキテクトです。サービスインベントリAとサービスインベントリBのオーナーは、一般的に協力的ではなく、コミュニケーションもないと聞いています。クロスインベントリーのサービス構成は容認されていますが、直接はサポートされていません。その結果、サービスBとサービスCのSLAは利用できず、これらのサービスがどの程度利用可能かについての知識はありません。サービス契約に基づき、サービス・インベントリBのサービスは、サービス・インベントリAのサービスとは異なるデータモデルと異なるトランスポート・プロトコルを使用していると判断できます。さらに、最近のテスト結果では、サービスDのパフォーマンスは、他組織のサービス・コンシューマーからの同時アクセスが多いため、非常に予測不可能であることが示されています。また、サービスAからの応答を待っている間、サービス・コンシューマAがどれくらいの時間ステートフルな状態を維持する必要があるかについても懸念があると聞いています。これらの問題を解決するために、どのような手段を講じることができますか? Event-Driven Messagingパターンを適用して、サービスコンシューマーAとサービスAの間にサブスクライバーとパブリッシャーの関係を確立することができます。これにより、サービスAは、サービスコンシューマーAがステートフルな状態を維持することを要求することなく、3つのデータ値を収集できるときにいつでもサービスコンシューマーAに応答を提供できる柔軟性が得られます。非同期キューイングパターンは、サービスAとサービスBの間、およびサービスAとサービスCの間に中央メッセージングキューを配置するために適用することができます。データモデル変換パターンとプロトコルブリッジングパターンは、サービスAとサービスBの間、およびサービスAとサービスCの間の通信を可能にするために適用することができます。 非同期キューイング(Asynchronous Queuing)パターンは、サービスAとサービスBの間、サービスAとサービスCの間に中央メッセージング・キューを配置し、サービスAとサービス・コンシューマーAの間に別のメッセージング・キューを配置するために適用することができます。データモデル変換(Data Model Transformation)パターンとプロトコル橋渡し(Protocol Bridging)パターンは、サービスAとサービスBの間、サービスAとサービスCの間の通信を可能にするために適用することができます。さらにLegacy Wrapperパターンを適用することで、サービス在庫Aで使用されている設計標準に準拠した標準化されたサービス契約でサービスDをラップすることができる。 Containerization(コンテナ化)パターンを適用することで、サービスAが自律的に処理を実行する環境を構築することができます。これによりサービスAは、サービス消費者Aに一貫した応答メッセージを提供する柔軟性を得ることができる。非同期キューイング(Asynchronous Queuing)パターンを適用することで、サービスAとサービスBの間、サービスAとサービスCの間、およびサービスAとサービスDの間に中央メッセージングキューを配置することができる。データモデル変換(Data Model Transformation)パターンとプロトコル橋渡し(Protocol Bridging)パターンを適用することで、サービスAとサービスBの間、およびサービスAとサービスCの間の通信を可能にすることができる。 非同期キューイング(Asynchronous Queuing)パターンは、サービスAとサービスBの間、サービスAとサービスCの間、サービスAとサービスDの間にメッセージキューを配置するために適用することができます。さらにLegacy Wrapperパターンを適用することで、サービス在庫Bで使用されている設計標準に準拠した標準化されたサービス契約でサービスDをラップすることができる。 非同期キューイング(Asynchronous Queuing)パターンは、サービスA、サービスB、サービスC、サービスD、およびサービス・コンシューマーA間にメッセージング・キューを配置するために適用されます。これは、ステートフル・モードである必要なく、これらのサービス間でメッセージが受け渡しされることを保証します。データモデル変換(Data Model Transformation)パターンとプロトコル橋渡し(Protocol Bridging)パターンは、サービスAとサービスB、サービスAとサービスC、サービスAとサービスD間の通信を可能にするために適用されます。Redundant Implementation(冗長実装)パターンは、サービスDのコピーを社内に取り込み、ローカルでアクセスできるようにし、パフォーマンスの予測不可能性を低減するために適用されます。Legacy Wrapper(レガシー・ラッパー)パターンは、サービスDをサービスインベントリBで使用されている設計標準に準拠した標準化されたサービスコントラクトでラップするために適用されます。これは、サービスDを使用したいが、既存のアプリケーションやサービス契約を変更したくないサービス利用者にとって便利です。全体として、このアプローチは、サービス抽象化の原則に準拠しながら、サービスA、サービスB、サービスC、サービスDの問題に対処する包括的なソリューションを提供します。質問16サービスAは、請求書関連の処理に特化した機能コンテキストを持つSOAPベースのWebサービスです。サービスBは、データベースへの汎用的なデータアクセスを提供するRESTベースのユーティリティサービスです。このサービス構成アーキテクチャでは、サービスコンシューマAが請求書XMLドキュメントを含むSOAPメッセージをサービスAに送信します(1)。このサービス構成アーキテクチャでは、サービス利用者Aは請求書XMLドキュメントを含むSOAPメッセージをサービスA(1)に送信し、サービスAは請求書XMLドキュメントをサービスB(2)に送信し、サービスBは請求書ドキュメントをデータベース(3)に書き込む。サービス利用者Aが請求書ドキュメントを表現するために使用するデータモデルは、XMLスキーマAに基づいている。サービスAのサービス契約は、XMLスキーマBに基づいて請求書ドキュメントを受け入れるように設計されている。サービスBが請求書レコードを書き込む必要があるデータベースは、独自のCSV(Comma Separated Value)形式のビジネス文書全体しか受け付けません。サービスによって使用されるXMLスキーマの互換性がないため、サービス利用者AからサービスBへの請求書文書の送信は、現在存在するサービスを使用して達成することはできません。契約の一元化パターンが適用され、ロジックの一元化パターンが適用されていないと仮定した場合、実行時のパフォーマンス要件を高めるロジックを追加することなく、サービスコンシューマーAからデータベースへの請求書ドキュメントの送信を可能にするには、どのような手順を踏めばよいでしょうか。 サービスコンシューマーAは、送信するSOAPメッセージがサービスAのサービス契約に準拠するように、XMLスキーマBを使用するように再設計できます。次に、データモデル変換パターンを適用して、サービスAから送信されるSOAPメッセージを変換し、サービスBが使用するXMLスキーマAに準拠させることができます。 サービスAの特殊な請求書処理ロジックがサービスBにコピーされた後、サービス消費者Aが請求書ドキュメントを直接サービスBに送信するように、サービス構成を再設計することができます。 Service Consumer AとService BはXML Schema Aを使用しているため、変換ロジックの必要性はありません。サービス・コンシューマAは、サービスBが使用するデータベースに準拠したフォーマットで請求書ドキュメントを送信する必要がないため、サービス・ルース・カップリングの原則が自然に適用されます。 サービス・コンシューマAは、請求書ドキュメントをデータベースに直接書き込むように設計し直すことができます。これは、サービスAとサービスBの関与を回避することにより、パフォーマンス要件を削減します。さらに、サービスコンシューマAがデータベースに直接結合するデータアクセスロジックを含むことを保証することにより、サービス疎結合原則の適用をサポートします。 サービスコンシューマAとサービスBはXMLスキーマAを使用するため、変換ロジックの必要性は回避される。サービスコンシューマーAは、サービスBが使用するデータベースに準拠した形式で請求書ドキュメントを送信する必要がないため、これは当然、ロジックの集中化パターンを適用します。 説明推奨されるソリューションは、データモデル変換パターンを使用して請求書XMLドキュメントをスキーマBからスキーマAに変換してからサービスBに渡すことです。さらに、サービスBとサービスコンシューマーAに標準化サービス契約原則を適用して、不必要な検証を回避し、請求書XMLドキュメントを最適化する。このソリューションは、実行時のパフォーマンス要件を高めるロジックの追加を回避します。質問17サービスAがサービスコンシューマーA(1)からメッセージを受信すると、そのメッセージはコンポーネントAによって処理されます。次に、コンポーネントAは蓄積したデータの一部をコンポーネントD(4)に送り、コンポーネントDはデータを特定のフォルダに置かれたテキストファイルに書き込む。コンポーネントDは次に、このファイルが定期的にスケジュールされたバッチインポートによって別のシステムにインポートされるまで待機する。インポートが完了すると、コンポーネントDは成功または失敗のコードをコンポーネントAに返します。コンポーネントAは最後に、これまでに収集されたすべてのデータを含む応答をサービスコンシューマーAに送信し(5)、サービスコンシューマーAはすべてのデータをデータベースBに書き込みます(6)。データベースA、レガシーシステム、およびファイルフォルダは、IT企業内の共有リソースである。サービスAは、過去数年間で成長したサービスアーキテクチャを持つエンティティサービスである。サービス・インベントリ全体の再設計プロジェクトの結果として、あなたは、コンポーネントB、C、Dによって提供されるロジックを、サービス・コンシューマAに関連するサービスAの動作を中断することなく、3つの異なるユーティリティ・サービスに分離するために、サービスAサービス・アーキテクチャを再検討するよう求められています。 コンポーネントBが共有データベースをラップする別のラッパー・ユーティリティ・サービスに分離されるように、Legacy Wrapperパターンを適用することができます。非同期キューイング・パターン(Asynchronous Queuing pattern)を適用することで、コンポーネントAとコンポーネントCの間にメッセージング・キューを配置し、レガシー・システムが利用できない時間帯や、ITエンタープライズの他の部分からのアクセスが多い時間帯の通信を可能にすることができます。サービス・ファゲード・パターンを適用することで、コンポーネントAとコンポーネントDの間にファゲード・コンポーネントが追加され、挙動の変化を補うことができます。サービス・オートノミー原則をサービスAにさらに適用することで、コンポーネントを別のラッパー・ユーティリティ・サービスに分割することによるパフォーマンス低下を補うことができます。 レガシー・ラッパー(Legacy Wrapper)パターンを適用することで、コンポーネントBを、共有データベースをラップする別のユーティリティ・サービスに分離することができます。レガシー・システムAPIのラッパーとして動作する別のユーティリティ・サービスにコンポーネントCを分離するように、レガシー・ラッパー・パターンを再度適用することができます。レガシー・ラッパー・パターンをコンポーネントDにもう一度適用し、ファイル・フォルダーへの標準化されたアクセスを提供する別のユーティリティー・サービスに分離することができます。Service Fagadeパターンを適用して、コンポーネントAと新しいラッパー・ユーティリティ・サービスの間に1つずつ、合計3つのfagadeコンポーネントを追加することができます。こうすることで、ファゲード・コンポーネントは、分離の結果発生する可能性のある動作の変化を補うことができます。サービスコンポーザビリティの原則をサービスAと3つの新しいラッパーユーティリティサービスにさらに適用することで、4つのサービスすべてが新しいサービスコンポジションに参加するために最適化されます。これにより、3つのコンポーネントが別々のサービスに分割されることによるパフォーマンス低下を補うことができます。 レガシー・ラッパー(Legacy Wrapper)パターンを適用することで、 コンポーネントBを、共有データベースをラップする別々のユーティリティ・サービスに分離することができます。レガシー・ラッパー・パターンを再度適用することで、コンポーネントCをレガシー・システムAPIのラッパーとして機能する別のユーティリティー・サービスに分離することができます。サービスコンシューマAとコンポーネントA間のインタラクションは、コンポーネントAが最初にコンポーネントBと新しいラッパーサービスとインタラクションするように再設計することができます。サービス・コンポーザビリティの原則をサービスAと3つの新しいラッパー・ユーティリティ・サービスにさらに適用することで、4つのサービスすべてが新しいサービス・コンポジションに参加するために最適化されます。これにより、3つのコンポーネントを別々のサービスに分割することで発生するパフォーマンス・ロスを補うことができます。 コンポーネントBが共有データベースをラップする別のラッパー・ユーティリティ・サービスに分離されるように、Legacy Wrapperパターンを適用することができます。State RepositoryパターンとState Messagingパターンを適用することで、コンポーネントAとコンポーネントCの間にメッセージングリポジトリを配置し、レガシーシステムが利用できない時間帯やITエンタープライズの他の部分からのアクセスが多い時間帯に、メタデータ駆動型の通信を可能にすることができる。サービス・フェイゲード・パターンを適用して、コンポーネントAとコンポーネントDの間にフェイゲード・コンポーネントを追加し、動作の変化を補償できるようにすることもできる。サービスステートレス原則をサービスAにさらに適用することで、コンポーネントを別のラッパーユーティリティサービスに分割することによるパフォーマンス低下を補うことができます。 質問18サービスAは、共有データベースから定期的に複製されるデータを含むデータベースへの汎用データアクセスロジックを提供するユーティリティサービスです(1)。サービスAの設計には標準化サービス契約の原則が適用されているため、そのサービス契約は完全に標準化されています。サービスAのサービスアーキテクチャは、3つのサービスコンシューマによってアクセスされています。サービス利用者Aは、サービスA実装の一部であるコンポーネントを直接呼び出してアクセスする(2)。サービス利用者Bは、サービス契約にアクセスしてサービスAを呼び出します(3)。サービスコンシューマーCは、サービスA実装の一部である複製データベースに直接アクセスします(4)。サービスコンシューマーAとCが公開されているサービスAサービス契約をバイパスする理由は、セキュリティ上の理由から、サービスAサービス契約を構成するAPI内の機能のサブセットにアクセスすることが許可されていないためです。このようなセキュリティ制限を強制しつつ、否定的な形のカップリングを回避するために、サービスAのアーキテクチャをどのように変更できるでしょうか? コントラクトの一元化パターンを適用することで、すべてのサービスコンシューマーが、公開されているサービスコントラクトを介してサービスAアーキテクチャにアクセスするように強制することができます。これにより、データベースが交換されたときに問題につながる可能性のある、否定的な形の結合を防ぐことができます。次に、サービス抽象化原則を適用して、基礎となるサービスアーキテクチャの詳細を隠し、将来のサービスコンシューマが基礎となるサービス実装のどの部分にもアクセスできないように設計することができます。 コントラクトの一元化パターンを適用することで、サービスコンシューマが公開されたサービスコントラクトのみを介してサービスAアーキテクチャにアクセスするように強制することができます。その後、Service Loose Coupling原則を適用して、一元化されたサービス契約に、基盤となるサービス実装に依存または派生するコンテンツが含まれないようにすることができます。 コントラクトの一元化パターンを適用することで、サービスコンシューマが公開されているサービスコントラクトのみを介してサービスAアーキテクチャにアクセスするように強制することができます。1つ以上の代替サービス契約を確立するために、Concurrent ContractsパターンをサービスAに適用することができます。これにより、異なる認可レベルを持つサービスコンシューマが、サービスAの公開サービスコントラクトを介して異なるタイプのサービスロジックにアクセスできるようになります。 コントラクトの一元化パターンを適用することで、サービスコンシューマは公開されたサービスコントラクトのみを介してサービスAアーキテクチャにアクセスするように強制することができる。Idempotent CapabilityパターンをサービスAに適用することで、異なる認可レベルのサービスコンシューマーに対して代替サービス能力セットを確立することができる。 説明Contract Centralizationパターンを適用することで、サービスコンシューマが公開されているサービス契約のみを介してサービスAアーキテクチャにアクセスするように強制することができます。その後、サービス疎結合(Service Loose Coupling)原則を適用することで、一元化されたサービス契約に、基盤となるサービス実装に依存または派生するコンテンツが含まれないようにすることができます。これによって、否定的な形の結合を避けながら、セキュリティ制限を実施することができる。サービスAがサービスコンシューマA(1)からメッセージを受信すると、このメッセージはコンポーネントAによって処理されます。このコンポーネントはまずコンポーネントB(2)を呼び出し、メッセージの値を使用してデータベースAにクエリを発行し、追加データを取得します。コンポーネントAは次にコンポーネントC(3)を呼び出し、レガシーシステムのAPIとやり取りして新しいデータ値を取得する。次に、コンポーネントAは蓄積したデータの一部をコンポーネントD(4)に送り、コンポーネントDはデータを特定のフォルダに置かれたテキストファイルに書き込む。コンポーネントDは次に、このファイルが定期的にスケジュールされたバッチインポートによって別のシステムにインポートされるまで待機する。インポートが完了すると、コンポーネントDは成功または失敗のコードをコンポーネントAに返します。コンポーネントAは最後に、これまでに収集されたすべてのデータを含む応答をサービスコンシューマーAに送信し(5)、サービスコンシューマーAはすべてのデータをデータベースBに書き込みます(6)。データベースA、レガシーシステム、およびファイルフォルダは、IT企業内の共有リソースである。サービスAは、過去数年間で成長したサービスアーキテクチャを持つエンティティサービスである。サービス・インベントリ全体の再設計プロジェクトの結果として、あなたは、コンポーネントB、C、Dによって提供されるロジックを、サービス・コンシューマAに関連するサービスAの動作を中断することなく、3つの異なるユーティリティ・サービスに分離するために、サービスAサービス・アーキテクチャを再検討するよう求められています。 コンポーネントBが共有データベースをラップする別のラッパー・ユーティリティ・サービスに分離されるように、Legacy Wrapperパターンを適用することができます。非同期キューイング・パターン(Asynchronous Queuing pattern)を適用することで、コンポーネントAとコンポーネントCの間にメッセージング・キューを配置し、レガシー・システムが利用できない時間帯や、ITエンタープライズの他の部分からのアクセスが多い時間帯の通信を可能にすることができます。サービス・ファゲード・パターンを適用することで、コンポーネントAとコンポーネントDの間にファゲード・コンポーネントを追加し、動作の変化を補うことができる。サービス・オートノミー原則をサービスAにさらに適用することで、コンポーネントを別のラッパー・ユーティリティ・サービスに分割することによるパフォーマンス低下を補うことができます。 レガシー・ラッパー(Legacy Wrapper)パターンを適用することで、コンポーネントBを、共有データベースをラップする別のユーティリティ・サービスに分離することができます。レガシー・システムAPIのラッパーとして動作する別のユーティリティ・サービスにコンポーネントCを分離するように、レガシー・ラッパー・パターンを再度適用することができます。レガシー・ラッパー・パターンをコンポーネントDにもう一度適用し、ファイル・フォルダーへの標準化されたアクセスを提供する別のユーティリティー・サービスに分離することができます。Service Fagadeパターンを適用して、コンポーネントAと新しいラッパー・ユーティリティ・サービスの間に1つずつ、合計3つのfagadeコンポーネントを追加することができます。こうすることで、ファゲード・コンポーネントは、分離の結果発生する可能性のある動作の変化を補うことができます。サービスコンポーザビリティの原則をサービスAと3つの新しいラッパーユーティリティサービスにさらに適用することで、4つのサービスすべてが新しいサービスコンポジションに参加するために最適化されます。これにより、3つのコンポーネントが別々のサービスに分割されることによるパフォーマンス低下を補うことができます。 レガシー・ラッパー(Legacy Wrapper)パターンを適用することで、 コンポーネントBを、共有データベースをラップする別々のユーティリティ・サービスに分離することができます。レガシー・ラッパー・パターンを再度適用することで、コンポーネントCをレガシー・システムAPIのラッパーとして機能する別のユーティリティー・サービスに分離することができます。サービスコンシューマAとコンポーネントA間のインタラクションは、コンポーネントAが最初にコンポーネントBと新しいラッパーサービスとインタラクションするように再設計することができます。サービス・コンポーザビリティの原則をサービスAと3つの新しいラッパー・ユーティリティ・サービスにさらに適用することで、4つのサービスすべてが新しいサービス・コンポジションに参加するために最適化されます。これにより、3つのコンポーネントを別々のサービスに分割することで発生するパフォーマンス・ロスを補うことができます。 コンポーネントBが共有データベースをラップする別のラッパー・ユーティリティ・サービスに分離されるように、Legacy Wrapperパターンを適用することができます。State RepositoryパターンとState Messagingパターンを適用することで、コンポーネントAとコンポーネントCの間にメッセージング・リポジトリーを配置し、レガシーシステムが利用できない時間帯やITエンタープライズの他の部分からのアクセスが多い時間帯に、メタデータ駆動型の通信を可能にすることができる。サービス・フェイゲード・パターンを適用して、コンポーネントAとコンポーネントDの間にフェイゲード・コンポーネントを追加し、動作の変化を補償できるようにすることもできる。サービスステートレス原則をサービスAにさらに適用することで、コンポーネントを別のラッパーユーティリティサービスに分割することによるパフォーマンス低下を補うことができます。 問題20サービスAはサービスBにメッセージを送信します(1)。サービスBはメッセージの内容をデータベースAに書き込んだ後(2)、サービスAに応答メッセージを返します(3)。サービスAは次にサービスCにメッセージを送信する(4)。このメッセージを受信すると、サービスCはサービスDにメッセージを送信し(5)、サービスDはメッセージ内容をデータベースBに書き込み(6)、サービスCに応答メッセージを返します(7)。このサービス構成アーキテクチャでは、4つのサービスすべてがXML形式で請求書関連データを交換しています。ただし、サービスインベントリAのサービスは、サービスインベントリBのサービスとは異なるXMLスキーマを請求書データに使用するように標準化されています。また、データベースAはCSV(Comma Separated Value)形式のデータしか受け入れることができないため、XML形式のデータを受け入れることはできません。データベースBはXML形式のデータしか受け付けません。しかし、このデータベースはレガシーデータベースであり、独自のXMLスキーマを使用して請求書データを表現しており、サービス・インベントリAまたはサービス・インベントリBのサービスが使用するXMLスキーマとは異なります。 データモデル変換パターンを適用して、データモデル変換ロジックがサービスAとサービスBの間、サービスCとサービスDの間、およびサービスDロジックとデータベースBの間に配置されるようにします。データ形式変換パターンを適用して、データ形式変換ロジックがサービスAとサービスCの間、およびサービスBロジックとデータベースAの間に配置されるようにします。 データフォーマット変換パターンは、データフォーマット変換ロジックがサービスAとサービスBの間、サービスAとサービスCの間、サービスCとサービスDの間、サービスDロジックとデータベースBの間に配置されるように適用できる。 データモデル変換パターンは、データモデル変換ロジックがサービスAとサービスBの間、サービスAとサービスCの間、サービスCとサービスDの間、およびサービスDロジックとデータベースBの間に配置されるように適用できる。 Protocol Bridgingパターンは、プロトコル変換ロジックがサービスAとサービスBの間、サービスAとサービスCの間、サービスCとサービスDの間に配置されるように適用できる。 データモデル変換パターンを適用すると、データモデル変換ロジックを挿入して、サービスインベントリAとサービスインベントリBのサービスが使用する異なるXMLスキーマ間で請求書関連データをマッピングすることができます。これは、メッセージフローの適切なポイント(サービスAとサービスBの間、サービスAとサービスCの間、サービスCとサービスDの間、サービスDロジックとデータベースBの間)で実行できる。データ形式変換パターンを適用すると、データ形式変換ロジックを挿入して、サービスが使用するXML形式のデータをデータベースAが要求するCSV形式に変換し、データベースBが使用する独自のXMLスキーマをサービスが使用するXMLスキーマに変換できる。この場合、すべてのサービスがすでに同じプロトコル(おそらくHTTPまたは類似のプロトコル)を使用して通信しているため、Protocol Bridgingパターンは必要ありません。サービスAとサービスBは、実行時に状態データを延期するために同じ共有状態データベースを使用しています。3つのサービスを評価した結果、各サービスに不可知論的なロジックが含まれていることが判明しましたが、そのロジックは不可知論的でないロジックと一緒にバンドルされているため、再利用することはできません。評価では、サービスA、サービスB、および共有状態データベースがそれぞれ物理的に別々の環境に配置されているため、サービスAとサービスBが共有状態データベースとやり取りするために必要なリモート通信が、実行時のパフォーマンスを不当に低下させていることも判明しました。 Orchestrationパターンを適用すると、Official Endpoint、State Repository、Service Data Replicationパターンが自動的に適用される環境になり、サービスAとBの公式サービスエンドポイントを介して共有ステートデータベースをレプリケートできるため、各タスクサービスは専用のステートデータベースを持つことができる。 Orchestrationパターンの適用により、非可知ロジックがサービスA、B、Cに存在する不可知ロジックからきれいに分離され、サービス再利用性原則の適用により再利用の可能性が保証された新しい不可知サービスを設計する必要が生じる環境になる。State Repositoryパターンは、オーケストレーション環境でサポートされ、オーケストレーション環境にローカルに存在するため、サービスAとBで共有できる中央ステートデータベースを提供します。 Orchestrationパターンを適用すると、Compensating Service Transactionが自動的に適用される環境になり、その結果、サービスAとBがリモートでステートデータベースにアクセスすることによって生じるパフォーマンスの問題を補うために使用できる、高度な例外ロジックを作成する機会が得られる。API GatewayパターンとService Brokerパターンも自動的に適用され、集中処理レイヤーで共通の変換機能を提供し、新しい不可知論的サービスのために作成する必要があるサービスコントラクトの不一致を克服するのに役立ちます。 Orchestrationパターンは、必要なステートリポジトリのホス