この記事は アドベントカレンダー2023 5日目の記事です。
部内ISUCONこと「PISCON」を今年も開催したので、そのレポート記事です。今年の運営はボク (@cp20) 1人でした。運営的に大変だったこととか、大会の様子とかをつらつらと書いていこうと思います。
PISCONってなんだ
一言で言うと、ISUCON というWebサーバーのパフォーマンスチューニングを行うコンテストの部内版です。ISUCONについて詳しくは任意の他の記事を読んでみてください。 (今だとISUCON13が終わった直後なので大量の参加記が落ちてると思います)
ISUCONではWebサーバーに対してベンチマーカーが負荷をかけて、Webサーバーがどれぐらいチューニングされてるかを測定するんですが、それはポータルサイトからリクエストすることで行います。PISCONでは独自のポータルを用意して、ベンチマーカーをうまく走らせるようにしています。また選手が使う環境 (AWSインスタンス) もボタン1つで構築できるようになっています。チームの順位・スコアを見ることもできて、さながら本番のポータルのような機能を備えています。
そのおかげで本番のような練習を行うことができます。環境構築の手間も不要なので初心者も参加しやすくなっています。
ちなみにポータルはGitHubで公開されてるので (一応) 誰でも使えます。ただめちゃくちゃハードコード部分が多くて実際に使おうと思うとかなり大変かもですが、、、
開催レポート
今年のPISCONはISUCON9予選を使った第1回とISUCON11予選を使った第2回で計2回行いました。
第1回 10/20~10/22 + 延長
ISUCON9予選、ISUCARIを扱いました。参加チーム (のうち正のスコアを出したチーム) は19チーム、総参加者は31人でした。ちなみにボクも参加したんですが、忙しくてあんまりコミットできませんでした。先輩たちが圧倒的なスコアをたたき出していてすごいなぁ、、という気持ちです。
第1回PISCONの裏(?)で @pikachu0310 さんによるISUCON講習会が行われていました。超大ボリュームのテキストと、座学 & 実際にPISCONを題材とした実習を合わせて行いました。詳しくは以下のブログ記事を読んでみてください。
第2回 11/3~11/5 + 延長
ISUCON11予選、ISUCONDITIONを扱いました。実はtraP作問で、作問者も参加しています。そしてバッチリ1位を取ってくれました。流石です。
(初期スコアより高いスコアを出した) 参加チーム数は9チームで、総参加者数は20人でした。第1回はチームメンバーそれぞれで参加していたチームが第2回では一緒に戦うといった光景が見られました。
技術的な話とか
ポータル兼ベンチマーカーのインスタンスと、選手が使う用のインスタンスを全てAWSを使って建てました。なぜならポータルがそういう風に設計されているからです。ちなみにポータルはt3.xlarge、競技用にはt2.medium×3/チームのインスタンスを使いました。
AWSの個人アカウントを使っていたんですが、AWSのQuota引き上げ申請をする必要があって、なのに最初リージョンを間違えて申請しちゃったので第1回のときに東京リージョンで再申請したという裏話があったりなかったり。
ポータルを問題用に書き換えたりしなきゃいけなかったんですが、結構うまく行かないもので1日、2日ぐらい溶かしてました。大変だ~。具体的に何やったかとかが知りたい人はコミットログを参照して頂ければと
反省点
まず準備が遅すぎました。最初に話を振られたのが9/26で、その日のうちに引き受けたんですが、まともに準備を始めたのが10/9ぐらい、本格的に動き出したのは開催まで1週間切ってからとかだったのでホントにギリギリでした。そのせいで色んな人に迷惑をかけちゃったのは反省してます、、、
あとはAWSのQuota引き上げ申請ミスったのが反省ポイントですね。リージョンはしっかり確認しましょう。(1敗)
感想
こういう大会を運営するのはたぶん初めてなのに、1人で運営するのはもっと初めてでした。でもいい経験になったと思います。初めてAWSをまともに使った気がします。でも今度こういうことがあったらもっと人にタスクを振って行こうかな、という気になりました。
明日は @mera さん @noc7t さんの記事です!お楽しみに!
おまけ
過去にもPISCONやってるはずだけどブログないのかな?と思って探してみたら2019年のブログが見つかりました。
参加者6人で歴史を感じますね。