ISUCON7 予選2日目にチーム「学生気分」で参加した

f:id:tomo_ari:20171023004637p:plain

ISUCON7予選2日目に参加した。メンバーは昨年、一昨年と同じく @osyoyu, @KOBA789, @everysick とチーム「学生気分」で出たが、実は大学を中退して学生ではなくなったメンバーが1名いるので一般枠です。

最終スコアは 80770点 (ベストスコアは 87598点) で、惜しくもなく予選落ちしてしまった。が、仮に学生枠で出場していれば3位で予選通過だった点数は取れたので、実力は伸びてるっぽい(?)。

最終的な構成

  • Server 1, 2
    • puma (1 worker, 16 threads)
  • Server 3
    • puma (1 worker, 16 threads)
    • MySQL

所感

チームを組んで3年目、ようやく ISUCON を戦える分業体制が敷けた。全体として時間の浪費を減らし、問題そのものにきちんと取り組めたが、その分だけ点数を伸ばしきれなかった悔しさがある。けれども、初めて*1まっとうに戦えたので、その点はちょっと嬉しい。

自分は下回りと DB を整え続ける役回りをやりつつ、アプリを正攻法で殴っている KOBA789 をペアプロ的な感じで手伝っていた(と思う)。コードを触る人をとにかく減らしたことで現状に対するメンバーそれぞれの認識が分散しなかったことと、単純にコードが分散してしまって最新が行方不明になる類の事故が完全に防止できたことで効率よくボトルネック潰しに取り組めた。everysick は Redis とかやってたと思う。

同じ部屋に集まり、何をしているかを声に出すことで作業内容を共有し続けたことで、手がついていない事項も共有され、途中から自然と分担が進んで効率が高まっていった。

Server 1 に適用したコードや設定の更新をほかの2台に配布・適用するだけの超雑なスクリプト (mamiya.sh と名付けた (失礼)) を書いて運用していたが、非常に便利だったので、この手のツールを面倒臭がらずに作るのは大事ですね。

所感2

経験というか、このチーム固有の便利なことなんだけれど、KOBA789 と everysick がほとんど同じ Emacs の設定を使っていて、自分だけ Vim なので、設定のコンフリクトが起きなくて楽。とはいえ zshrc は 2vs1 でかなりカチ合うわけだけど、それはもう分かりきっていることなので PROMPT などを書き換えるスクリプトをササッと書いてログインするたびに叩いてた。後者は経験か。

上にも書いたけど、コードに触る人を減らしてしまうことでマージ・デプロイの煩わしさを減らせたのは良かった。この辺は普通の感覚ならば UNIX ユーザーをそれぞれ作ったり、それぞれの作業用インスタンスを作ったりしたくなったりして(実際今まではそうしていた)大変なことになっていたと思うので、これも ISUCON 経験なんですかね。

あとは床に寝そべらず、椅子に座ったのが良かったのかも。

所感3

スロークエリや分かりやすいボトルネックなどを潰しきり、終盤はやるべきことが分からなくなってしまったが、上位陣とは背中も見えないほどの点数の開きがあったので、彼らは本当に強いんですね……。

やったこと・やれなかったこ

この項を忘れないうちに書いてしまいたいのだけれど、手元にメモがないのでまたあとで

*1:昨年・一昨年はほぼ0点に近いスコア