ISUCONとは「いい感じにスピードアップコンテスト」の略。 恐らくISUCON3あたりから観測はしていて本番出場者の攻略エントリや予選敗退者の反省ブログなどを読んで面白そうだなとは思っていた。 今回初参加してみて、あわよくば本戦行ければなーと淡い期待をしていたら木っ端微塵に吹き飛んだ。
「ガトリンガー葉の仲間たち」としてcs_sonar、kawakattsun、luccafortの3名で1日目勢として参加。 順位は暫定55位で当然本戦出場圏外、ぼくは正直全く貢献できなかったと思っていて非常に悔しい。
それでもこの順位なのはほぼインフラ周りをみてくれたcs_sonarのおかげだと思ってる、マジ最高。
ISUCON7の予選問題とその解説は↓、目を通しておくだけでも楽しいぞ!
結論:
ISUCONは「周りでみてわいわい」するより参加して「ああでもないこうでもない!」するほうが断然楽しい。 なのでもし「やってみたいけど自信がない…」という何年か前のぼくのような人は是非とも仲間を(無理やり)誘って参加するほうがいい。
やる前までは割りと憂鬱な気持ちになったり、面倒くさいなという気持ちがなかったわけではないのだが いざやってみたら凄まじい後悔とやりきれなかった、もっとスコアをあげれたはずだ!!!という思いでいっぱいになった。
やる前までは今回やったら満足するんだろうな、とか思ってたけどかなり悔しい思いをしたので 来年こそリベンジしたいと思っている。
ISUCON7に向けてやったこと:
- メンバー集めた(アプリケーションエンジニア2、インフラエンジニア1の構成が過去の経験からベストとのこと)
- PixivのISUCON問題解いた
- 今回の予選の構成にかなり近く非常に有意義だったがその有意義さを活かしきれなかった、偏にぼく自身のせいであると思っている。
- 事前にやることの共有した
- 当日やることリストみたいなのを共有した(がこれも活かしきれていなかったように思う)
事前にやっておけばよかったこと:
- もっと過去問を重要視すべきだった
- せめて1ヶ月に1度過去問読んで、ここは自分ならこうするなどの話し合いを終業後に1時間でもいいのですべきだった。
- メンバー間の配置を決めておくべきだった
- 今回近くにはいたがそれぞれ別々のデスクで作業していたので誰がなにしてるのか?が不明瞭なところがあった
- 相談したいときに距離が障害になることがあった。あとディスプレイみせて説明したり相談できる距離感でないと無駄なロスがある。
- ログの追い方、スロークエリーのみかた、過去に出たN+1の対策などの対応策を話し合うべきだった
- 本戦に出た「スギャブロエックス」チームのエントリみてより一層そう思った。
- もっとISUCONエントリを熟読すべきだった
- ISUCON初心者のためのISUCON7予選対策とかもっと重視すべきだった項目がいくつもある。
- レギュレーションにはヒントがいっぱい
- もっと注意深く読み解くべきだった。質問の意図を理解せず手を動かしてしまったのが最大の敗因だと思っている。
- 環境構築は前日に終わらせておく
- 今回は運営側のトラブルにより比較的時間に余裕があって設営が終わったが元々の時間に集まっていたら多分設営中断して開始時間になってた気がする。
個人的な課題:
- SQL力の不足
/fetch
のN+1問題をSQLだけでできそうだと思っていたのに制限時間内にクリアできなかった(開始時間がずれ込んだ関係で途中離脱したため)、結局kawakattsunが対応してくれたが本来ぼくがやりきっておくことだった、反省。
- ログの監視を任せっきりにしていた
- ボトルネックをみつけてから対応すべきだった
- 「あ、ここ問題になりそうだ!」で対応してしまった箇所が多かった。
- スロークエリはEXPLAIN貼ったりして確認していたがきちんと計測した結果どこが問題か判断してからコードの書き換えなどを行ってその効果を計測すべきだった
- インフラに関する知識とノウハウの不足を痛感
- レギュレーションの重要性が全くわかっていなかった、レギュレーションはただのREADMEじゃなくて試験問題のテスト用紙そのものだと認識していなかった。
まとめ:
反省点はクソほどあって頭抱えて寝たいくらいの気持ちなんだけどそれはそれとしてやっぱり面白かったという気持ちが一番大きい。 その次が悔しいで、その次くらいが賞金いらないのでもう一回チャレンジさせてくれ!!!って気持ち。
今までISUCONは傍観者でいて「わー楽しそうだな〜」とか呑気に思ってたけどそのワクワク感の1000倍くらい参加したほうが楽しいので もし興味のある人は是非とも参加しような!
次こそは本戦にいけるよう素振りを入念にしておかねば…。