ISUCON10 に参加してきた話
こんにちは、 @kz_morita です。
9/12 日に行われた ISUCON 10 に参加して,惨敗したので記録を残しておこうと思います.
悔しい結果に終わってしまいましたが,とても楽しかったです!
今回の題材 今回の課題アプリケーション は ISUUMO でした.
ISUUMO は ISUCON 社が提供する「イスに似合う不動産を検索できる」総合情報サイトです。
リモートワークの普及によって、自宅のイスが生産性に直結することがわかった。 その調査結果を受けて、よりよい座環境を求め郊外に住むことを考えるユーザーが増加。 また、注目度が増したことで bot からもアクセスが急増し、機会損失が発生している。 結果として ISUUMO にアクセスが集中し、負荷に耐えられないことが目立ってきた。
社長「なんか最近遅いみたいだから、いいかんじに早くしといてくれる? 21 時にバーンと新しい CM 打つしさ!」
とのことでした.毎回課題が面白くてすごいなぁと思います.
https://gist.github.com/progfay/25edb2a9ede4ca478cb3e2422f1f12f6
また,今回のアプリケーションの特徴としては,next で静的サイトを generate して nginx でホスティングされていて,参加者は API側をチューニングするというものでした.
実装言語は,去年と同様 golang で参加しました.ちなみに初期実装に Rust もあったのは驚きました.(あとで読んでおこう)
やったこととか 時系列順にやったことをざっくりと記録していきます.
時系列うろ覚えなので正確ではないかもです.
事前準備 Deployや,profile を取るための スクリプト類をチームメンバーの方が整備してくれて,それを持って臨みました. ISUCONに,出場したのは 4回目くらいでそれまでにスクリプト化した秘伝のタレ的なやつがいくつかあったので ISUCON もどんどんカスタマイズして使ってました.
最終的には,以下のようなコマンドでアプリのデプロイが完了していてとても便利でした.
$ make && make prod deploy 12:00 ~ まずは,色々と足回りを整える作業をしていました.
レギュ−レーションの読み込み ssh の設定 nginx で bot を弾く設定 src を git で管理 etc 系 (nginxや,mysqlの設定ファイル) の git 管理 Makefile を整備 (環境情報を整備したり) pprof の仕込み アプリケーションの動作確認 ソースコードの概要把握 profile (pt_query_digest, kataribe) の準備 14:30 ~ 一通り足回りが整ってきたのでアプリケーションの修正を始めました.