過去問ドリル

LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問22

性能・拡張性の設計/性能見積もりと評価

Web→AP→DBの3層で構成するWebシステムで、エンドツーエンドのレスポンスタイム要件を1,000msと定めた。性能設計における考え方として最も適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)

正解:A

解説

エンドツーエンドのレスポンスタイム要件を各コンポーネントに割り振るバジェット配分は、設計段階で性能問題を早期に発見するための重要な手法です。ネットワーク遅延・各層の処理時間を積み上げた合計がエンドツーエンドの要件に収まるよう各コンポーネントに目標を定めます。均等配分が適切とは限らず、1リクエストで何十回も往復するAP-DB間のDB処理など、コンポーネントの特性や呼び出し回数に応じた割り振りが必要です。コンポーネントごとの目標があることで、テスト時のボトルネック特定と改善対象の絞り込みも容易になります。

選択肢ごとの解説

  • A正しい。エンドツーエンド要件を各コンポーネントへ割り振ったバジェットを設けることで、設計・測定・改善の基準を明確にできます。
  • B誤り。各層の目標を独立して設けても、合計がエンドツーエンドの要件を超えれば利用者はSLAを満たせません。コンポーネントの合計が全体の要件に収まるよう割り振ります。
  • C誤り。設計段階でバジェットを割り振らないと、どの層に問題があるか判断する基準がなく、実装後の問題発見が遅れます。
  • D誤り。均等配分は合理的に見えますが、DBへの呼び出し回数が多い層や処理の重い層では均等配分が不適切になります。特性に応じた割り振りが必要です。
LinuCレベル4 システムアーキテクトの問題を演習モードで解く