Slide 1

Slide 1 text

ISUCONに初参加して 40位だった話 mo12412 1 「ISUCON」は、LINEヤフー株式会社の商標または登録商標です。 https://isucon.net/

Slide 2

Slide 2 text

もくじ  結果  参加の経緯  事前準備  当日の動き 2

Slide 3

Slide 3 text

結果  得点 22,274  順位 40位 https://isucon.net/archives/58837992.html 3

Slide 4

Slide 4 text

参加の経緯  社内の有志活動の中でISUCON参加の募集があり参加  チーム編成はあれこれあって最終的に3名 4

Slide 5

Slide 5 text

事前準備(1)  2か月前から開始  たくさん解いて雰囲気をつかむ  ISUCON 13 https://github.com/mo124121/isucon13-try  Go  Private-isu(ISUCON本のやつ) https://github.com/mo124121/private-isu-try  Go  ISUCON 13 https://github.com/mo124121/isucon13-try-rust  Rust  ISUCON 12予選 https://github.com/mo124121/isucon12-qualify-try  Rust  ISUCON 11予選 https://github.com/mo124121/isucon11-qualify-try  Go  記事を眺めてよいやり方を知る (pprotein, トレース, tailscaleあたりはこの辺から)  ISUCON13 1位 https://zenn.dev/tohutohu/articles/923bdf5dcd73af  ISUCON13 4位 https://blog.p1ass.com/posts/isucon13/  pprotein 解説 https://zenn.dev/team_soda/articles/20231206000000 5

Slide 6

Slide 6 text

事前準備(2)  デプロイの方法を固める  8時間、一瞬 → どれだけ効率よく開発して、改善を仕込めるかが勝負 → デプロイを確実にやる方法を準備  Ansibleを基本に構成  上位勢はgit+シェルスクリプトっぽいので、こちらもよかったかも  テレメトリの取得  「推測するな 計測せよ」 → 目隠しで改善はできない → 必要な情報をちゃんと見れるように準備  専用のリポジトリを作成 + 監視用のインスタンスを外部に準備 https://github.com/mo124121/isucon-o11y  各種ツールを仕込む  ログ pprotein  メトリクス Prometheus + node exporter + process exporter  netdataを使っている方も多くてそちらもよさそう  トレース jeager  開発ツールの整備  監視対象のポートをあれこれ開けたい  Cloud formationでデプロイするリソースをいじるのはまずそう(env checkで落ちて失格?)  tailscale(P2P VPN)  DBをGUIで眺めたい  DBeaver (+ DBの設定@本番) (PHPMyAdminも試したが手元だと超遅かったので切り替え) 6

Slide 7

Slide 7 text

当日の動き  あんまり覚えてない…改善はコミットログを見てください  https://github.com/Akijin007/isucon14  主な担当  初動のcloud formationデプロイとか 計装関係の設定とか  Chiを想定してなかったのでトレースができず…  クッソ重いクエリの修正(なおデバッグで沼った)  インメモリキャッシュの実装  DBの分離(なお失敗) 7

Slide 8

Slide 8 text

振り返り  初参加で結構いいスコア・順位  ISUCONは準備は大事で、適切な準備ができた感ある  改善も計測してわかった内容を着実にやればOK  何より残りメンバー2名に恵まれた  Goの実装力が足りない  静的解析が有効に機能しない場所でバグりまくり、どうしたらいい?(DBまわり、sync.Mapまわり)  このあたりはRustの方がよかった?ただDBは厳しそう  チーム練が足りなかった  諸般の事情によりチームが決まったのが本番1週間ちょっと前  シナリオ分析、わからない  スコアに効く改善は何か?は単なるボトルネック分析では見えてこない  1位になるには(ボトルネックの対処ができたうえで)もう一歩分析のアプローチ(あるいはエスパー力)が必要 8