🪑

ISUCON13参加のふりかえり&社内での取り組み

2023/12/09に公開

https://qiita.com/advent-calendar/2023/kaonavi

この記事は カオナビ Advent Calendar 2023(シリーズ2) 9日目です。

はじめに

カオナビCTOの松下( @matsukaz )です。

11月25日に ISUCON 13 に参加したので、遅ればせながらそのふりかえりになります!
私は前職の元同僚たちとのチームで参加しているんですが、カオナビ社内にも参加者がいて、今後もっと一緒に対策に取り組めたらと話しているので、その動きについても触れたいと思いますー。

ISUCON13の内容はこちら。

https://isucon.net/archives/58001272.html

ISUCON参加は今回で5回目でした。
昨年は私は参加できなかったので2年ぶり。
2年前は惜しいところまでいったので、今年こそは本戦出場を…!と意気込んでいたら、今年は予選がなく全員本戦で参加するとのことだったので、念願の本戦出場を果たせましたw
過去のふりかえりはこちら。

https://matsukaz.hatenablog.com/entry/2021/08/22/091123
https://matsukaz.hatenablog.com/entry/2020/09/13/003142
https://matsukaz.hatenablog.com/entry/2019/09/09/001929
https://matsukaz.hatenablog.com/entry/2018/09/20/081855

最終スコア

結果はどうだったかというと、最終スコアは 28,581点 でした。
まあまあ戦えてたとは思うけど、TOP30には程遠かったです。厳しい…

やったこと

事前準備

基本的には2年前と変わらずで、毎年継ぎ足ししてきた秘伝の自動化・環境構築スクリプトの使い方を軽く振り返ったぐらいでした。

├── Makefile  ← デプロイやツール類の操作、設定ファイルの反映などすべてMakefile経由で
├── bin  ← goのビルド結果ファイルを置くとこ
├── etc  ← 各種OSとミドルウェアの設定ファイル
├── logs  ← 取得した各種ログの置き場所
├── scripts  ← アプリやミドルウェア、プロファイリングツールを操作する系
├── src  ← アプリの実装
└── www  ← 静的コンテンツ

とはいえ2年ぶりだといろいろ忘れてたので、個人的には準備不足だったなぁと反省。

本戦でやったこと

序盤はいつもの流れで

  • レギュレーションの確認
  • アプリの仕様や全体構成の確認
  • ビルドやデプロイ、ログ収集など自動化できるようにスクリプトを準備
  • 初回ベンチを回す

あたりを行い、まずは全体像の把握から。
そこからは3人でSlackのハドルで話ながら分担を決めつつ改善していきました。

私は主にインフラ・ミドルウェア周りを中心に対応しました。
具体的には

  • DNSをラウンドロビンにしてアプリケーションサーバを2台構成に変更
  • MySQLを別サーバに分離
  • MySQLまわりのチューニング(インデックスを張ったり)

といったところ。
アプリケーションの実装周りも多少は見たものの、あまり手を出す余裕はなかったので、他のメンバーにお任せしてました。

反省点

N+1問題への対応やDNSの水責め問題など、まだまだできることも多かったのに、全然時間が足りませんでした。
思った以上に手が動かせてなかったなぁと。
普段から開発してたり手を動かしてないとダメですね…
なるべく時間作って手を動かすようにしなければー!

今後

個人としては来年もぜひ参加したいです!
同じチームで出場できるかは状況次第かな?

カオナビ社でもISUCON参加者がいるんですが、丁度このタイミングで社内で新しくWakkaという部活制度が生まれたので、ISUCONの集まりを作ってくれました!
会社から補助も出るので、みんなで集まってワイワイしながらISUCON対策やっていけるといいなー
来年は何チームか参加してくれたら嬉しい!!

まとめ

遅ればせながらのふりかえりになってしまいましたが、やはりISUCONは学びも反省点もありつつも、めちゃくちゃ楽しいイベントでした!!
ここまで準備するのはとんでもなく大変だと思うので、運営の皆様本当にありがとうございます&お疲れ様でした…!!!

Discussion