総括
来年もっと精進してもう一回リベンジするぞ。
詳しい、解放についての考察等は、別途します。
とりあえず、やってみての感想。
振り返り
Keep
- isucon本で勉強したことは、当日しっかりできた。
- 当日楽しみながらできた。
Problem
- isucon本攻略をしっかり進めれば、もっとスコア出たはず。
- GoでのWebアプリケーションの経験が0だった。
- debugスキルが皆無だった。
- 過去問を解いてチームで予行練習をしておけばよかった。
- 特にssh周りなどで結構躓いた。
- 生のLinuxサーバーでの開発経験が少なかった。
- gitを上手く使えなかった。
- addに時間がかかりすぎるという理由で、使うのをやめた。
- 利用している技術がなんなのか。どのような役割をしているのか?などをなんとなくでしかわかっていなかった。(DNSやnginx等)
Try
- isucon本を読み、isucon本の内容について一通り説明できるようになっておく。
- Linuxサーバーでの開発経験を増やす。
当日の感想
普段の開発環境ががサーバーレス・コンテナ開発に偏りすぎているため、コンテナを使わないLinuxのサーバーを使った開発力が低かったと痛感。
GoでのWebアプリケーションの開発経験がなかったため、動いている今のものを下手に弄ることでスコアが下がると嫌だ。という感情が強かったのがよくなかった。
gitも上手く使えずに、とりあえず直にサーバーを修正すればええやろ。(絶対業務ではしないが)といったノリで進めてしまったのが良くなかった。
普段業務でウェブアプリケーション開発をしていない分、過去問などを通じて精進をするべきだった。
細かい反省
開発UX観点
code deployフローの整備
直接Linuxサーバーで作業をしたため、普段の自分がやり易い環境を活用し切ることができなかった。
スコアに直結しそうな改善をし、PRを作りMainにマージしたらサーバーにdeployされてベンチマーカーを回す。
この一連のサイクルを回せるともっと開発が楽で楽しかっただろうなと思った。
gitの活用
git add .
が時間かかりすぎて、途中でgitを使うよりとりあえず作業を進める。という方針にしてしまった。
これによって、確かにスコアが上がったけど...何がよかったの?というのがわからなくなった。
チーム内での作業の振り返りも『なんとなくこんなことやってたなぁ』になってしまったのは、よくなかった。
作業ログを残すためにも『gitをなんとでも導入するよ。』というのは、チーム内で決めておけばよかった。
やることリストを作る
始まったらやるべきことの共有などができていなかった。
どんな問題であったとしても共通でできることがあるはずなので、そういったことをまずパパッとやる。といったやるべきことリストを作っておくと当日の午前中がもっと有意義になったはず。
開発観点
自信を持ってる言語がなかった
なんの言語でもいいが、『自信を持って高速化できます!任せてください!』と言える言語がなかったことで、アプリケーション自体の修正に手を出すことができなかった。
特定のhttpリクエストで失敗していることまでわかり、どこの関数を修正すればいいかまで見えたが具体どうすればいいかの解決策を提示できなかった。
どんな言語でもいいから、『Webアプリケーション作れます。』『同時アクセス数が多くても行けます。』みたいに自信を持った状態にしておくべきだった。
最近はPythonばかり書いているが、WEBアプリケーション開発はしていないので、やはりGolangを勉強するのが良さそうだなという感想。
ミドルウェアの理解が甘かった
nginxやDNSについて、理解がなんとなくしかできていなかった。
課題に対してなぜこの施策が有効なのか?を説明した上で、施策のの具体的なconfig設定まで出来る理解力がなかった。
当日のスコアの推移
途中ベンチを動かせない時間があったりしたが、地道に少しずつ伸ばした感じです。
最終的には、6000点オーバーにすることはできました。
最後に
isuconみたいなWebアプリケーションのパフォーマンスチューニングは業務では必要にはならない。
だからこそisuconに参加して今までの業務で触れなかった世界に触れたのはよかった。
僕のやりたいこと的に今後パフォーマンスチューニングが必要な業務に従事するか?でいうと多分No。
だけど、課題があるシステム構成に対して施策を考察して、考察した結果を実装し、ベンチマーカーで数値改善しているか?を確認する。このフロー自体はとても好き。
趣味として今後もやりたい。
AtcoderやKaggleとかよりも、個人的には好きなコンテストだった!
勉強の過程で得ることができる知識が、僕にとってとても有意義だったし、楽しかった!