ISUCON本に込められた想い
――皆さんの自己紹介と、ISUCONとの関わりについて教えてください。
藤原:藤原俊一郎(@fujiwara)です。面白法人カヤックでSREをやっています。ISUCONは初回から関わっていて、過去4回の優勝と、今年のISUCON12の出題を含めて3回の出題をするなど、12年間ずっとISUCONに関わり続けてます。
草野:草野翔(@rosylilly)です。宇宙海賊合同会社の代表と、他諸々を兼任しています。ISUCONは3回目で初めて出て、そこからずっと関わっています。ISUCON 9で優勝して、ISUCON4と10で出題を担当しました。ISUCONのベンチマーカーが好きなので、みんながISUCONのベンチマーカーを書いてくれると嬉しいなと思ってます。
長野:長野雅広(@kazeburo)です。さくらインターネット株式会社でさくらのクラウドなどのサービスのSREをしています。今回のISUCON12では予選落ちでしたが、ISUCONの創設に関わり初回、第2回と問題作成を行ったあと参加者や問題作成などでずっと関わっています。ISUCONの問題をやりこむのが好きです。
金子:金子達哉(@catatsuy)です。株式会社PR TIMESでCTOをしています。ISUCONは4回目から毎年出ていて、9回目の予選と6回目の本戦は出題者側をやりました。
中西:中西建登(@whywaita)です。株式会社サイバーエージェントで、社内向けのクラウド基盤の開発をしています。ISUCONは5回目から出ていて、ISUCON8では学生として初優勝、10回目で運営として、インフラ提供を主導しました。今回開催されたISUCON12は予選1位突破できました。
馬場:馬場俊彰(@netmarkjp)です。株式会社X‐Tech 5で取締役CTOと、株式会社iCAREで技術顧問をしています。ISUCONは3回目以外は出場していて、1回目は入賞、12回目の今回は本選に出場します。
――『達人が教えるWebパフォーマンスチューニング』はどういった本なのでしょうか? 本の内容や特徴について教えてください。
藤原:この本は、ISUCONに出てくる問題を題材として、世の中のWebアプリケーションによくある、パフォーマンスの劣化の要因やその見つけ方を学んで、システムを速く動かせるようになるための本です。なので、ISUCON自体の解説本ではなくて、あくまでISUCONの問題をサンプルとした本です。
付録は、割とISUCONに特化した内容になっています。付録Aでは、ISUCONの問題を例にとってパフォーマンスチューニングの実例を説明しています。付録Bは、ベンチマーカーと呼ばれるソフトウェアの書き方の解説です。ISUCONは題材となるWebアプリケーションと、それに負荷をかけるベンチマーカー、両方があって初めて成立します。ベンチマーカーをどうやって作るか、どういうことに気をつけて書くといいかについて紹介しています。
――皆さんはそれぞれ、どんな内容を書かれたのですか?
馬場:1章は、基礎知識ということで、パフォーマンスチューニングをどう進めるといいのか、どうすると結果が出せるようになるのかという、基本的な考え方、押さえなければならないところを説明しています。これを知っていると、ISUCONに出たときに何に取り組めばいいか分からなくなることはないと思います。
中西:2章では、モニタリングについて解説しました。なぜモニタリングを行うのか、モニタリングの考え方や、ボトルネックの見つけ方について紹介しています。
藤原:3章は、実際に手を動かしていく章になっています。ここまで1章、2章で説明された概念を理解した上で、アプリケーションに対してどのように負荷をかけて、その結果をどう読んだらいいのかを、実例をもとに解説しています。
4章は、3章を少し高度にした章です。普通のWebアプリケーションでは、ユーザーがトップページに来て、ログインして、マイページを見て……、とアクセスします。そのような実際のユーザーの行動を模したリクエストを送り、システムのパフォーマンスを知るためにはどうしたらいいかという説明になっています。
長野:5章はデータベースのチューニングについてです。データベースの基礎的な内容を最初に紹介し、ISUCONでもよく使われているMySQL中心に、データベースの負荷を調べる方法や、スローログをとって解析する方法などを紹介しています。何をしたらいいのか全く分からない状況から抜け出せることを目標にしました。
金子:6章から8章まではWebアプリケーション開発をやったことがあるけど、どうすれば高速化できるのか分からない人におすすめの内容です。6章は、ISUCONでよく使われているNginxというリバースプロキシについて、7章ではキャッシュについて、8章では、CDNやオブジェクトストレージサービスを紹介しています。
中西:9章は、Linuxの基礎知識やチューニングについて書きました。クラウド時代になって、OSのパラメータをいじることは少なくなってきいますが、OSについて知っていることで、ボトルネックになったときすぐに判別できるようになってくると思っています。
藤原:付録Aは、実際のISUCONの問題を、この本で紹介したテクニックを使って高速化してみた実例を紹介しています。実際に本書のテクニックを適用してみると、最初のスコアは650点のところ、最終的には500倍の30万点にまでなります。
草野:付録Bは、ISUCON10で作ったisucandarというベンチマークフレームワークを題材に、ベンチマーカーを作るときの考え方や気を付けることを書いています。