Upgrade to Pro — share decks privately, control downloads, hide ads and more …

継続的な負荷検証を目指して

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 継続的な負荷検証を目指して

クラウドネイティブ会議2026でお話ししました

Avatar for Kazuhiko Yamashita

Kazuhiko Yamashita

May 13, 2026

More Decks by Kazuhiko Yamashita

Other Decks in Programming

Transcript

  1. © GO Inc. 2 @pyama86 GO株式会社 バックエンド開発部 / pyama86 2014年よりGMOペパボ株式会社でホスティング事業や

    技術部で主にプラットフォームエンジニアリングに従事。 2025年よりGO株式会社においてバックエンド開発。 趣味は旅行、キャンプ、ハードワーク
  2. © GO Inc. 1. プライマリサーバに SELECTしてるものが かなりあった 2. トランザクションの中で外部 APIをコールしているものがあった

    障害の原因 DBの基礎を我々は何もわかっていなかった トランザクションが長期化し、 Wait系のメトリクスが上昇し、 DBが破滅
  3. © GO Inc. 1. 可観測性の向上 2. レプリカDBを利用するようアプリを書き換え 3. トランザクション実行時間の削減 4.

    縮退モードの開発 5. 継続的な負荷検証の実現 再発防止のためにやったこと 必要なことは全部やる
  4. © GO Inc. YAMLでテストシナリオを定義できるシナリオワークフローエンジン シナリオの可視化 k1LoW/runn 1. YAMLで宣言的にテストの内容を定義 AIとの協業がやりやすい 2.

    負荷検証以外に、 E2Eテストとしても流用できる 3. Goからライブラリ的に実行できる 4. 作者とメンテナ (@katzchum)が知人
  5. © GO Inc. k1LoW/runn desc: 検索→詳細取得フロー steps: login: include: setup_user.yml

    # 認証などの共通処理をinclude search: req: /v1/items/search: get: headers: Authorization: "Bearer {{ steps.login.token }}" params: query: "{{ vars.keyword }}" test: current.res.status == 200 wait_for_ready: loop: count: 5 interval: 3s until: current.res.body.status == "ready" req: /v1/items/{{ steps.search.res.body.id }}: Goのテンプレート埋め込みに対応 includeで共有資産化 debugもしやすい仕組み
  6. © GO Inc. シナリオの作成から実行まで さも人であるかの様に振る舞うために claude code dev api server

    runn production dev 1.ログを分析し、シナリオ作成 2. シナリオ実行 3.ログ出力 4.ログを閲覧、デバッグ YAML
  7. © GO Inc. 他に工夫しているところ 1. 負荷検証用のDBのデータは大量の本番相当の レコードを使う 2. 外部通信は全てMockする 3.

    テストに使うユーザーやドライバーは紐づくレコードの 多いものを自動決定する 4. runnのhttpクライアントの取り回し 5. 負荷クライアントのワーカー化 6. Grafana MCPの認証・認可