ISUCON初参加
ISUCONの存在は前々から知っていたが、ISUCON夏祭りに参加してISUCON参加意欲が沸々と湧き上がり、初参加するに至る。
方々に声を掛け、現職と前職のメンバーでチームを組むことになった。
ISUCON 0次予選
ISUCON13は予選なしと聞いていてすっかり油断していたが、予選はあった。
そう申し込み予選。
"1次申し込み100組まで"とあったので、申し込み開始時間から1時間後、「そろそろ申し込んでおくか〜」と思ったら受付終了のお知らせ。開始1分で受付終了したもよう・・・。
そんな激戦区とは知らなかったので、2次申し込みは開始10分前から待機。
チーム名をクリップボードに入れいつでも申し込める体制に。
1分前から定期リロードをし、フォームが開いた瞬間に一気に登録!!!
無事参加登録できた。
ISUCON準備
事前準備はISUCON夏祭りのハンズオンでも教わった通りprivate-isuで学習。
チームで集まって練習会とか開いた。
ただ、ベンチマーカ含め全部ローカルPC内で動かすと、ベンチマーカがリソースをもって良すぎて全然スコアが伸びない・・・。ec2などクラウドを使ってベンチマーカとアプリは別のインスタンスに分けるのが吉。
本番
1日貸し会議室を借りて参戦。
Youtubeのオープニング配信でローディングがぐるぐる回り、「この会議室のWiFi弱い!?!?!?」とめっちゃ焦りましたが、そう言うネタだったと知って安心(でももうやめて欲しい)。
レギュレーション違反
与えられたCloudFormationは同じAMIのEC2が3つで、ベンチマーカが向いているのは一つだけ。
今思うと、「3台のインスタンスを3人の開発環境として使えるようにしたよ」って配慮だったと思うのだけど、早々に「とりあえずDBをRDSにしよう!」とインフラ構成変更に。
が、RDSにデータは移行できたもののなぜかアプリからはつながらず。
試しに新たにMySQL専用EC2を立ち上げて、それにデータ移行してアプリからつなげたら無事に繋がった。
と、ここであれ?勝手にインスタンス増やしたりしたりしていいんだっけ?と思い直し、これがまかり通るなら札束で殴れるじゃんと思ってレギュレーションを見直す。
「別に禁止事項」にはインスタンス勝手に増やしちゃダメって書いてないなあ、と思ったら
主催者の指示以外で利用が認められたサーバー以外の外部リソースを使用する行為(他のインスタンスに処理を委譲するなど) は禁止する
としっかりレギュレーションに書いており、思いっきりレギュレーション違反していたことに気がつく。
ここまで2時間無駄な時間を過ごす。
EC2の役割変更
結局、EC2の2台をアプリケーションサーバ、1台をDBサーバに構成変更することに。
構成変更する間に、DBのindex貼りやアプリの改修を同時に進める。
で、ここで思ったのが、インフラ構成変更を真っ先に始めてしまったので、その作業が完了するまでテストをしたりやベンチマーカが動かせないことに気がつく。なので、行った改修が問題ないか、パフォーマンス改善できたのか調べる手段がないことに気がつく。
結局そういう確認はインフラ構成変更まで待つことになった。
終盤の追い込み
インフラ構成変更とDBチューニングは功を奏してとりあえずそれだけで1万点は超えた。
DNS水責め対策は何をしたら良いかわからなかったので、とりあえずPowerDNSのコンフィグをいじってみたが、点数はあまり変わらなかった。今思うとPoweDNSで使ってるMySqlも適当にindex貼っておけばもっとスコア上がったかもと思った。
そして、アプリの改善はというと・・・いざ動かしてみるとエラー発生。インフラ構成変更完了まで動作確認できずひたすら改修を進めていたので、どこまでがまっとうに動いているコードかもわからず、全体的に見直すことに。
直前まで目視デバッグを行いエラーは出なくなったものの、出力結果が明らかにおかしい・・・。終了30分前であきらめ、アプリの改善は全て捨てることに。
結果
アプリの改善は全く無しになってしまったが、それでも16000点を超えて130位に。アプリの改善も適用できてたら3万点超えて100位以内に入れたかなあと後悔。その後の打ち上げも盛り上がらずなんだか暗い空気に。
それでも初参加にしてはまあまあやれたんじゃないかと思う。
次回こそ
最初からインフラ構成変更に着手したのは間違いだった気がする。
最初はそれぞれ単独で分析を行い、あとから誰が何をするかを取りまとめた方が、上手くできた気がする。初心者は特に。
開発環境というものがないので、一発本番環境を修正するという状況も事前にもっと練習しておけば良かった。慌ててソースをgitにあげたものの。結局全然使われず、手動でソースを同期していた。
来年あれば、もっと上手くやれる気がする。
ISUCON14も開催して欲しい!!!