2016年9月18日この話を頂いた時は正直「名誉運営とは」と思ったのですが、本選に進むつもりで予定も開けてたしと二つ返事で引き受けることにしました。本選運営のお手伝いとしてやったことは以下のとおり。自分の知見に基づくアドバイスなどAzure関連Azureの特性を踏まえた上での構成検討やワンクリックデプロイのためのテンプレート作成などを行いました。予選ではデプロイの仕組みにcustomData使われていましたが、customDataは実行スクリプトをbase64に変換する必要があり、変更のたびに手間がかかるので、カスタムスクリプト拡張機能を用いてデプロイすることにしました。customDataはUbuntuなど一部のLinuxでしか動作しないため、カスタムスクリプト拡張を利用するのがオススメです。Analyticsを用いて競技者の各サーバにメトリックス情報を収集する拡張機能もインストールするようにしました。2016年10月22日そうそれそれ。実は私のミスでOMS側がうまく動かなかったんですけどね...。本選の準備はGitHubのプライベートリポジトリで進めていたのですが、Azureのワンクリックデプロイを実現するためには公開領域にテンプレートを置く必要があることと、デプロイ用のファイル一式を固めたファイルを生成する必要があったため、CI環境を作成しました。CIサービスはプライベートリポジトリでも無料で使えるWerckerを採用しました。今回の本選はDocker環境だったのですが、Dockerのビルドおよび動作テストを行うために別途Jenkinsサーバも用意しました。DockerのテストにWerckerを使用しなかったのは、現状Dockerのビルド環境としてWerckerは使えないためです*1。本選のPython実装は私が担当させていただきました。私が本職プログラマーだった頃は主にPerl/PHPを生業としており、インフラエンジニアな今はちょっとしたツール作成にPythonを書くことが多いもののPythonでWebアプリケーションを実装した経験はほぼゼロ。不安でしたがなんとか実装することができました。当初はTwistedベースの実装を依頼されたのですが、着手してみたところ自分の力量では無理だと判断し、Flaskで実装しなおしています。Eventsの実装でyield周りがうまく動かず、ギリギリになって急遽Python2+Gunicornに置き換えたりしました。残念ながらPythonで予選を通過したチームはいなかったようなので誰からも試されていない可能性があります。良かったらPython実装で問題を解いてみてくださいね。自分の知見に基づくアドバイスその他、自分の知見に基づいたアドバイスをいくつかさせていただきました。途中からの運営参加で色々と口を挟むと快く思わない人もいるかもしれないと思い、あまり出しゃばらないように心がけてました。結果として出しゃばってましたね。ごめんなさいごめんなさい。いやぁ運営ってこんなに大変だったんですね私はただのお手伝い要員でしたが、それでも結構大変でした。ISUCON運営ってこんなに大変だったんですね。ただのお手伝いでこれだけ大変なのに、メインの運営の皆様がどれだけ大変かは想像もつきません。皆さん運営の方々に感謝しましょう。ありがとうありがとう。*1:できなくはない。QiitaにWerckerでDockerビルドをやる記事あります<前の日プロフィールtmatsuuGentooに関する話題など。gentoolinux。