平常運転

アニソンが好き

過去記事とかは記事一覧で見れます

ISUCON7に参加して予選敗退した

はい。

isucon.net

Iikanjini Speedup Contest こと ISUCON に参加して本戦出場できず予選敗退となった。2年前に出場したときは本戦に出場(して惨敗)したけど、今年は予選落ち。予選を突破できなかったのは残念だし力及ばず悔しい点もあったけど、いっぽうで上位10%には食い込めたことに一定の手応えも得られたなど実りも大きく、参加した甲斐のあった ISUCON だったと思う。

去年の様子です:

astj.hatenablog.com

astj.hatenablog.com

詳しいところはチームメンバーだった id:aereal がブログを書いているので、そちらにお任せ。こちらでは単純に感想とポエムを書きます:

this.aereal.org


今回のチームは、 id:tanishiking24id:aereal と3人での 秒速5000兆クエリ という名前のチームだった。チームメンバー全員が所謂アプリケーションエンジニアだったので、その中で一番オペレーションの得意なぼくがいわゆるインフラエンジニアに近いところをやるとよさそうと思っていたのと、また本戦出場経験もあるので進行もある程度できるといいかなーとは思っていた。
実際その目論見そのものは割と当たったと思う。競技開始直後のサーバの本当に最初のセットアップ(SSH 公開鍵配置とか)であったり、最初のコードの読み合わせであったり、あるいは終盤で再起動試験を見据えて一度再起動したり。プレイングの中身はとにかく、 ISUCON をつつがなく進行させるというところに関しては良い働きができたと思う。
また、オペレーション的なところも実際はそこまで抱え込まずに済んでよかった。事前にリハーサルした時に分担を決めたのだけど、 id:tanishiking24 には nginx のログパース周りのセットアップをお願いできたし、 id:aereal にはソースコードを git 化してデプロイ可能にする……という足回りのところをお願いできた。

そうそう、時系列が前後するけれど、今回事前にリハーサルを1回執り行ったのだけれど、それのおかげで分担の決定やオペレーションの練習もできて大変よかったというように思う。特にオペレーションに関しては、リハーサルの時に行った作業をなぞるだけで本番も環境が構築できたのは良かった。

……というのを前置きにして競技の中身自体の話をする。
id:aereal のエントリにもあったように、我々もベンチマーカに正しく 304 を返すことに大変難儀してしまった。このあたりを主に見ていたのは僕だったので悔しい思いをしたのだけど、一方でこのあたりの領域は個人的にあまり仕事で触っていなかったので、「ふだんやらないことを突然やろうとしてもうまくならない」というところでは仕方が無いという思いもあった。
ただ、ここの画像ファイルに関する話題で言うと、「ひとまずできることをやってみよう」から始めた結果時間と労力を随分割かれてしまったと思っていて、部分最適に囚われすぎたかなあという思いがある。画像ファイルの配信があり、それが MySQL に入っている……という構図を見たときに真っ先に静的ファイル化は検討されるべきだったと思う。勿論チームでも検討はしたのだけど、「静的ファイルに書き出すの大変だしひとまずクエリチューニングしてみよう」という感じで MySQL のままその周辺に手を付け始めてしまってよくなかった。最終的にどうなってるとよいかをきちんと議論するべきだったという作戦の立て方の失敗も悔やまれるし、クエリチューニングは簡単にできると言うつもりがあれよあれよと工数が膨らんでしまったのも良くなかった。。。

まあ反省は尽きないのだけどこれくらいで。 id:aereal は ISUCON 初出場だけれど競技部分をきちんと引っ張ってくれたし、 nginx の設定チューニングからアプリケーションコードまで各所で非常に頼もしかった。 id:tanishiking24 もいろいろな実装をきちんと実装を進めてくれて、チームとしていろんな施策を並列度高く試せる状態を作れて大変ありがたかった。

ISUCON に関しては2年前も思ったのだけど、前述のように"ふだんやらないことを突然やろうとしてもうまくならない"というのが(特に予選では)真理だなあと思う。チューニングにしろリファクタリングにしろ、ふだんやってるからこそ効果的な施策を適切に打てるし、不得手なところは(手が遅くなるのは当然にして、それに加えて)施策の効果がどれだけ出るかの感覚が効かなくてどうしてもふわふわしてしまう。ISUCON のために何か能力を高めるというのも良いけれど、 Web アプリケーションの開発を仕事にしている身としては、ふだんからサーバサイドのチューニングに関する知見をきちんと身につけておくことで、 ISUCON の場でちゃんと成果を出せるようになりたいという未来へのモチベーションを改めて感じられて大変よい体験だった。

それにしても今回は参加チーム数も多く、かつ1チームあたりサーバ3台ということでさぞ準備は大変だったのだろうと思う。実際開始時間もスライドしていたし。その大変な中、取り組み甲斐のある問題と快適な競技環境を提供してもらえたことに関して、運営の皆さんには深く感謝したいと思っている。

まあいろいろ書いたけど、次に出る時は本戦出たいね!!!!!!力をつけます!!!!!!100万円ほしかった!!!5000兆円もほしかった!!!!!!!