LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問28
性能・拡張性の設計/性能見積もりと評価あるAPIの応答時間を計測したところ、平均値が80ms、p50(中央値)が70ms、p99が3,000msだった。この計測結果の解釈とSLO設計に関する説明として、適切でないものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)
- Ap99が3,000msとは100リクエストに1件(1%)が3秒以上かかることを意味し、1秒あたり100件のアクセスがあるサービスでは毎秒1件のリクエストがこの遅延を体験する計算になる
- B平均値が80msと低いためSLO上は問題ないと判断でき、p99が3,000msでも大多数のユーザーへの影響は軽微であるとしてSLOの指標から除外してよい
- Cマイクロサービス構成では1件のリクエスト処理で複数の下流サービスを呼び出す場合があり、各サービスのp99が連鎖してエンドツーエンドの応答時間が悪化しやすい
- D平均値80msは少数の極端に遅いリクエストの影響を受けるため、大多数のユーザーが体験する応答時間の代表値としてはp50のほうが実態に近い
正解:B
解説
平均値だけをSLO指標にすると、少数の極端に遅いリクエストが指標上に現れない。p99が3,000msというのは全リクエストの1%が3秒以上かかることを意味し、アクセス量が多いサービスでは毎秒・毎分単位で多くのユーザーに深刻な体験を与える。SREの実践では平均値よりもp99やp95などのパーセンタイル値をSLO指標として採用するのが標準的。「平均値が低いからp99は除外できる」は誤った判断であり設計上の見逃しにつながる。
選択肢ごとの解説
- A誤り。p99の定義として正確な記述。1%の確率で3秒超えることがアクセス数に比例して積み上がり、利用者体験への影響を定量的に示している。正しい記述。
- B正しい。平均値が低くてもp99が高い場合、一定割合のユーザーが深刻な遅延を体験している。SLOにパーセンタイル指標を含めないとこの問題が見えなくなる。「平均でSLO達成しているからp99は除外でよい」は誤った判断。これが誤りの選択肢。
- C誤り。マイクロサービスではファンアウト呼び出しにより各サービスのテールレイテンシが連鎖する(tail latency amplification)。実際に問題になるパターンとして正しい記述。
- D誤り。平均値は外れ値の影響を受けやすく、少数の極端に遅いリクエストが平均を引き上げても大多数の体験を正確に反映しない。中央値(p50)のほうが「代表的なユーザー体験」の指標として適切という記述は正しい。