ISUCON11に参加しました

2021-08-24
8/25/2021,

8月21日に開催されたISUCON11予選に参加しました。
チームはNaruseJunで、メンバーはsekaiとtakashi_trapです。

結果は最高スコア1173984、最終スコア919720で予選3位で本戦出場を決めました。
ISUCON9は本戦と他の予定が被り辞退、ISUCON10は再起動試験に失敗してしまったので本戦出場は3年ぶりになります。
完全にISUCON参加記ブログになっている…

予選までにやったこと

去年と同じチームで参加することになったのですが、去年に比べてメンバー3人ともが忙しくなっていたのであまり練習はできませんでした。
チームで1週間前に集まって軽く作戦会議を行いどんな準備をしようかという話とISUCON用ダッシュボードにどんな機能を追加しようかを決めたのと、2日前にISUCON11-priorを使って初動と再起動試験の動きを確認したくらいでした。
毎年継ぎ足してきたチートシートや初動用のAnsibleとかを使い回せたのが良かったと思います。

戦略

  • Zoomで繋ぎっぱなしで戦う
  • Gitで管理する
    • /home/isucon以下にリポジトリをクローンしてきてwebappディレクトリにはシンボリックリンクを貼る
    • GitHubな機能(issue,PRなど)は使わない。基本的には話しながらやっているのでその時点では誰が何をやっているか把握できているはず。確認するのもそこまで時間はかからない。
      • その分後から振り返るのは大変ですね…
  • デプロイはサーバー上
    • make deployでmasterブランチを持ってきてホストごとに違うdeploy.shを実行するような準備をしていた
    • ミドルウェアの設定ファイルは一つ一つcpして置き換えるように
    • 必要なビルドやファイル配置、ミドルウェアの再起動などなどはdeploy.shで実行するように
      • ホストごとに細かい調整ができるので良かったと思う
    • make deploy BRANCH=<ブランチ名>でブランチ別にデプロイできるように
      • 「今サーバー使っていいですか?」みたいな感じで声かけあってデプロイ→ベンチ→計測を回す
      • ブランチでデプロイしてベンチ回してうまく回ったらmasterにマージする
  • 役割分担
    • 全員が各自で計測→分析→改善していく
      • 何やるかは宣言してから、必要があれば協力求めたり引き継いだり
    • それでもゆるーく得意分野はあるので↓みたいな感じで進みがち
    • to-hutohu
      • マニュアルをちゃんと読む
      • マニュアル読むとできる系実装(遅延させてもいいとか)
      • 自明インメモリキャッシュ
    • sekai
      • SQL系(インデックスとかN+1とか)
      • 実装重い・飛び道具とか
    • takashi_trap
      • SQL系
      • ミドルウェア設定
      • ちゃんと実装する必要がある系

自分はちゃんとマニュアル読んで問い合わせ受けられるようにしてましたが、自分が全部噛み砕いて答えるってよりは「~~って変更してもいいんだっけ?」みたいな疑問が出たときにマニュアルに言及があったかを覚えてて答えるくらいの索引的ポジションでした。

個人個人でISUCONの練習しててそれなりにできるようになってるならきっちりロールを決めるよりそれぞれが改善のループを回したほうが良さそう?

予選中のこと

基本的にはsekaiの書いてくれた予選参加エントリ( ISUCON11予選に参加した | 6715.jp )を読んでもらうのが詳しくていいと思います。

14時くらいからのベンチ回すごとにどんどん点数が上がっていく間はチームの雰囲気もめちゃくちゃ熱かったです。

良かったこと

  • 素早く初動をこなせた
    • sekaiの用意してくれたAnsibleのおかげで固定で入れるべき秘伝のタレとかをスッと入れることができた
  • Pproteinが最高
    • App, Nginx, DBのログ取得・計測をワンクリックでできて他メンバーとも共有できたのが良かった
    • 「今の最新の結果の~~が~~になってるから」とかで話せるのが快適過ぎる
    • 本戦に向けて更に改善が入るみたいなので期待大
  • 全体的にコスパよく改善を入れられた
    • 残ってるN+1とかそこそこあるけどちゃんと計測して効く改善を入れていくことができた
    • /api/trendとかもう少し大きな改善を入れようとしたけどバグらせたのですぐに諦めて軽い修正入れられたところとか

感想・本戦に向けて

問題の得点の幅が広くてどんどん点数が上がっていくのが楽しかった問題でした。やっぱり大きい数字はテンション上がりますね。
あとしっかり過去問やって計測ができていれば確実に改善を入れて点数を上げられるようになっていたと思うので最高でした。
作問・運営の皆さんありがとうございました。

予選では本戦に確実に参加することを目標にして、かなり安全に倒して終盤は変更を入れずにfailしないように立ち回っていました。
本戦は1位orFailくらいの気合で攻めていこうと思います。

100万取るぞ!!

Comments

コメントする
Name:
Content:
コメントは承認されると表示されます