ISUCON 10 本戦で 28,628 点を獲得して 7 位だったふりかえり

チーム「ヌルポインターマリアユニバース」として id:wtatsuru id:Pasta-K と出てきました。最終スコアは 28,628 点で、fail してない中では 7 位。ISUCON にちゃんと出場したのは前回が初めてで、そのときは予選でボコボコにされて終わってしまったんだけど、今回はそれなりの結果 *1 を残せたのは嬉しい、嬉しいが、もっとうまくやれたことはいくらでもあったな〜〜という感じはする……。日々精進です。

isucon.net

wtatsuru.hatenadiary.com


おさらいすると、本戦の問題は ISUCON 風コンテストのポータルが題材であった。

白金動物園が出題ということで、サービスメッシュ的なサムシング (マイクロサービス + Envoy / Istio)、そのサービス間通信に REST API 以外の何か (gRPC / GraphQL)、まさかのパターンとして k8s の何らか (何だろう……)、みたいなのが出現することはなんとなく予想はしていた。

し、予選の段階でポータルのフロントエンドが各種 API コールに protobuf を使っていることに気づいたりもしていたんだけど (言い訳)、ここまで直球でいろいろ出てくるとさすがに笑うしかなかった……。10 回目というキリのいいタイミングで、こんなめちゃくちゃ面白い問題が出てくるタイミングで本戦に参加できてよかったと心から思う。

今気づいたけど XSUCON の X って 10 回目の ISUCON であることとかかっているのか??


  • 時間内にチームでやったことの流れは、だいたい id:wtatsuru さんが書いてくれていたとおり
  • 後半に id:Pasta-Kペアプロをやってアプリケーション側の作業をいろいろやった、というのがだいたいの成果
    • id:wtatsuru さんがなんとなく司令塔という感じで、タスクの優先度判断などやりつつ進めた
      • タスクの優先度判断: alp でエンドポイントごとの総リクエスト時間順にボトルネックを探していって潰していく
    • 途中からはずっと Go でウェブアプリケーションを書くのに慣れている自分がコードを書く役 + レギュレーションやルール、用意されている実装の全体の雰囲気を把握していて何をどういう雰囲気で書いたらいいのか高速に答える役が id:Pasta-K という感じで動いていた
      • やったこと自体にそんなに大玉感はない気がしていて、できそうなところを簡単そうな順につぶしていった、という感じがする
      • 午前中に時間を使っただけあってか id:Pasta-K がめちゃくちゃ細かく網羅的にルール類を把握していて、「ここはこういうレスポンス返して良いもんなんだっけ」みたいな問いがどんどん解決していくので、変なところであまりハマらずにススっと実装を進めていけるという感じでめっちゃ体験がよかった
  • 予選で中途半端に実施していた 15 分スプリントをわりとガッツリ使ったのが技術面じゃないハイライトで、これは完全に良かった
    • スプリント会 · Issue #11 · tatsuru/isucon10-final · GitHub
    • スクラム開発のスプリントみたいなやつを 15 分単位で回し、15 分ごとに進捗報告とごく簡単な振り返りを実施、最後に次の 15 分でやることを調整する、というやつ
    • 予選のときは正直面白半分でやっていた感じもあったけど、今回はチームワークを発揮する上でかなりレールになった感覚がある
      • 次やることを調整する段階で「インフラ作業したいのでベンチ回せないかも」「ちょっと時間かかりそうな実装タスク掴むのでたぶん影響ない」みたいなすり合わせができていた
      • ポモドーロテクニック的なやつと融合させることで、15分 * 3 セットごとに全員で強制的に休憩を取るようにしたこともあり、作業がノッてきてからもベロシティはほとんど落ちなかった感じがする
    • ISUCON 全く関係ない文脈で短時間スプリントに関するエントリを見ていたのも少し影響している気はする
  • 微妙に緊張していて寝起きのコンディションがいまいちだったのが心残りその1
    • 今思うと、そういう状態であることを強くアピールして目が覚めるような施策をチームで打ってもらったらよかった、即ペアプロとか
  • 全体的に超大玉っぽい施策は打てなかったというのが心残りその2
    • サービス間でポーリングしている部分があり、Redis とか入れて PubSub にしたらええんちゃう、みたいなのは話してはいたけど、コスパ以前になんとなく無意識に避けてしまっていた部分がある
      • 今もベンチ投入できる延長線状態なので普通に書いてみたらいいかという気がしてきた
    • スコアボード用に長大な SQL が使われている部分なども途中からは無視していた
  • 全体的に書き込み操作をするタイミングでやや長めのトランザクションが貼られていたが、これを不要そうなところでは剥がすのをシュッとやれてたら少し違ったのかもしれないな〜という気持ちもある

本来なら本戦は LINE 社のオフィスで開催されているところ、今回はリモートでの開催だったので、グッズやノベルティが詰まった箱が開催前に送られてきたのもめちゃくちゃよかった。ちゃんとTシャツや名入りネームプレート (!) も入っていて、こういうのが手元に残るだけでも参加した実感みたいなのがぐっと湧いてくるので面白い。

競技時間中の YouTube Live も結構おもしろそうな話をしていたようなので、アーカイブが復活したら見ておきたいなと思う。スライド 1 枚でチーム紹介をやるというコーナーがあり、少なくとも身内にはスベらず面白がってもらえたのはよかった……。

こちらからは以上です。運営の皆さん本当にお疲れ様でした、ありがとうございました!!!!来年はヌルポインターマリアユニバースじゃなくて「チーム究極のピルスナー組合」で出たい


予選のエントリはこれ: #isucon #isucon10 予選参加記: 決勝行けましたの巻 - polamjaggy

*1:ボコボコでは?という説はある、、