こんいす〜!前回大会では初期状態がハイスコアだった屈辱の「元同僚_最新_最終版コピー(2)_old決定版.xlsx
」
#isucon 予選大敗した話を書いたらISUCONブログ賞を受賞していました。選出いただきありがとうございます
— VTRyo (@3s_hv) 2022年8月30日
記事→ https://t.co/I9MrWuBdUM
Youtubeコメント→ https://t.co/aaxd8HJSzU
今回は649チーム中242位というフィニッシュ。ハイスコアは10,912
で、目標だった「初期スコアだけは超える。1万点超えたら自分たちを褒めてやろうな」を無事クリアした。
大会前
前回大会後に「来年もよければ同じメンバーで」という話をしていたので、もちろん同じメンバーで参加した。同じようにやる気があるならば、同じメンバーで再挑戦したかった。
今大会では現地参加できるチャンスがあったので抽選に応募したら見事に選ばれたので3人中2人が永田町オフィスにお邪魔した*1。
準備完了やで〜 #isucon pic.twitter.com/2vJJgxUTfU
— VTRyo (@3s_hv) 2023年11月25日
今回はメンバー全員のプライベート・仕事が忙しく練習する時間が取れなかったので、気持ちやや緩めに。しかし当日は全力で戦おうという意識で臨んだ。
大会中
今回は2回目ということもあり心に余裕があったことと、目標がはっきり決まっていたので浮足立つことなく自分たちが目指すものに集中できた感覚があった。
「まずは1点」ハイスコアが初期スコアよりも高ければ我々の勝利なのだ。ということでまずはおなじみのインフラ設定を私が実行。リポジトリや解析ツールの設定をしている間にアプリケーション担当2名にマニュアルや臭うコードをじっくり読んでもらった。
PowerDNSという経験したことのない構成に頭を抱える。インフラを担当しているが、DNSの仕組みはわかってない(おい!)。ていうかAWSが出てきてしまってから、ネットワーク系の理解が深まらなくなったような気がする。基礎中の基礎を知らないことに腹が立つ。
とはいえ手を動かさなければ始まらない。セットアップしたスロークエリやalpで解析をして、まずはINDEXを貼っていくことにした。初心者でもスコアが稼げるようになっていると、事前に読んだISUCON記事で読んだ通り非常にわかりやすいチューニングポイント。
しかしここからが問題だった。INDEXを貼っていく横で、自分ができることはサーバの負荷分散やDNSをなんとかすることだった。ここから数時間コンフィグをいじったり検証していたのだが、どうにもリクエスト転送エラーなどでうまくいかない。私がやろうとしていた手法はNginxによるproxy_passで別サーバに転送することだった。ベンチマークターゲットになっているNginxに対して別のサーバのIPアドレスを指定することでそっちへ転送しようとした。
ところが、それではどうしてもうまくいなかった。結局、負荷分散することもできず1台のサーバでやりくりすることになったのだった。お前今回何してたんだよ!
アプリケーション側もN+1とINDEX対応にしか手が回らず、icon_hashの改善中に時間が来てしまい終了した。
INEDXを貼りまくることで到達するのは1万点くらいだろうと思っていたが、実際それくらいのスコアになった。
ちなみに現地で配られた弁当は美味しかった!
大会後
スコア計算と結果発表までの間、現地は懇親会が開催された。缶ビールと軽食で疲労で溶けきった脳にバチバチと刺激が走る。
感想戦をやりたかったのだが、自分のやったことが薄々の薄で話すほどのこともなく、優勝経験のあるみなさんはいつも通り神々の戦い(感想戦)を展開しており話に入ることもなくウトウトしていた。他チームが何を考え、どうやってスコアを稼いだのかは正直めっちゃ気になっていた。
しかし自分たちが立てた目標達成できた達成感はあったので、優勝結果発表を聞いたあとはシュッと赤坂の街に消えたのだった。
ふりかえり
さて恥ずかしげもなく私のスキル不足ポイントをふりかえっておく。「できなかったことはわかってない」と自覚することくらいはやっておこうな。
- 講評に書かれているアプリケーションの構成を把握できなかった。アプリケーションがどんな要素を含んで作られているのか、といったこと
- どのようなルートでアクセスされるか把握できなかった(envのDBアドレスを変えれば負荷分散ができることに気づかなかった)。今回はDNSのを使ったものだったので、より理解ができなかった気もする
- 「TTLが0になっていることに気づいた」という人が割りといたが、なぜ自分は気づかなかったのか。たぶんDNSをどうにかできるイメージがなく、ちょっとした工夫すら諦めていた節がある
- インフラ周りからなんとかする、という担当にしてはやることに対しての解像度が荒く、打ち手を見つけられない引き出し感
ぱっと上げるだけでなかなかある。これをどうやって克服するか。そのままChatGPTに相談するか……。
おわりに
ゆるくふりかえってみた。今回のISUCONは元同僚のチームが他にも参加しており、ちょっとだけ知り合いが増えた大会だった。またどこかで感想戦ができるといいな。
ではまた来年。
*1:一人は広島在住