かみぽわーる

kamipo's blog

ISUCON9予選ふりかえり

なにもできなかったし書くことないわーって思ってたけど、チームのふりかえりをGitHubのissueに書いてたらふつうにこれ外に書けばいいなってなったのでここに記す。

  • アクセスログから得られる情報の解像度が相対的に低くなってきたと感じた。ざっくりどのエンドポイントが遅いとか何回叩かれてるとかの概観を知るのは依然として重要だけど、近年は遅いエンドポイントの処理はめちゃくちゃ複雑になってきていて、たとえば/buyが遅いぐらいの情報の解像度では情報量が足りてなかった。
  • 外部APIへのリクエストが絡むような問題への心の準備とかできてなかった。なんなら準備してきてないし予選では出ないでほしいなとか思っていた。
  • プログラマとしての筋力が足りてなかった。たとえばアクセスログからの情報では足りないってなったときにときにじゃあやばそうなところ全部にprint文書いて測るわ!ぐらいの気概が必要だった。外部リクエストが遅いとかロック競合で時間がかかっていると遅いけどあまりリソースは食ってないように見えるしそういう面でもprint文書いてでも知りたい情報ログに出したるわぐらいの気概が必要だった。
  • 外部APIへのリクエストが遅いかもってなったときに遅いリソースへのリクエストを多重化するようなプログラミングを普段してなかったのでひよった。きれいに言語のAPIやライブラリが使えなくてもたとえばThread.newしまくってでもやったるわぐらいの気概が必要だった。
  • もはやデータベースに入ってるデータだけじゃなくて外部APIのレスポンスも含めてアプリケーションを構成するデータソースだという考えで挑まなければならないと思った。実際外部APIのレスポンスの内容がリクエストに対して不変な内容かそうでないか、不変ならキャッシュ可能かという考えに至れていなかった(もしキャッシュ可能だと分かれば不慣れなリクエスト多重化プログラミングを避けることができたかもしれない)。
  • 自分たちに相性がいい過去問で練習してできることをやればいけそうって過信してしまった。苦手だった問題も過去にはあるのにそういう苦手分野に向き合うことをおざなりにしてしまったところはいなめなかった。

ISUCON9予選、手も足もでなかったけど、いい問題だと思ったし楽しめた。近年データベースがボトルネックじゃない問題で僕の楽しみがあまりないからISUCONから遠ざかってたところあったけどISUCON8予選がデータベースのロック競合を出題に盛り込んできて、そういう問題ならやってみたかったって思ったし、今回の問題は去年の予選問題のようでもありそこからさらに去年の本選問題を足してひねりが加えられたような一筋縄ではいかない感じであった。今回誘ってくれたid:Soudaiさんと一緒に戦ってくれたid:sugyanにまじ感謝、楽しかったです。