プロジェクトマネージャ 2013年 午前2 問17
問題文
SOA(Service Oriented Architecture)でサービスを設計する際の注意点のうち、適切なものはどれか。
選択肢
ア:可用性を高めるために、ステートフルなインタフェースとする。
イ:業務からの独立性を確保するために、サービスの命名は役割を表すものとする。
ウ:業務の変化に対応しやすくするために、サービス間の関係は疎結合にする。(正解)
エ:セキュリティを高めるために、一度開発したサービスは再利用しない方がよい。
🔒 解説は解答すると表示されます
SOAのサービス設計原則【午前2解説】
正解の理由
SOAでは、サービス同士の依存関係を小さくする疎結合が重要です。サービス間の結び付きが弱ければ、一つのサービスや業務に変更があっても、ほかのサービスへの影響を抑えやすくなります。
そのため、業務の変化に対応しやすくする設計として適切なのは、サービス間の関係を疎結合にするウです。
解法ステップ
- 設問が問うているのは、SOAにおけるサービスの設計上の注意点です。
- 「業務の変化への対応」と「サービス間の関係」に注目します。
- サービス同士の依存を小さくする疎結合は、変更の影響範囲を抑えるため、ウが適切です。
選択肢別の誤答解説
-
ア:可用性を高めるために、ステートフルなインタフェースとする
ステートフルな設計では、サービス側で利用者ごとの状態を管理します。状態を複数のサーバで共有する必要が生じるなど、可用性を高めるうえで複雑になることがあります。状態を保持しないステートレスな設計のほうが、サーバの追加や障害時の切替えをしやすい場合があります。 -
イ:業務からの独立性を確保するために、サービスの命名は役割を表すものとする
サービス名は、サービスが提供する業務上の機能や目的を表すことが重要です。「役割」を表す名前にするだけで、業務からの独立性が確保されるわけではありません。 -
ウ:業務の変化に対応しやすくするために、サービス間の関係は疎結合にする
適切です。サービス間の依存を小さくすることで、個々のサービスの変更がほかのサービスに波及しにくくなります。 -
エ:セキュリティを高めるために、一度開発したサービスは再利用しない方がよい
SOAでは、サービスを再利用できるように設計することが重視されます。再利用を避けても、セキュリティが高まるとは限りません。セキュリティは認証や認可、通信の保護などによって確保します。
よくある誤解
- 疎結合なら、サービス同士に依存がまったくない
依存がゼロという意味ではありません。サービスの機能を利用する以上、必要なインタフェースを介した関係はあります。 - ステートレスなら、サービスは状態を一切扱わない
サービス側で利用者の状態を保持しないという意味です。必要な状態を要求に含めるなど、別の方法で扱うことはできます。 - 再利用するとセキュリティが低下する
再利用そのものが危険なのではありません。アクセス制御や脆弱性対策など、適切な管理が必要です。
補足コラム
SOAは、業務上の機能をサービスとして提供し、それらを組み合わせてシステムを構成する考え方です。サービスの独立性を高め、疎結合に設計することで、業務やシステムの変更に対応しやすくなります。サービスの再利用性や明確なインタフェースも、設計上の重要なポイントです。
FAQ
Q. 疎結合にすると、サービス間の連携は不要になりますか?
A. いいえ。サービス間の連携は必要ですが、相手の内部実装に過度に依存しないよう、明確なインタフェースを介して連携します。
A. いいえ。サービス間の連携は必要ですが、相手の内部実装に過度に依存しないよう、明確なインタフェースを介して連携します。
Q. ステートフルなサービスは、必ず可用性が低くなりますか?
A. 必ずではありません。ただし、状態の共有や引継ぎが必要になるため、ステートレスな設計に比べて可用性を確保する仕組みが複雑になる場合があります。
A. 必ずではありません。ただし、状態の共有や引継ぎが必要になるため、ステートレスな設計に比べて可用性を確保する仕組みが複雑になる場合があります。
関連キーワード: SOA、疎結合、ステートレス、サービス再利用、サービス指向アーキテクチャ

\ せっかくなら /
プロジェクトマネージャを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

