isucon6予選2日目に参加し通過できました


[まとめ] 現在開催中のKindleセール情報はこちら

@Konboi@tkuchikiとチーム流れ弾としてisucon6予選に参加しました。

使用言語はGoで、役割はオペレーション全般をtkuchiki、アプリケーション周りをKonboiと自分という分担で進めました。

謝辞

運営の皆様、準備/運営をありがとうございました。
非常に濃い時間を過ごすことができました。
引き続きよろしくお願いいたします。

やったこと

事前準備

当日

時系列のログはチームメンバーが詳細にまとめてくれているので割愛。

isudaとisutarの結合

結論から先に書くと最終的にこの変更は入れていません。

結合の対応を入れた後にベンチを回してコケたので、その修正を進めていたのですが、後にKonboiのhtmlfyのキャッシュ対応が入り、そちらで一気にスコアが伸びたので、そこを安定化させることにチームメンバー全員が振り切ったためです。

一応やったことを残しておきます。

  • 初回ベンチを回して/が遅いことが分かったのでKonboiに/部分のコードを見てもらいつつ、その間に自分はisudaとisutarの結合をすることに
  • まずはローカル環境作り
    • DBの構築とisuda, isutarのローカルビルド
    • isupamがないと怒られて焦りましたが、mac用のisupamバイナリが用意されており助かりました
  • 2つに分かれているDBをひとつにして、その後コードもisudaに結合するという方針でisutarのDBをisudaに結合
  • isudaのAPIにアクセスしている部分をDBのデータ参照に切り替えて、ローカルでビルドできることを確認
  • PRをtkuchikiに見てもらいつつ、手元のコードをデプロイ
    • tkuchikiが手元のコードをrsyncして再ビルドしてくれるデプロイコマンドを用意してくれていて助かりました
  • デプロイ後、ベンチを回したらコケたので原因を調査(この後、Konboiの修正が入る)

チームメンバーのサポート

  • tkuchikiが対応してくれたPRをレビュー
  • Konboiがperlでredisに書き込む際にハマっていたので一緒に調べる
  • キーワードの追加・削除時にキャッシュをどうしようか考える(結局いい案浮かばず)
  • tkuchikiがsystemdの依存関係にハマっていたので一緒に調べる

感想

なんとか予選通過できたものの正直なところ運が良かったとしかいいようがありません。
15時過ぎまでずっとスコア0だったので、不安と焦りでいっぱいでした。
キャッシュ対応が入ってスコアが一気に伸びたものの、キャッシュの整合性は取れていない状態だったので「何でこれで通ったんだろう」という疑問が最後まで残っていました。
また、ちょっとした修正をするのも時間がかかってしまい自分のGoのスキル不足を痛感しました。
本戦では二人の足手まといにならないように、しっかり準備をして臨みたいと思います。
Konboi、tkuchikiありがとう。本戦もがんばりましょう!

予選後の私

isucon予選で運を使い果たしたのか、この一週間非常に運が悪いです。

予選の翌日から食中毒になり、ひたすらお腹を壊し続けています(今も完治したかは怪しい)

原因はおそらく予選2日前に食べた鳥刺し。。。

予選中に発症しなかったことが唯一の救いです。

また、おかゆを買いに近くのスーパーまで歩いていたら、鳥のフンの直撃をくらうという奇跡的な出来事が。。。

「これが本当の流れ弾だなぁ」なんてことを思いながら人生の厳しさを感じました。

同じ過ちを繰り返さないためにも食事管理をしっかりして本戦に臨みます。

[まとめ] 現在開催中のKindleセール情報はこちら