今年もISUCONに参加してきた
去年に続き、今年も同じメンバーで参加してきた。
ISUCON参加はこれで3度目になる。
bmf-tech.com - ISUCON10に参加してきた
この1年間はメンバーと去年のKPTを元に、ボトルネックの調査までのフローやオペレーションの練習、全ISUCON過去問を見て出題傾向や解法のパターンなどの勉強に専念してきたが、予選敗退という結果に・・
これまで勉強してきたことや練習したことはそれなりに実になっており、本番でもそつなく作業することができたり、想定していたタイムスケジュールどおりに動けたりしていたので、去年よりは良い動きはできたと思うが、スコア伸ばすためのアプローチが中途半端な結果に終わってしまった。時間が足りなかったorz
去年と違うところ
去年はオフラインで参加したが、今年は時世を考慮してオンラインで参加したので、情報共有のツールを検討する必要があった。
オンラインホワイトボード系のツールは色々あるが、会社でもよく使っており、手に馴染みやすいmiroを使ってみた。
当日の調査状況だったり、終了後の振り返りなどに活用。
チャットツールはDiscordつなぎっぱ。AirPodsだと電池切れするので、有線のイヤホンも用意しておくことで音声周りで時間を無駄にすることはなかった。
やったこと
アプリケーション側を中心の作業メンバーが2人、インフラ+アプリケーション少々が1人(自分)という感じで以下作業した。
- レギュレーション熟読
- アプリケーションマニュアル熟読
- 競技環境構築(cloud formationポチるだけ)
- デプロイ環境整備
- pprof導入
- alp導入&アクセスログ分析
- プロセス確認
- アーキテクチャ構成確認、各種ミドルウェアのバージョン、設定確認
- slowquery設定&mysqldumpslow
- システム負荷チェック
- DB構成確認
- 画面構成確認
- エンドポイント一覧整理
- Nginxチューニング
- Cache-Controlヘッダ調整
- N+1クエリ解消
- DBに保存されている画像バイナリをファイル保存するための各種作業(初期データ生成のためのバッチ処理、画像データ書き込み・参照のあるAPIの調整など→ベンチマーカーの仕様チェックで怒られてリリースできなかった)
- appとdbにサーバー分割(app1台、db1台。3台目はテスト環境のように使うだけでリソースをフル活用できなかった。。)
- MySQL、Nginxのログ出力停止(終盤)
レギュレーションやマニュアルをちゃんと読み合わせ時間と、ボトルネック把握のための準備・調査時間(改善のインパクトが小さいところに時間を大きく使わないようにすることを強く意識してた)を十分に取るようスケジュールを組んだ。 チューニング作業自体は午後13時くらいから始めた。(チューニング作業をもう少し早めに始められるようにするのは次回までの宿題の一つ)
所感
まだできることが全然あるのに作業が間に合わないという悔しい思いをした。
この1年間、2~3週間に1回はチームでオンライン勉強会してきたのだが、こんなに時間が立つのが早いとは・・
来年も参加したい気持ちなのでまた1年間精進して力をつけて参加する。
来年こそはスコアをがしがし上げれるように・・
P.S. 運営の皆様、ありがとうございました。
今年もすごく楽しかったです!