LinuCレベル4 システムアーキテクト システムアーキテクチャ 問10
システムアーキテクチャ/アーキテクチャの設計原則と主要パターン業務アプリケーションの構造を「レイヤー(layer)」と「ティア(tier)」の観点で設計する。説明として適切でないものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「システムアーキテクチャ」に対応。実際の試験問題ではありません)
- Aレイヤーはプレゼンテーション・業務ロジック・データアクセスのように責務で分けたもので、1つのプロセスにまとめて配置することもできる
- BWeb・AP・DBを別々のサーバーのティアに分けると、ティアの間にファイアウォールを置き、DBを外部から直接到達できない位置に隔離しやすい
- Cレイヤー間の依存を上位から下位への一方向に限っておくと、下位レイヤーの実装を差し替えたときに上位レイヤーへ及ぶ影響を抑えられる
- Dレイヤーとティアは1対1に対応するものなので、責務ごとのレイヤーを分けるときは、それぞれを別々のサーバーに配置する構成にする
正解:D
解説
レイヤーは責務による論理的な分割、ティアはどのサーバー(プロセス)に配置するかという物理的な分割で、両者は独立した設計判断です。3つのレイヤーを持つアプリケーションを1台のサーバーにまとめて配置することも、複数のレイヤーを1つのティアに同居させることもできます。ティアを分けると、ティアごとの拡張やネットワーク上の隔離がしやすくなる一方、ティア間の通信がネットワーク越しになり遅延や運用対象が増えます。レイヤーの依存方向を一方向に限るのは、変更の影響範囲を閉じ込めるための基本的な設計原則です。
選択肢ごとの解説
- A誤り(正しい記述)。レイヤーは論理的な分割なので、複数のレイヤーを1つのプロセスに同居させる配置も可能です。
- B誤り(正しい記述)。ティアを分けると境界にファイアウォールを置けるため、DBを内側のセグメントに隔離する構成が取りやすくなります。
- C誤り(正しい記述)。上位が下位だけに依存する形にすると、下位の実装を差し替えてもインターフェースが変わらない限り上位は影響を受けにくくなります。
- D正しい(誤っている記述)。レイヤーとティアは独立した概念で、1対1に対応させる必要はありません。3レイヤーのアプリケーションを1台や2台に配置することもできます。