読者です 読者をやめる 読者になる 読者になる

あおみかんのブログ

フリーランスのIT系エンジニア。ゲーム制作スタジオ4th cluster代表。

ISUCON 2013 予選に参加してきました。

去る10月6日、ISUCON 2013 の予選に参加してきました。

メンバーは @cnosuke と @rkmathi 、どっちも筑波大の知人です。
僕よりも彼らのほうがrails歴は長いので、何だか足を引っ張っちゃった気がします。最近iOSばっか触っているのですよ。。
ちなみに予選はネット経由で行うのですが、集まってやったほうが良いだろうということで、場所は僕の家でやりました。

ちなみに、EC2のインスタンスを立ち上げるコストが600円ぐらいかかりましたが、前職で行ったTechcrunch Disrupt SF でAWSの$50チケットをもらっていたので、無料で済んじゃいました。わざわざサンフランシスコまで行った甲斐があるってもんですね!(?)

スコアは5000点ちょっとで、学生枠にはひっかかったのですが、提出したAMIに問題があるような気もして、本線に出れるかはまだわかりません。

システムはユーザ登録が存在するmarkdownメモアプリで、まぁ要するにgistみたいなものですね。 そのうちまた運営さんがネット上で公開してくれると思います。 他の参加者の皆さんも言ってましたが、今までのISUCONでは静的ファイルキャッシュが有効に働き過ぎるアプリだったようですけど、今回はユーザ認証が入るのであまりそういうのが役に立たない。 これは実際のアプリに近くて、いいと思いました。

全体としては、普段あまり意識していない高速なWebアプリ開発という視点を持てたのは良かったです。 Webアプリ作ってもそんなに凄いアクセス数を集めれないから、最近この辺の意識が欠けていましたねぇ、反省。
今後はなるべくこういう設定やテストをキッチリやっていきたいものですね。 そもそもそのぐらいアクセスされる案件に関われないとあまり意味がないんだけどね。。。

そうそう、supervisord とか foremanとか全然知らなかったけど、めっちゃ便利でした。

Webからのリモート参戦でしたが、あとで @sora_h とか有名な皆さんとTLでお話したり出来たので、色々勉強になりました。 やっぱ仕事ばかりじゃなく、たまにはこういうイベントに出ると刺激になって良いですね。

ちなみに当日は @koniyan とかを呼んでそのままうちで鍋をやったので、感想戦みたいな事も出来てよかったです。彼からも色々とアドバイスを貰いました。

当日の反省、ちょっとまとまりがないですが、以下の様な感じでした。

  • 開始からすぐにEC2インスタンスを立ち上げてスムーズにログイン出来る所まで行けたのは良かった。
  • Rackからsinatraまでの理解が薄く、MySQLのコネクション数のでエラーが出ている原因がわからなかった。 接続上限数とプロセス数などの関係を理解して設定するべきだった。
  • 理解が薄かったのでnginxやMySQLの設定変更とかも甘かった。
  • gzipは見事に引っかかった
  • ローカル環境を構築しようとしたらbundle installでミスったりしてた。(これは僕だけの問題ですが、初歩的すぎる。。)
  • 仕様の把握がいい加減で、高速化する処理にバグがあった。 メモの合計数は is_private=falseのものだけだったみたいです。ちゃんと全部のコードをしっかり読まないと、思わぬバグを産みますね。
  • ページネーションは何か前に似たような糞コードを見た覚えがあったのですぐ直せた。 結構すごい人たちでもつまづいてるポイントだったのでちょっと嬉しい。
  • ミドルウェアを追加するようなトリッキーな高速化ばかり気にしちゃって、普通の高速化をした段階でベンチを走らせておく、という事をしなかった。 nginxにして静的ファイルはそっちから渡して、MySQLのインデックスを貼ってクソなクエリを直すだけで、一万点ぐらい行けたと思うんだ。。 あー、markdown生成だけはredcarpetにしないときついかもしれない。 でも普通の全部チューニングだよね、これ。
  • 良いスコアが出た時に、念のためさっさとAMIを取得しておくべきだった
  • 全員でコードを触ってしまって混乱した
  • 役割分担がいい加減だった。

本線に出れたら、予選じゃ負けた学生チームの皆さんにも一矢報いたい所ですね!