ISUCON3 に参加しました

id:yappo & id:kamipo とチーム「潰すつもりで来てください」を結成してISUCON3に参加してきました。結果は(失格にならなければ)11位で予選は通過できそうです。

選んだ言語はPerlで、できあがったコード(アプリ)はこちら*1

https://github.com/kamipo/isucon3


チーム全体としてはkamipoさんとYappoさんが二人三脚でSQLのクエリ改善をして、ぼくがそれ以外で主にアプリコードところを見るという感じで、役割分担がはっきりできていてよかったかなと思います。

ただ個人的にできなかったことがとてもたくさんあるので課題を感じた一日でした。今後のためにリストにしておきます。

  • アプリ部分の計測が十分にできず、適切なチューニングができなかった
    • 特にプロファイラを十分に活用できなかったのはつらい
    • NYTProfをpreforking PSGI serverで使うときはかなりコツがいるのだけど、準備不足でほとんど活用できなかった
    • KYTProfを使ったことがなかったので試しもしなかった
    • アクセスログの分析が終盤までできていなかったし、終盤やったのも手法が原始的すぎた。継続して分析できる仕組みは作れたはずだし、そうすれば /memo/:id の改善にもっと速く着手できたはず
  • コードを書くことの恐怖との戦いがつらかった
    • 他のメンバーのブランチとのコンフリクトが怖いとか
    • ユニットテストのないアプリのリファクタが怖いとか
    • それでテストを書いたりしたのだけど、終盤苦しんだ壊れやすいところをテストしているわけではないので自己満足にすぎなかった
    • Kossyのrender()を捨てる判断が最後までできなかった。これを捨てれば直接テンプレートエンジンのrender()を呼び出してそれをキャッシュする手があった

ともかく非常に充実した一日でした。ありがとうございました!

*1:同一マシンで開発してたのでkamipo成分多めです