ISUCON13に参加しました!
初めての参加で結果はアレでしたが、忘れない&やる気があるうちに雑な振り返りを書きます。
もう本当に準備不足で色々ひどいという感じです。ご容赦ください。
他チームの方々と比べてやってることが稚拙すぎて恥ずかしいですが、この気持ちを忘れないためにも投稿しておきます。
準備編
全然準備できていませんでした。不甲斐なくてなんか謝りたい気分です。ごめんなさい。
isucon本は少しずつ読んではいたものの、卒論やらレポートやらで忙しく、6章あたりまでしか読めていませんでした。
また、同期のチームメンバーも似たような状況だったためか、チームで予定をあわせることができずチーム3人で通し練習みたいなのも一度もやらずに本番となってしまいました。あぁ‥
本番
最初、CloudFormationをどうすればいいのか、sshの鍵、AWSのクレジットなどでバタついた他、ベンチはどのサーバーを指定すればいいのかなどが分からずかなり時間を取られてしまいました。
これに関しては、最初10分ちょっとで最初の測定が終わっているチームと比べて、1時間くらい競技時間が短かったんじゃないかというレベルでグダグダでした。当たり前オブ当たり前ですが、やはりチームで一度通すべきでした‥
それでもお昼を食べ終わった辺りからは、全員がなんとなく開発のイテレーションの回し方を把握できた感じになり、少しずつスコアが伸びていきました。
競技中特にモヤモヤしたのは、作業がスコアに直結するとは限らないという点です。
リクエストの合計時間が一番長いエンドポイントのn+1を解消したのですが、そこが点数的な意味でのボトルねくではなかったようで、殆どスコアは変わらないというようなことがありました。
スコアの計算方法をもっとしっかり読んでおくべきだったように思います。
最後、残り20分くらいのタイミングで急にベンチがコケるなどのアクシデントにも見舞われましたが、なんとかちゃんと動くバージョンまでロールバックでき、最終的なスコアは6000点ほどになりました。6桁にたどり着いてるチームは本当にすごいんだなと思い知らされました。
その他雑な反省点
だんだん疲れてきたので、雑にまとめます
- 最初、どうイテレーションを回していくかみたいなのが分からなかった点
- 全員でどうやったらアプリケーションを再起動できるか確認する時間とかあったらよかったかも
- 何ならgit pullしてこのコマンド打てばいい感じになる、みたいなスクリプトとかあればもっと楽‥?
- ブランチ戦略にもよりそう↑
- 最初の立ち上がりが少しモッサリしてた点
- CloudFormationとかクラウド料金のやつちゃんと把握してなかったのスマン
- 最初の測定とその評価にたどり着くまでかなり時間がかかってしまった
- htop専用画面生えてたの良かった
- 分かりやすい
- alp用ワンライナーちゃんと共有しておいてよかった
すればよかった細かい工夫
- nginxのログのローテーションを事前準備
- mysqlのスロークエリログのローテーションも事前準備
- nginxのログをjsonに書き換える設定も用意しておく
- 横着せずに.ssh/configをちゃんと書く
- 毎度discordからコピペしてたのアホ
- alpのワンライナーをコピペする際、ログのタイムスタンプを毎度変えるのがめんどくさい
- 最新っぽいやつを勝手に表示するワンライナーもあった方がいい
- hosts書き換え、ホスト側windowsだけじゃなくてwslもやればよかった
- 雑curlデバッグのやりやすさがかなり違う
- 競技インスタンス上のシェルが使いづらすぎた。
- zshやfishを入れておくべきだった
- ブランチ管理やgitの使い方が下手だった
- 横着してコミットせずにインスタンス上でちゃちゃっと直しちゃうみたいなのよくない
- これのせいで混乱が生じた
- 当日ガイドもっとしっかり読んで、点数に寄与する部分をしっかり見るべきだった
- 全員でガイド読んだ方がいいというのを実感した
- ローカルでテストする用の準備
- dbをササッと立ち上げたり、認証のミドルウェアをデバッグ時だけ消すようにしたりの手順をまとめてチーム内で共有すべき
まとめ
一度でも通しで練習をしておけばそうはならんかっただろ、みたいな反省点が多く目立ちました。来年はちゃんと素振りします。