kavo’s diary

備忘録

技術書典9でISUCONの初心者向け性能改善プロセス解説本を出しました

技術書典9にて、サークルFratty(@team_fratty)として「Webサービスチューニングコンテスト ISUCONのススメ ~初心者向けに環境構築から 計測・改善まで解説する本~」を出しました。技術書典のページは文字数・画像枚数に制限があるため、本記事で+αの内容を紹介します。以下は本書の表紙です。

f:id:kavohtn:20200918025748p:plain:w250

基本情報

概要

性能改善ができるエンジニアになりたい人へ ISUCONに参加しよう!

ISUCONとは、LINE株式会社が運営窓口となって毎年開催している「お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル」です。数百チームの参加者が一斉に、朝から晩まで、同じWebサービスのチューニングに取り組み、性能の高さを競います。6年間毎年参加し続け、同人誌を書いてしまうくらい楽しいコンテストです!参加者がもっと増えたらと思い、これまであまり見かけなかった、ボトルネックを発見・修正するまでの観察や思考の流れを解説する本を書きました。本書がISUCONをより楽しむきっかけになったり、ISUCONや性能改善がうまくなりたいと思う方の役に立つことを期待しています。

【内容】

本書ではISUCON9予選問題(2019年)を題材にしています。 練習用の環境構築からWebサービスの性能計測、修正とその結果評価までを具体的な手順とともに解説します。 本書を読むことで性能改善のプロセスが身に付き、ISUCONでの動き方が分かります。 コマンドやスニペットはコピペできるようにGitHubで公開しています。

https://github.com/team-fratty/rec4isucon

【想定読者】

  • Webサービスの性能改善ができるようになりたい」
  • 「ISUCONに参加してみたいが、どのように勉強すればよいか分からない」
  • 「ISUCONに参加したが、何をすればよいか分からなかった」

という方を想定読者としています。 また、Linux OSの基本的な操作を前提知識としています。

【環境等】

本書の作業手順は次の環境で書かれています。

  • 作業用ローカルPCのOS:Windows
  • 構築するサーバのインフラ:Google Cloud Platform
  • 構築するWebサービスの言語:Go

目次

f:id:kavohtn:20200918032233p:plainf:id:kavohtn:20200918032238p:plain

本文紹介

本書のメインである環境構築、性能改善:計測・修正を抜粋して紹介します。

第3章 環境構築

第3章ではISUCON9予選問題を題材に、GCP上で練習用サーバを構築する方法を解説しています。

f:id:kavohtn:20200918035956p:plainf:id:kavohtn:20200918040016p:plainf:id:kavohtn:20200918040026p:plain

第4章 性能改善:計測

第4章:計測の節では、リクエスト単位・処理ブロック単位・SQL単位での計測と、ボトルネックを特定する流れを解説します。

f:id:kavohtn:20200918040112j:plainf:id:kavohtn:20200918040115j:plainf:id:kavohtn:20200918040121j:plain

第4章 性能改善:修正

第4章:修正の節では、計測結果からWebサービスの修正内容を導出し、修正→再計測→効果測定を行う性能改善のプロセスを解説します。

f:id:kavohtn:20200918040148j:plainf:id:kavohtn:20200918040153j:plain

以上、ISUCONのススメの紹介でした。