msksgm’s blog

msksgm’s blog

Webエンジニアです。日々の勉強記録、技術書感想、美術観賞感想を投稿します。

「達人が教えるWebパフォーマンスチューニング」感想

概要

達人が教える Web パフォーマンスチューニングを読みました。 感想を記述します。

gihyo.jp

目的

友人たちと ISUCON チームを結成したため、ISUCON の勉強のために購入しました。 また、オブザーバビリティ(o11y)やインフラにも興味があるため、勉強のとっかかりにできればと考えていました。

事前知識

本書を読む前に、パフォーマンスの知見はそれほどありませんでした。 なお、本書を読む前に知人たちとの ISUCON 勉強会で本書の付録を読み進め、private-isuを環境構築して本書のパフォーマンス改善を実践しました。 そのため、本編は付録の後に読みました。

読了時間

付録の周回ベースで読み進めていたため、本書の内容を隅々まで読んでいませんが、付録を周回していた時間も含めると、30 時間ぐらい時間をかけたと考えています。 具体的には、k6 の解説や、ほかの部分も部分的に読み飛ばしていました。

感想

私のような初心者でも、パフォーマンスチューニングに入門でき、具体的な改善手法に加えてパフォーマンス改善の基礎知識も得られる書籍でした。 本書の付録の private-isuで手を動かしながら学び、一通り付録の改善手順を学んだ後に、本編の理論を学ぶことをお勧めします。

具体的には、パフォーマンスが悪い箇所(MySQL のスロークエリ、レスポンスタイム)を計測し、最も効果がありそうな箇所から 1 つずつ改善する方法を学べます。 改善手法としては、データベースへのインデックス追加、N+1 問題の解消、静的ファイルの nginx による配信、外部コマンド実行の削減など、実践的な内容が網羅されています。 本編の理論は付録で触れない部分についても記載されており、パフォーマンスに限らず Web アプリケーションにおいて重要なことを学べます。 加えて OpenTelemetry(OTel)を導入して APM ツール(Mackerel、New Relic)への接続し、トレースの可視化を通じて、o11y に対する実践的な知見を深められました。

一点注意を挙げるとしたら、付録を実践するために、高速にデプロイする手段を自前で用意することです。 私は友人たちとの ISUCON チームで友人の 1 人が用意してくれた、デプロイ環境があったため容易に周回できました。 デプロイプロセスが億劫だと、周回しないことが考えられるため、余力があればデプロイ周りの整備をやった方が良いと思いました。

次に関連で勉強すること

本書を完全に理解したとは言えませんが、目的が ISUCON と o11y のため、本書への注力はやめて以下に取り組みます。

  • ISUCON に参加するには実力が足りないため、ISUCON チームの自主練に励む。private-isu で 100 万点以上のスコアを目指す
  • o11y 知見を深めるために OTel Collector を手を動かしながら理解を深めていく

まとめ

きっかけは、ISUCON チームの提案でしたが、ISUCON の基本的なことを学びながら、中長期的に興味があるインフラと o11y について学べました。 読書によるインプットにこだわりすぎないように、「次に関連すること」で記載した、ISUCON の自主練と OTel Collector に取り組んでいきます。