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