こんにちは、KMC-ID: karakasaです。
今回は「達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践」、通称「ISUCON本」をご恵贈いただきましたので、早速読ませていただいた感想を書かせていただきたいと思います。
そもそもISUCONとは
ISUCONとは「Iikanjini Speed Up Contest」の略で、LINE株式会社が主催する、Webサービスのパフォーマンスチューニングコンテストです。
7/23に開催を控えているISUCON12オンライン予選の参加登録では、わずか数分で参加枠が埋まるほどの人気ぶりを見せています。
本書について
そんなISUCONで数々の実績を誇り、現場でも活躍する達人たちが、Webサービスを高速化する手法について解説するのが本書です。
タイトルにISUCONを冠してはいますが、単にISUCONの対策に限らず、実務で作成されるWebサービスに対しても役に立つような知見が詰まっています。
本書の内容について
本書で扱われている内容は多岐に渡ります。 モニタリングの方法やDBのチューニング、キャッシュの活用やリバースプロキシの利用など、ISUCONでも必要となる基本的なトピックについては一通り網羅されていると言えるでしょう。
本書の良いところの一つは、これらの話題についてprivate-isuという、pixiv株式会社で過去に開催された社内ISUCONにおける問題を題材に、種々の改善手法を具体的に適用して学ぶスタイルを取ってるところです。 実際にログを出力してボトルネックを解析する手順であったり、各種改善手法を適用した時に、単にスコアが上がる以外にどのような変化が見られるのか、といった内容を手を動かして学べるので、より理解が深まる形式になっているかと思います。
もう一つの良いところは、コラムなども使用して細かいチューニングの方法まで、広く浅く記載してあるところだと思います。 ISUCONにおいて、インデックスの作成やN+1問題の解消などは初心者にとってもとっつきやすい内容であり、多くの方が認知している内容だと思います。 しかし、例えばMySQLの設定(innodb_buffer_pool_size や innodb_flush_log_at_trx_commit など)について多くを知っている方々は、かなりISUCONに慣れた層になってくるでしょう。
これらのパラメータはそもそも存在を知らなければ、チューニングのしようもなければ、検索して認知することも難しいでしょう。 本書を読むことで、このようなパフォーマンスチューニングに役に立つが、そもそもその知識について知らないということすら知らないレベルの話題にも触れることができます。
結果として、パフォーマンスチューニングにおける選択肢が増えます。 N+1問題などのわかりやすい問題に対処した後に、何もすることがなくなった、次に何をすればいいのかわからない、といったことにならず、とりあえずこれを試してみよう、という動きが取れるようになるかと思います。
先日、練習のためにISUCON11の予選問題に取り組んでみたのですが、そこでも「そういえばISUCON本にこんなことが書いてあったけど、今まさに試してみたらスコアが上がるのではないか?」といった場面が多々ありました。
他にも、ISUCONの参加者側には直接的な関わりはないかと思いますが、負荷試験の実施方法や、ISUCONでの採点にも使われるようなベンチマーカーの作成法といった話題もあります。 特にベンチマーカーの作成に関しては、個人的に読み物として面白かったです。
まとめ
ISUCONに初めて参加する方の中には、スコアを伸ばすために何をしたらいいのかわからない、という方が多いかと思います。 そういった初学者がまず何をしたらいいのか、その第一歩を踏み出す参考書として本書はおすすめです。
またISUCONへの参加経験がある方にも本書はおすすめです。 先に述べたように、この書籍を読むことでパフォーマンスチューニングでとれる選択肢がかなり広がると思います。
皆さんもISUCON本を読んで、ISUCON本番に向けて頑張っていきましょう。