ISUCON#3の予選に参加してきた

ISUCON#3のオンライン予選に参加したことのまとめです.
メンバーのブログに関しては以下を参照.
魔王軍としてisucon3予選学生領を制圧してきた

ISUCONとは

ISUCON(Iikanjini Speed Up Contest)とは,チーム対抗(最大3人まで)でWebサービスを決められたレギュレーションの中で限界まで高速化し,その結果で競い合うチューニングバトルです.今回で3回目となる本大会は,LINE株式会社様,株式会社データホテル様,面白法人カヤック様の3社共催で,優勝賞金ドドンと100万円の超ビッグイベントとなりました.
公式:優勝賞金ドドンと100万円! 第三回 ISUCON 開催のお知らせ #isucon
そんなISUCONに今年から学生枠が設けられ,学生限定夏期講習なども行われました.
参考:ISUCON 夏期講習を開催しました
私もこの夏期講習に参加させて頂いたのですが,折角色々なことを教えて頂いたし,また夏期講習では結果を残せなくて悔しい思いをしたので,リベンジの意味も込めて学生枠でのISUCON#3への参加を決めました with @46goma_goma and @cosadn (某企業内定者チーム).昨日は本戦出場枠をかけたオンライン予選が実施されました.

やったこと

前日

前日の前日が内定式でメンバー全員が東京に集まれる環境だったのと,1日東京で暇していたのとで折角だからと集まって前夜祭が開催されました. ここで当日の流れを確認.ISUCON夏期講習に参加して得られた学び等から,以下のことを心がけることとしました.

  • 当日はまず全員でアプリの仕様を確認し,どのような戦略でいくかを確認する(=全員で戦略をたてて役割分担する).
  • Gitを利用して常に変更を管理し,問題があってもすぐに元に戻せるようにする.

これとは別に自分に課していた目標は,堅実にいくということです. できることをして着実にスコアを上げ,タイムアップで何も出来なかったということは無くしたいなと思って臨みました.
また実際にAWS上で利用予定のアプリの動作検証も行いました. 環境構築担当だった私は,ChefのCookbookが無事に動作するかどうかの検証等を行ったのですが,これが後々にすごく効きました. 一言で言うならば,Amazon Linux,他OSと勝手が違って凄い怖い(´・ω・`)w
感想:内定式での二日酔いを引きずったまま飲むビールは超おいしかった←

予選当日

前日の頑張りもあり,前半30分ほどで必要な環境構築をすべて終了.Chef可愛いよChef←
その後行った作業は以下の通り(※自分の作業を中心にまとめます).

  • 私が環境構築している間に,メンバーのみんながアプリの中身を把握してくれた!
  • 前半は主にDB周りを担当.スロークエリを解析してIndex貼ったり,アプリ見てたメンバーと相談しながらクエリを書き換えたり.
  • 全投稿数を表示したり,最新投稿を100件表示したり,ユーザの投稿履歴を表示してるとこがとにかく重い.
      → Redisに移行する作業.重い計算はRedisでなんとかする.
      → なんちゃってレベルでしかRuby使えない私のために,メンバーが大分頑張った\(^o^)/w
      → 夏期講習でAmazon memcachedには痛い目に合わされてたので,敬遠気味だったのが今考えるとだいぶ良い方向にいった←
      → 一部は実装できたが,やりたかった事すべてを実装するには時間が足りず。。。

結果的には,メンバーの1人が担当していたVarnishさんのおかげで大分良い感じに.Varnish可愛いよVarnish←
その後の低度な情報戦については他メンバーのブログを参照して下さいw
nginxがあまり良い感じに動いてくれなかったり,各種設定等に関しては後から色々見直したいですね。。。
感想:終わってから飲むビールは本当に美味しくて頑張ってよかったと思った←

おわり

終わってからWorker数を増やせばもっとスコアが伸びただろうという根本的なことに気づいたりすることもありましたが,とにかく以上の作業を8時間近く地道に行った結果,学生枠で暫定1位という結果を修めることが出来ました\(^o^)/
競技中に提出したスコアが12,000点ちょい,ローカルの実行では16,000点くらい出ました.
後半私がやらかしまして,AWSが起動しないという大変な事態を引き起こしてしまい,その解決で後半1時間くらいを浪費させてしまいましたorz 個人的に今回一番の反省点です.メンバーのみんなには大変申し訳なかった。。。
11月9日が本番なので,そのときに失敗を挽回するくらい活躍したいです.

Comments