dshimizu/blog

アルファ版

ISUCON9予選振り返り

ISUCON9に参加したので振り返りとして書いておく。

ちなみに負けた。

振り返り

今回のお題は椅子限定のフリマアプリ「ISUCARI」だった。

そのアプリケーションに加えて、決済と発送が外部サービスとなっていて、それぞれのAPIへアクセスするようになっていた。 かなりよく作られたアプリケーションだと思った。 また、ベンチマーカーも例年通りダッシュボード混みで完成度の高い感じだった。

僕はインフラ担当として参加した。 インフラは今年はAlibaba Cloudが使われていた。でも、Alibaba Cloudの知識はそこまで必要なく、セキュリティグループに気をつける程度だった。 決められたインスタンスを3台まで使って良いと言う形だった。

思ったこと

  • ツールにとらわれ過ぎていた。
  • 過去のISUCON参加者の方のブログとかを見ると、アクセスログの解析にalpを使われていたり、OSリソースの可視化にnetdataを使われているのをよく見る。でも、alpを見てもどのパスにどれくらいのアクセスがあったかくらいはわかるが、それがどう言う理由で遅いかを解析するにはアクセスログから得られる情報だけではわからなかった。今回だと/loginへのアクセスでbcryptのハッシュ処理で重かったようだが全然気づけなかった。netdataも単一のホストの情報を見るには良さそうだが、複数台の情報を見るには逆に情報量が多過ぎてあまり向いていないように感じた。
  • ボトルネックの解析力と限られた複数台のサーバを限られた時間内でうまく使いこなすためのが足りない。
  • 一番重要な部分な気がするが、やはりこれが足りない。基本的にはWeb/AP/DBで、必要ならCacheを組み合わせたり...と言う構成ではあるものの、色々な組み合わせ方がある。今回は1台目のサーバにMySQL(DB)とProxy扱いのNginxを置き、残りの2台にアプリを置いて振り分ける、みたいな構成をとったが、その場でチームメンバーと話合ってはいたものの、なんとなくリソースをうまく使えそうだから、と言う理由でそうした。でも本来はどこがボトルネックかもう少し明確にしてから構成の変更を検討すべきだった気がする。
  • アプリケーションの挙動をきちんと把握できなかった。
  • オペレーションやインフラ構成周りばかりに気を取られていて、ウェブサービスとしてブラウザからひと通りの導線を踏んでみるとか、データの中身を見るとか、レギュレーションをしっかり読む(きちんと理解する)と言うことが足りなかった。この辺りしっかりやっていれば気づける部分はもう少しあったかもしれない。

まとめ

色々反省点ばかりだけど、普段と違った刺激が多くて今年も楽しめた。 問題は年々難しくなっている気がするけど、もっと力をつけて来年も挑戦したい。

最後に、運営のみなさま、今年も素晴らしいイベントをありがとうございました。