サービスが重くなるとキャッシュを増やしたりインスタンスをスケールアップしたりと、とりあえず思いつく対処をしてしまう。でも本当のボトルネックがどこにあるのかを特定しないまま手を打っても、根本的な解決にはならないし、コストだけがかさんでいく。『達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践』は、ISUCONで結果を出してきた著者たちが、勘に頼らずボトルネックを特定して改善する型を体系的に教えてくれる本だった。
チューニングの基礎知識から負荷の考え方を叩き込まれる
本書はまず「速さとは何か」「Webサービスの負荷とは何か」という基礎知識の章から始まり、必要十分なキャパシティをどう見積もるかという考え方を丁寧に説明している。闇雲にスペックを上げるのではなく、まず自分のサービスがどれだけの負荷に耐えられるべきかを定義するところから始める姿勢に、これまでの場当たり的な対応を反省させられた。
モニタリングの章がボトルネック特定の起点になる
続くモニタリングの章では、インフラにおけるテストとしての監視の位置づけから、監視の種類、手動監視、監視ツールの使い方までが解説されている。ここで学んだアプローチのおかげで、感覚ではなく数値に基づいてボトルネックを特定する習慣がついた。
読んでよかったポイント
- 負荷の考え方の章を読んでから、スケールアップする前に「本当にCPUがボトルネックなのか」を確認する癖がついた
- モニタリングの章のおかげで、障害が起きたときにまず何を確認すべきかの優先順位が整理できた
- サンプルのWebサービスを題材に手を動かしながら学べる構成で、読んで終わりにならず実際にチューニングの手順を体験できた
- ベンチマーカーの作り方まで解説されていて、負荷をかける側の視点も持てるようになったのが大きかった
- ISUCON参加者向けの内容にとどまらず、本番サービスの日常的な運用改善にそのまま応用できる知見が多かった
さらに広げて読むなら
障害調査そのものをオブザーバビリティの観点から強化したいなら、障害が起きてから調査を始めているSRE・インフラ担当者へ。New Relicでオブザーバビリティを実装できるようになる一冊も合わせて読むと、チューニングと監視の両輪が揃う。
まとめ
勘に頼ったチューニングは、いつか限界を迎える。まずは本書のモニタリングの章を参考に、自分のサービスの負荷状況を数値で可視化するところから始めてみてほしい。