今年もISUCON4予選に参加した→予選通過できた!

去年のISUCON3にも参加してダメだったんですが、今年はISUCON夏期講習に参加してから、ISUCON4の予選に参加しました。

学生枠「railsへの執着はもはや煩悩の域であり、開発者一同は瞑想したほうがいいと思います。」というチーム名で、id:cnosukeさんとid:k0kubunさんの3人で出場しました。

k0kubunさんの記事→http://k0kubun.hatenablog.com/entry/2014/09/28/202828

学生枠は上位5チームが本戦に出場できるのですが、予選1日目の時点で4位だったので本戦に行けるかはびみょいです(;´Д`)


ちなみに、使った言語はRubyでした。

開発環境まわりでやったこと

各自で自分専用のインスタンスを立ち上げる

m3.xlargeインスタンスが$0.4/1hくらいだったので、各自でインスタンス立ち上げてそこで開発/ベンチマークが終わったら、GitHubにプルリ投げて本番用インスタンスベンチマーク走らせるってフローでやってました。

GitHub

去年、開発中にベンチとったらいつの間にかFailしまくってしまい、どこで間違えたのかわからなくなってしまったので、今年は GitHubのプライベートリポジトリを立ててそこでプルリ投げ合いながら開発することにしました。

事前に3人で集まって練習した時は1つのインスタンスを3人で触っていたので、どこを変更したのかよくわからなくなってました。 ですが、この方法で割と安全に開発が進められたと思いました。

実装まわりでやったこと

erbをslimに置き換えた

事前にISUCON2の問題を練習していたときに、erbよりもslimのほうが速かったのでそうしました。

'/'はnginxで静的HTMLを返すようにした

トップページもslimで描画でしていたのですが、出力HTMLは変わってなかったのでnginxで生HTMLを返すようにしました。

これと、他の2人がやってくれたvanishやMySQLのインデックスなどでだいたいスコアが8000点前後でした。


反省点

プルリ体制にしてたのに自分がミスった

プルリを投げるときは手元で動かしたベンチマークの結果も一緒に貼って、ちゃんとベンチマークが落ちないことを確かめていたのですが、自分が/reportをいじった時のプルリでベンチマークが落ちていたのにメッセージに気づくことができなかったです。 そのため、後半で「実はベンチマークとおってない」ことに気づいてから、ロールバックするのに時間がかかってしまいました(;´Д`)

ルール(というかツール)をちゃんと把握しておくべきだった

ベンチを走らせるときに、編集したinit.shが何故か適用されていなくて困惑してたら、土壇場になって--helpつけたらちゃんとオプションがあることに気づきました。 また、その時にworkloadについても気づけました(;´Д`) モッタイナカッタ…

m(_ _)m


本戦に行けるかどうかはまだ分かってないですが、今年のISUCON予選もとても楽しかったです!!!

10/06追記: 学生枠4位通過で、本戦に参加できることになりました!!!やった!!!

運営をしてくださった方々にはとてもお世話になりました。

ありがとうございました!!!