1. 計測・監視の基礎
科学的手法で欠かせない統計分析
Webパフォーマンスの計測・監視の基礎講座へようこそ。
この講座では、Webパフォーマンスの計測・監視についての基礎に必要な知識を解説します。
如何に証明するか?
Webシステムを計測・監視を開始する理由は様々あると思います。
どんな理由で始めるにせよ、計測・監視の最終的な命題は、「如何に証明するか?」の一言に尽きます。
- Webパフォーマンスチューニングのために、ボトルネックを特定したい。→「その箇所がボトルネックであることを証明したい」
- Webパフォーマンスチューニングを行って、高速化できたことを確認したい。→「高速化できていることを証明したい」
- Webシステムの可用性に問題なく、運用できていることを確認したい。→「可用性に問題がないことを証明したい」
- Webページが高速に表示できていることを確認したい。→「表示速度が高速に表示できていることを証明したい」
科学的方法による証明
現代社会において、何かを証明するのは科学的方法によって行われます。
技術に関する分野は、科学的方法を用いることが肝要です。
それでは、科学的方法とは何でしょうか?
Wikipedia(英語版)によると、「科学的方法」について、以下のように記載されています。
科学的方法とは、知識を得るための経験的手法であり、少なくとも17世紀以降の科学の発展を特徴づけてきた。
(前世紀にも著名な実践者がいた。詳細は科学的方法の歴史という記事を参照)。
この方法では、注意深く観察し、観察されたものに対して厳格な懐疑心を働かせますが、これは、認知的な思い込みが観察結果の解釈を歪めてしまう可能性があるためです。
このような観察に基づいて、帰納法により仮説を立てること、仮説の検証可能性、実験、仮説から導かれた推論の測定に基づく統計的検証、実験結果に基づく仮説の改良(または排除)が含まれます。
これらは科学的方法の原則であり、全ての科学的事業に適用できる一連の決定的なステップとは異なります。
科学的手法は、以下のステップから成り立ちます。
- 観察と疑問
- 主題分野の調査
- 仮説
- 実験によるテスト
- データの分析
- 結論の報告
技術者としてパフォーマンスチューニングをしたり、SREとして仕事をする際、システムの高速化や安定稼働を保証しなくてはいけない場合、証拠に基づく主張が必要です。
では、その証拠はどれだけ確かなものなのか?
そこで、科学的手法が用いられるのです。
科学的手法を用いずに、「私はきちんと高速化しました」とか、「システムは正常稼働しています」と主張すると、反論の余地が多々あります。
工学分野では、科学的手法、特に統計的品質管理は世界標準となっているので、この方法を使うのが最も確実です。
データサイエンティストとして分析する
Webパフォーマンスもデータ分析ですから、データサイエンティストの領域です。
データサイエンティストの三要件というものがあります。
- 統計学
-
データの取得の仕方から分析、そして推測までを網羅した知識。
統計学は、記述統計と推測統計があります。- 記述統計(統計検定3級程度) … データ分析して現状を把握する
- 推測統計(統計検定2級以上) … 標本のデータから全体像を説明するモデルを構築する
- 記述統計(統計検定3級程度) … データ分析して現状を把握する
- 情報学
-
大量のデータを処理するためのIT知識と、データの品質保証、情報の価値に関する知識です。
今は、特にIT分野では、標本の大きさが大きくできる時代です。
Webパフォーマンスの場合、大量の幾層ものデータを扱います。
それらのデータを有機的に結びつけて、可視化し、因果関係の明確化に向けて、次の実験計画の材料を提供していきます。- バックエンド
- サーバ関係のデータ
- サーバサイドのプロファイリングデータ
- ネットワーク
- BGP
- DNS
- レイテンシ、ホップ数、パケットロス
- TCP接続時間
- 待ち時間
- 読込時間
- フロントエンド
- フロントエンドのプロファイリングデータ
- HTMLのDOM構造データ
- CSSの複雑度の解析データ
- JavaScriptの計算量の解析データ
- バックエンド
- ドメイン知識
-
分析の対象分野に関する知識です。
Webパフォーマンスの場合は、性能に関する理論と、実装に関する知識になります。
Webパフォーマンスは、ハードウェア、ネットワーク、OS、アプリケーション、プログラミング言語など、広範に知識を求められます。
統計学の基礎知識を身に着けないと、初心者がやりがちな誤りを犯してしまいます。
Webパフォーマンスの改善が上手く行っていない、もしくは、高速化されたと謳っていても実際は高速化されていないケースを見ると、統計学の基礎知識の欠落に起因するところが大きいようです。
まずは統計検定4級(中学レベル)、そして統計検定3級(高校レベル)を学んでからWebパフォーマンス改善に入った方が良いでしょう。
データサイエンティストの三要件は、以前は一人が身につけておくべきものとされましたが、実際はかなり難しいです。
そこで、現在では、チームとして、この三要件をカバーすると良いと言われています。
以下のように、統計学を共通知識として、カバーすると良いでしょう。
- 統計学+情報学
- 統計学+ドメイン知識
品質管理としてのWebパフォーマンス計測・監視
Webパフォーマンスは、専門用語でいうところの「非機能要求」に該当する事項です。
非機能要求の内、性能と可用性に関する要求です。
ISO 9000では、品質について「本来備わっている特性の集まりが、要求事項を満たす程度」と定義しています。
Webパフォーマンスの計測・監視は、品質管理として行うべきものなのです。
品質管理の目的
品質管理の目的は、「品質不適合品を世の中に出さない」ことです。
品質不適合とは、何でしょうか?
品質には、3つの概念があります。
- 総合品質(顧客満足)
- 製品やサービスがもたらす顧客満足。また顧客の使用に対する適合度合い。
- 設計品質
- 目標として狙った品質
- 適合品質(製造品質)
- 設計品質を目標に実際に作り出された製品やサービスの品質。
つまり、「品質不適合品を世に出さない」とは、設計品質に満たないものを世の中には出さないという事です。
品質不適合品ができてしまうのは、どうしても仕方ないことだとしても、それを世に出さない事で、社会や顧客から信頼を得ることができます。
そのための品質管理であり、品質検査です。