「達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践」を執筆しました

「達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践」という本を6名の共著で執筆しました。技術評論社さんから、2022年6月4日発売予定です。電子版もでます。

gihyo.jp

Amazon はこちら。

タイトルの通り、ISUCON で出題されるようなWebサービスを例にして、Webサービスのサーバーサイドパフォーマンスチューニングを指南する内容です。通称「ISUCON本」と呼んでください。

2020年の末に、技術評論社さんからWebサービス高速化 × ISUCONに関する書籍を執筆しませんか、と藤原までお誘いをいただいたのが発端でした。

書きたい気持ちはあったものの、内容的にとても一人では書き切れる気がしなかったので、とあるISUCON関連のSlackチャンネルで一緒に書きたい人はいませんか、と募集しました。結果、6名での共著という形で本にすることができました。

執筆者のプロフィールは以下です。大変豪華なメンバーで、"ISUCON"がゲシュタルト崩壊を起こすレベルで埋まっておりますね…

藤原俊一郎 @fujiwara (2011年より面白法人カヤック。SREチーム所属。ISUCON優勝4回、出題3回)

馬場俊彰 @netmarkjp (株式会社X-Tech 5取締役CTO、株式会社iCARE技術顧問。ISUCON第一回にプロジェクターを持ち込んで参加しSELinux=Enforcingで入賞)

中西建登 @whywaita (株式会社サイバーエージェント所属。ISUCON8にて史上初の学⽣総合優勝)

長野雅広 @kazeburo (さくらインターネット株式会社所属。ISUCON1、ISUCON2、ISUCON9予選で問題作成。参加者として優勝も予選落ちも経験)

金子達哉 @catatsuy (株式会社PR TIMES開発本部長CTO。ピクシブ・メルカリを経て現職。ISUCON9予選・ISUCON6本選出題)

草野 翔 @rosylilly (宇宙海賊合同会社代表、株式会社ハンマーキットCTO、株式会社 Tech Consiglie CTO、プロモータル株式会社相談役、IPTech特許業務法人技術顧問。ISUCON9優勝、ISUCON4とISUCON10出題)

目次

  • 1章 チューニングの基礎知識 (@netmarkjp)
  • 2章 モニタリング (@whywaita)
  • 3章 基礎的な負荷試験 (@fujiwara)
  • 4章 シナリオを持った負荷試験 (@fujiwara)
  • 5章 データベースのチューニング (@kazeburo)
  • 6章 リバースプロキシの利用 (@catatsuy)
  • 7章 キャッシュの活用 (@catatsuy)
  • 8章 押さえておきたい高速化手法 (@catatsuy)
  • 9章 OSの基礎知識とチューニング (@whywaita)
  • 付録A private-isuの攻略実践 (@fujiwara)
  • 付録B ベンチマーカーの実装 (@rosylilly)

どんな人向けの本か

通称「ISUCON本」ですが、ISUCONに特化した本ではありません。一般的なWebアプリケーションやミドルウェアに対して、パフォーマンスを改善するためにはどうしたらいいかをまとめた本になります。

ただしパフォーマンスチューニングを説明するための例は、共著者の @catatsuy さんが公開している private-isu という社内ISUCONの問題を採用しています。そのため「ISUCONに学ぶ」というサブタイトルになっているわけですね。

github.com

本書「はじめに」からの引用です。

ISUCONは技術のコンテストですが、そこで題材として提供されるWebサービスは、通常のWebサービスと同様の技術で作られています。つまり ISUCON での高速化手法は、業務で作成されるような 通常のWebサービスにも適用できるのです。本書は、次のような方にお勧めします。

  • Webサービスを開発、運用しているが動作が重くて困っている
  • これまでWebサービスの速度について深く考えたことがなかった
  • ISUCONにこれから出場してみたい
  • ISUCONに出場したことはあるが、よい成績を収められなかった

本書を書いてみて改めて実感したのですが、Webサービスのパフォーマンスチューニングには関わる技術が非常に多く、多数のコンポーネントに対する知識が必要です。

しかも、これも本書内で再三触れたことなのですが、システム全体の中でボトルネックになっている1点見つけ出してそこを改善しない限り、他の何をやっても大きな性能の向上は見込めないという厄介な性質があります。

そのため、小手先のチューニングテクニックというよりは全体的な概念を掴むこと、ボトルネックを見つけてそこに向き合うことを重視してほしいなという気持ちで執筆しました。

この本に書いてあることを理解していれば、仮にISUCONに参加しても手も足も出ないことはないと思います。予選通過ラインに近いところまではいけると思いますが、実際に予選を突破できるかどうかはさすがに運次第、というところでしょうか(著者陣でも予選を突破できないことがあるのでこれは仕方ないですね)。

個人的な見所

こういってはなんですが、本編もですが付録も面白いです!なにしろ付録だけで70ページ以上あります。

付録Aは本書内で例として取り上げた catatsuy/private-isu を実際に段階を踏んで攻略してみた、いわゆる攻略記事になっています。初期スコアの650点から最終的に32万点まで500倍に性能アップするところはもちろんですが、最後にとあることをして1万点に失速するところまで含めて、なかなか面白い読み物になっていると思います。

付録Bは、ISUCON のベンチマーカーを書くためのフレームワーク isucandar を使って実際にベンチマーカーを書くための勘所を、isucandar の作者が解説しています。普段から ISUCON の作問をする人はそれほどいないと思いますが、社内 ISUCON を開催するとか、本物 ISUCON の作問が突然降ってきたみたいな場合には必読です。

github.com

謝辞

執筆のお話を頂いた技術評論社の皆様、共著者の皆様、レビューに協力していただいた皆様、ISUCONを運営しているLINE株式会社の皆様(特に@941さん)、大変ありがとうございました。

(お断り) 本書と ISUCON 12 との関連

自分は今年の ISUCON 12 の作問担当でもありますが、作問の話自体はこの本がほぼ書き上がってから来たため、本書の内容と ISUCON 12 で出題される問題の内容に、関連は特にありません。念のため。