見出し画像

次のISUCON予選に参加する前に思い出しておきたいこと

当日までにやったこと

ISUCONの準備は毎週土曜日に集まってしていました。時間は4時間ぐらいで、過去の問題をローカルで動かせるようにしてベンチマークを上げるようなチューニングを試していました。ISUCON8など以前のISUCONの問題は私の知る限りLinuxとAnsibleなどの環境構築ツールがデフォルトになっていていました。私を含めてチームメンバーはDockerに慣れていたので、慣れていないためほとんど時間を環境構築に使っていました。アプリケーション側の問題点を解決する練習は3割程度やりました。私の場合7割程度の時間をローカル環境で動作させられるようにするために使っていました。
私たちのチームは3人チームで、事前に役割分担を決めました。2人がアプリケーション担当、1人がDBとインフラを担当となりました。

本番でやったこと

コードとデータベースのパフォーマンスの分析にはNew Relicを使用しました。
本番ではインデックスを2つぐらい張って、DBを2つのインスタンスに分割したぐらいです。それ以上のことはできませんでした。N+1などよくある問題がある事は分かっていたのですがそれを解決する具体的なコードに落とし込むことができませんでした。

どうするべきだったか

問題の内容に時間をかけることができなかったのがあまり良く無かったのではないかと思っていましたが、ISUCON10の予選に参加して思ったのは基本的な解決のアイディアだけわかっていれば良くて具体的なコードを何度も練習する必要はあまり必要無いとかなと思いました。
最初にNew Relicを使用して分析したところまではよかったです。その結果問題となっているパフォーマンスをしている部分やクエリの問題を見つけることができました。しかし具体的な解決法方法を見つけることができませんでした。また、それに大部分の時間をとられてしまい結局たいしたチューニングをすることができませんでした。
このことから思ったのは、みんなでアイディアを考えあう時間を取る必要があったかなと思います。全員の能力はあったと思いますが個人個人で行動していることが多かったため結果的にチームで解決するということができませんでした。
その他にはドキュメントをある程度深く読めば必要となる解決方法が見つかるかなと思います。

この記事が気に入ったらサポートをしてみませんか?