ISUCON やることリスト
当日の大まかな流れ
- レギュレーション・マニュアル読解
- サービス把握
- システム構成把握
- 環境セットアップ
- プロファイラインストール
- ランタイムインストール
- デプロイ&計測フロー構築
- イテレーションを回す
- クリーンアップ
- デバッグログ片付け
- プロファイル片付け
事前に準備しておいたほうが良いこと
コミュニケーション手段
- 連絡手段の決定
- 既存 Discord サーバーでも良さそうだけどレギュレーション違反になりそう
- private channel 等を作ってそこでやるなど
- 通話環境は Discord でよさそうだが上記懸念
- ペアプロ方法の決定
- Goland つかう?
コード準備
- チーム間コード共有方法の決定
- Github Team や Organisms を作ったほうが良さそう?
- リポジトリ準備をしておいたほうが良さそう
- 使用したい Middleware の config ファイル
- チューニング可能な部分をコメントして当日調整できるようにする
- 使用言語のランタイム
- ビルド済みランタイムがあるとスムーズ
- IaaC
- 必要なミドルウェアをインストールするための準備
- ansible, chef, itamae 等
- 環境が Docker なのかによってだいぶ変わる気もする
- デプロイフロー
- デプロイフローをどのように行うかは事前に決定しておいたほうが良い
- 実際に事前に軽く構築してみたほうが良いかも
事前打ち合わせ・練習
- スムーズな環境構築ができるか実践
当日やらなければいけないこと
調査系
- レギュレーション読解
- マニュアル読解
- システム構成調査
- サーバースペック調査
- DB スキーマ定義調査
環境セットアップ系
- クリーンバックアップ
- プロファイリングツールインストール
- ランタイムインストール
- デプロイ環境の構築
デプロイフローについて
- デプロイ → 性能計測 → プロファイル までが 1 ファイルでできるようにする
デプロイ & パイプライン
- Github Actions でやる?
性能計測
- 当日に構築して 1 コマンドで諸々取得できるようにする
プロファイル
- 何をプロファイルするべきか事前にある程度あたりを付けたほうが良さそう
- CPU 占有率, メモリ使用率, レスポンスタイム
- プロファイル結果は Newrelic に流す?
- 粗い粒度を用意する(エンドポイント単位)
- 細かい粒度を用意する(ラインプロファイラ, クエリプロファイラ)
攻略法等メモ
- 何もわかっていないのに遅いところを潰すな(根拠をもって改善せよ)
- デプロイフローを高速化せよ(1分以内にデプロイできるように)
- やったことがないことをやるな(やりなれた手法を使え)
思ったことメモ
- ある程度のロールを決定しておいたほうが良い?
- mpyw: App チューニング
- joe: Infra チューニング
- wn-seko: 上記以外