Part 6
ISUCON に挑む
- 計測 数字を取る
- 改善 1か所を直す
- 再計測 効果を見る
いよいよ本題です。 渡されたアプリを速くする作業は「計測してボトルネックを特定し、そこだけ直す」の繰り返しです。 この Part では計測結果の読み方と、ISUCON で最頻出の改善パターン(N+1 の解消、インデックス、キャッシュ)を練習します。
この Part の所要時間は 4〜6 時間が目安です。 終えると、計測結果からボトルネックを選び、N+1 の解消、インデックス、キャッシュを試して効果を測れます。 ここで扱う改善の順序や判断基準は、ISUCON での実戦上の目安です。
- ISUCON のルールと戦い方 競技の形式と 8 時間の使い方、チーム内での役割分担を押さえます。
- 推測するな、計測せよ alp とスロークエリログの集計を読み、どこを直すかを決める練習をします。
- N+1 問題 ループの中のクエリが DB への往復を N 回に増やす、ISUCON 最頻出のボトルネックを直します。
- インデックスで速くする スロークエリを EXPLAIN で確かめ、インデックスを張り、速くなったことを確認する手順を型にします。
- キャッシュ 同じ結果を毎回作らない。オンメモリキャッシュの実装と、「いつ消すか」「再起動で消える」という 2 つの難問を扱います。
- pprof でボトルネックを探す SQL でもエンドポイント単位でもなく Go のコード自体が遅いとき、CPU プロファイルで犯人の関数を特定します。
- 素振りと過去問 練習環境の入手先、素振りの型、本番前のチェックリスト。この教室の締めくくりです。