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

アプリボットにおける負荷試験への取り組み【CAGC2024】※2025年3月6日までの公開

CyberAgent
March 08, 2024
210

 アプリボットにおける負荷試験への取り組み【CAGC2024】※2025年3月6日までの公開

アプリボットがこれまでに行なってきた負荷試験の課題と解決策についてご紹介いたします。
負荷試験では、スケジュールやコストといった計画の問題や、目標の数値の決め方など、こうしておけばよかったということが毎回発生しますが、このような経験はどうしても属人化しがちです。
また、負荷試験の成功のためには、エンジニアだけでなくプロジェクト全体の協力も必要不可欠です。
これらの課題を繰り返すことなく安定したサービスのリリースを行なっていくために、会社として今後どのように負荷試験に取り組んでいくかについて解説いたします。

https://cagc.cyberagent.co.jp/2024/session/index.html?id=Up3Q7sqL

© SQUARE ENIX Powered by Applibot, Inc. CHARACTER DESIGN: TETSUYA NOMURA / CHARACTER ILLUSTRATION: LISA FUJISE
Copyright © CyberAgent, Inc.

CyberAgent

March 08, 2024
Tweet

More Decks by CyberAgent

Transcript

  1. 15 15 目標の 決定 負荷試験 の成功 事業責任者 負荷試験 リーダー エンジニア&

    SRE 目標の 達成 達成要件 の明確化 開発 ディレクター 適切な 試験準備 課題 1. スケジュールの確保
  2. 17   開発初期〜  ミニマム  負荷試験  準備期間           リリース           負荷試験           準備期間 リリース
 負荷試験


    ミニマム
 負荷試験
 負荷試験
 ツール選定
 スケール 環境準備
 ミニマム環 境準備
 定常
 シナリオ作 成
 コスト
 削減設定
 定常シナリオ
 全API対応
 試験項目の 洗い出し
 新規技術の
 検証判断
 負荷試験リーダー バックエンドエンジニア mock
 作成
 SRE DAU想定他
 要件の収集
 APIログ
 バッチ
 など実装
 クラウド
 上限緩和
 課題 1. スケジュールの確保 APMの
 組み込み
 リリース
 シナリオ作 成

  3. 原因 安全にリリースできることを最優先とした計画 - コストはかかっても、目標値はマストで達成するという前提 - 過剰なサーバ構成で何度も試験 - シナリオ修正や、コード修正確認でも常にリリース想定の構成 - 利用しない時間でも環境が起動

    - 休日・夜間の環境停止忘れ - 朝から起動したが、試験を行なったのは夕方以降 - 一定量のリクエストを24h継続して流す試験 - RDSのI/O料金・ログの転送による各種課金量を想定できていなかった 課題 2. サーバ費用の高騰 23
  4. 25 課題 2. サーバ費用の高騰 解決策 小さい構成、短い期間で試験を行える仕組みをつくる • 前提 ◦ インフラ環境はAWS

    ◦ モニタリングはDatadog ◦ ログ分析はSnowflake • 共通して挙げられるのが、「従量課金」であること
  5. 26 課題 2. サーバ費用の高騰 解決策 小さい構成、短い期間で試験を行える仕組みをつくる • 環境の起動・スケール・停止を誰でも簡単に行えるようにする ◦ Jenkinsジョブに登録し、実行するだけの状態

    ◦ 停止忘れ防止として0時を過ぎたら自動停止 • 大量のリクエストが必要な試験以外で、大きい構成を利用しない • 試験目的、手順を確定してから試験環境を起動する ◦ 何を見る試験か、がない状態での起動は行わない
  6. 1つの環境のスペック調整で対応しようとすると、 • 変更にかかるオペレーションと待機時間が発生する ◦ 何回も発生してしまうとかなりの時間が取られてしまう ◦ 変更の手間を嫌って、過剰な構成での試験を続けてしまう • 構成自体に無駄な部分が生じることは避けられない ◦

    DB・KVS分割数の変更 環境を分けることで、 オペレーションの手間をなくし、過剰な構成で試験を継続してしまうことを避ける。 28 課題 2. サーバ費用の高騰 用途によって使い分けができるよう、2種類の環境を用意する
  7. 負荷試験のメインループ 定常シナリオ試験 目標RPS達成 スケールアウト 試験 ミニマム環境 障害試験 ロングラン試験 など 運用試験

    周辺システム検証 限界性能試験 など シナリオ 作成・修正 想定 DAU スケール環境 最大 DAU 想定 DAU 課題 2. サーバ費用の高騰 33
  8. 負荷試験指南書とは • Applibotで得た負荷試験の知見をまとめたもの ◦ 一般的なメディア上にはない知見 ◦ 大規模開発でしかわからないこと ◦ アプリボット内での仕事の進め方やフローの実例 ◦

    参考となる具体的な数字 負荷試験指南書を利用して今後の負荷試験を実施 新たな知見を負荷試験指南書に貯めていくサイクルを作る 41 課題 3. 経験の属人化
  9. 42 負荷試験指南書(プロジェクト編)の概要 対象読者: 事業責任者、開発ディレクター、バックエンドエンジニア、SRE 1章 負荷試験とは - 負荷試験の目的、目標数値の考え方、負荷試験の実施タイミングと スケジュール感 2章 役割毎のミッションと取り組むべきこと -

    各役割の方に意識していただきたいこと - 負荷試験にかかる費用、実施しないことに対するリスク、負荷試験の スケジュールの確保、運用時の戦略を含めたシナリオ作成等 3章 過去の事例まとめ 課題 3. 経験の属人化