さてみなさんこんにちは。
デジタル創作サークルUniProjetのあかつきゆいとです。
今回は、同じくUniProのしばいぬさんとISUCON 14に参戦した話です。
※「ISUCON」は、LINEヤフー株式会社の商標または登録商標です。
ISUCONとは
ISUCONとは、「いいかんじにスピードアップコンテスト」の略で、LINEヤフー株式会社さんが毎年やってくれています。
その名の通り、お題として渡されたWebサービスを(サーバーなどのインフラから丸々)高速化して、速さを競うというものです。
1チーム3人までで、学生枠もあったり、賞金もあったりして、今年のISUCON14では800チーム以上が参加していたようです。
参加したきっかけ
私はですね...
ここで言うのもなんですが、東京科学大学(旧:東京工業大学)デジタル創作同好会traPさんに強い憧れがありまして...
UniProもそんな思いで立ち上げたのです。
その、traPさんのメンバーがISUCONに参加していたのを見て、これやってみたいわってなったのがきっかけですかね。
あとは、こたまごさん(さくらインタの方ですね)が作問をしていたことでより深く知ったというのもあるかもしれません。
当日やったこと
- DBのインデックス化
- MariaDBに変更
- HTTP3/QUICに
- 3台あるサーバーをそれぞれNginx専用などとして分散
- Goをいじってアルゴリズムを変えようとした(が、無理だった)
参加してみてわかったこと
問題文というか、仕様書を理解するのがまずむずい
当日問題が発表されて、それと同時に仕様書に当たるマニュアルが配られます。
そこでまず、関門1です。
読んでも内容を理解するまでに時間がかかる。
これにつきます。
当日配られたマニュアルがこれです。
https://gist.github.com/wtks/8eadf471daf7cb59942de02273ce7884
https://gist.github.com/wtks/0a3268de13856ed6e18c6560023ec436
これを読んで、まずどこのエンドポイントがどういう動きをしているかを理解する必要がありました。
最初こそ良かったものの、最終的にサラッと流してちゃんと理解できていなかったのが仇となり、だいぶグダりました。
インタプリタは遅い
最初から用意されている言語の中で、私がちゃんと使えるのはJS/TS, Pythonで、しばいぬさんが使えるのはPythonという状況だったので、Pythonでプログラムいじろうって話になってました。
ただ、インタプリタだからか、すげぇ遅いわってなりました。Goに変えるだけでx1.5くらいのスピードが出ました。劇的変化ですよ。
ただ、今までほぼ使ったことのないGoはそもそもビルドでちょっとつまづきましたね。
AWSの使い方がまだまだだなと
AWSとか使ったことなかったんですよね。
というのも、UniProにはしばいぬさんの家にあるProxmoxがあり、それをいつも使っているので、クラウドを使うことがありません。
私が業務で使ってきたものは、偶然にもMicrosoftAzureだったり、GCPだったりで、AWSは全くの無知でした。
仲間は大切
やっぱりね、今回もしばいぬさんに助けられてばかりでしたね。
大事です、仲間は。
改善点
やはり、知識不足を感じましたね。
スロークエリとか全然考えてませんでしたし、SSEに関する知識が全然なかったですね。
あとで解説聞いて、ほへーとか思いながら聞いてました。
まとめ
やっぱり楽しかったですね。
学ぶことも非常に多かったです。
今回は500位を超えてしまいましたが、来年は200位くらい目指したいですね。