【惨敗しました】ISUCON9予選に向けて準備してきたこととやったこと

前回の更新が徳丸試験受験だったのでちょうど1ヶ月ちょっと空いてしまいましたね。

この1ヶ月の間、割とこのISUCON9予選に向けて準備してきたので、そのことについて書きたいと思います。 どんな問題だったかや、何をしたら早くなるなどの解説や、運営方針で色々あったことについては、この記事では触れません。

あくまで忘備録的に自分たちが何を準備してきて、当日何が出来たかをまとめておきます。 惨敗とはいえ、用意はかなりしてきたつもりなのでそれなりにためになる情報もあるんじゃないかなと思ってます。

f:id:zoe302:20190914152904p:plain f:id:zoe302:20190914152713p:plain

ISUCONってなに?

去年の参加記に説明あるので読んでみてください!

blog.zoe.tools

準備してきたこと

上記の通り去年のISUCON8で点数的には割と惜しいところまで行ったこともあり、今年こそは予選通過を本気で目指していました。 予選通過に向けて去年の振り返りをもとに練習を重ねました。

役割を決めての練習をする

今回チームメンバーは アッキー (@akki_megane) | Twitter02 (@cocoeyes02) | Twitter と参加しました。 それぞれ早い段階で役割を決めたのでその役割で練習をしました。 役割はざっくりこんな感じです。

役割を決めての練習は全部で6日ほど練習しました。 練習には過去問のISUCON5やISUCON8の予選問題を再現して練習してきました。

デプロイスクリプト用意しておく

これも前回の反省からの行動です。 事前に、用意できるものはできるだけ用意してきました。 用意したスクリプトなどはすべてgithub上で管理していました。 また当日のタイムライン管理もwikiで予めやることを書き出し、迷うことなく作業できるようにしておきました。

github.com

特に初期、サーバをもらってからやることはだいたい決まってるので、まとめています。

pprofを見れるように

ここは前回に比べて割とうまくできるようになったと思います。 web pprofを アッキー (@akki_megane) | Twitter が色々調べてくれたおかげでとても見やすく、分析に置いてもとても役立ちました。

f:id:zoe302:20190914153034p:plain

(写真は↑しかとってなかったのでこれだけ、、)

2チーム参戦

これについては自チームの話とは関係ないですが、身内のコミュニティから今回ついに3チーム参戦しました。 ずっとISUCON面白いぞ、といいながら練習会をやってきた甲斐がありました。どのチームもコミュニティ名の「oysters」に少しかけた名前で出場してくれてました

当日やったこと

書こうと思ったけど疲れてきたので特に工夫したことだけ書いて、あとは当日のgithubレポジトリを貼っておきます。

工夫したこと

ポモドーロ

25分で作業を行い、5分でやったことの報告と次やることの報告。2ポモドーロ進捗なかったらみんなで解決に当たる。という方針でやってました。

環境構築について

今回はalibaba cloudのコンソールから各参加チーム代表者が運営に共有されたイメージをもとにインスタンスを立てベンチを回すと言う形式でした。 なので、まず最初1台を立て準備を整えベンチを回し、初期バックアップなどのスクリプトを実行した後、そのインスタンスをもとにカスタムイメージを作成し、作成したカスタムイメージをもとに 4台 インスタンスを立てました。 2台は最初に立てたものと合わせて競技用のインスタンス、残り2台はチームメンバーの開発環境として配布しました。

施策の検証方法について

これは試行錯誤しながら思いついた方法ですが、開発環境として本番同等のインスタンスを渡すことが出来たので、アプリ側で改修したものが正しく改修出来ているかを確認する方法として、本物のポータルのベンチを使う、ということができることに途中で気づきました。具体的にはポータルでベンチを回す際にはグローバルIPアドレスとインターナルIPアドレスを入れてサーバを登録後、ベンチを回すのですが、どうせ本番提出時もベンチに使うIPはproxyしているwebサーバだけなので残り2つをチームメンバー二人のサーバを登録することで施策をそれぞれ改修してベンチを回してデバッグするということが出来ました。 おかげで、本番に上げたらベンチ落ちてまた改修、みたいなことを減らすことが出来ました。

当日レポジトリ

github.com

基本的に当日はこのissueをもとに行動していきましたのでだいたいやったこと、やろうとしたことはこれを追えばわかるはず。 (このレポジトリはこのブログを書くにあたって公開にしており、ISUCON開催中はプライベートリポジトリでやっていました。)

当日の様子 (ちなみにこのとき僕は熱を出していて、しんどかったのでノーリアクションですが、めっちゃ楽しかったのでISUCON終わる頃には熱が治ってました)

振り返り

チームで振り返りをしたら追記します!

最後に

運営さんいつもありがとうございます。 ISUCONもかなり規模が大きくなってきたので今まで通り出来ない部分や、期待も大きくなり大変な部分も多くあるかと思いますが、 いつも問題作成、運営してくださり、とても楽しく参加させていただいております! 特に今回は問題のクォリティも高くとても準備に力が入っておりとても満足させていただきました!