肉汁爆弾

いろいろメモっていきます

【カレーおじさん】ISUCON11の予選を10位で通過しました!!

今年もISUCONの時期ですね。今回は600チーム(最大1チーム3名)となりましたが、平日昼間の募集開始にも関わらず2時間ほどで枠が埋まってしまったとのことでした。大人気ですね。

さて、我々「カレーおじさん」チームですが、去年と同じく前職の同僚の @tatsumack, @lazydg と3人で参加し、無事10位で予選を通過して二年連続二回目の本戦出場です。ここでは覚えているうちに当日の様子を振り返ります。実装はGoです。

参考文献

www.youtube.com
今年のテーマはISU CONDITIONでした。IoT(ISU of Things)ですね。(?)


isucon.net
ISUCON11まとめはこちら


ISUCON11予選に参加して10位で予選突破しました - Mirrativ tech blog
メンバーの@tatsumackのブログはこちら


ISUCON Cheat Sheet · GitHub
いつも参考にしているチートシート。この著者は高校の同級生です、ナンチョクみてる〜??

当日の役割分担

sugaret(わたし): インフラ担当。環境の構築や分析ツールの用意、その他インフラの設定などでスコアを伸ばすことを狙う
tatsumack: アプリ担当1。諸々のメトリクスを参照しながらボトルネックを潰す。全体の優先度を決める指揮官的な立ち回り
lazydg:アプリ担当2。ローカルの環境でアプリが動く状態を作ったりしつつ、ゴリゴリとボトルネックを潰す実装を担当

当日のタイムライン

9:00
起床報告。今回はご時世もあるのでリモートでの集合でした。結果的にいつもの開発環境だったこともあり効率はだいぶ良かったかも。

10:00-12:00
問題の公開。初動でやるべきことを粛々とやる。
・AMIの設定
・gitの設定/deployスクリプトの設定
・分析系ツールの導入(alp、pt-query-digest、gcp_profiler)
・当日マニュアルの読み込み
・ローカルPCで開発できるようにもろもろ調整する(jia_isu_uuidの発行がネックになったのでmockするとか)
など。

12:00-14:00
・DBとwebの分割 *
・echoのデバッグモードをoff
・isu_conditionにindexを追加 *
・postIsuConditionをbulkでinsertするように
・iconの画像がDBに入っていたので、書き出すようにする
・このあたりで dropProbability(負荷の調整弁となる定数)をみつけて 0.5にする *

14:00-16:00
・icon画像が不要になったのでDBから削除する
・dropProbabilityを更に色々いじる(最終的には0に)
・cacheControlを設定
・generateIsuGraphResponseを24時間以内のものに絞る
・postIsuConditionで1時間以内に20件を超えるものは不要なので間引く

16:00-18:45
・isuにindex追加
・isu_conditionのconditionを正規化(levelというカラムを作り、1-3で表現)*
・getTrendが重かったので3台目をこれだけ受けるようにするなど試していたが、最終mergeできず

振り返って

・スコアが一気に伸びたのは割とプロファイラやメトリクスで出ていた重い部分を上から順に潰した事によるものだと感じた。(効果を大きく感じたのは*をつけたもの)
・一方で明らかにヤバそうな雰囲気だったDBに画像が入っている件などは、対応直後は即スコアが上がったりはしなかった。(が、他のボトルネックを潰していたら支配的になったことがあったのかも)
・元同僚ということもあっていい感じに分担/連携できていたように感じた。(「xxxするとエラーになるっぽいけど仕様わかる人います?」みたいに声を掛け合って無駄な調査を減らすとか、作業していることを宣言していくことで全員が優先度の高い順番にタスクをこなせるようにとか。)
・アプリをローカルPCで動くようにするために時間をかけたのは、本当に必要だったのかは不明。実際あまり使わなかった。なので30分など時間を決めて動作環境を作れるかチャレンジし、ダメそうならやらない〜ぐらいでよいかも。
・個人としての反省は初動のセッティングに時間がかかってしまったこと。どのコンテストでもそんなに変わらないのに遅かったのは練度の問題なのでもうちょっと慣れる。

所感

我々ぐらいのチームが一番ISUCONを楽しんでるんじゃないかと感じました。残り1時間の状況で決勝進出の当落線上をさまよっていて、最後の一手でスコアを大幅に伸ばし、勝利を確信する。。というような、最高の体験をさせていただきました。ISUCON運営の方々には本当に感謝しております。いつもありがとうございます!!決勝も頑張るぞ〜〜〜!!