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

大規模サービスの負荷試験を改善していった話

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for 5st7 5st7
August 27, 2024
1.7k

 大規模サービスの負荷試験を改善していった話

Avatar for 5st7

5st7

August 27, 2024
Tweet

Transcript

  1. 4

  2. 5

  3. 負荷試験で採用したツール • k6 ◦ k6はGrafana Labsが開発している負荷試験ツール ◦ JavaScript, TypeScriptでシナリオを記述できる •

    k6-operator ◦ KubernetesのOperatorの一種 ◦ 複数クライアントからk6のシナリオを実行できる • Google Kubernetes Engine (GKE) ◦ k6-operatorを動かすために利用 11
  4. 負荷試験手動実行時代の負荷試験基盤 13 13 Load test Cluster (GKE) Datadog Application Cluster

    (GKE) ② k6リソースの マニフェストを適用 k6 runnner k6 runnner k6 runnner collect metrics, trace… Cloud SQL ① 関連するコンポーネントを起動 (CloudSQL, , Redis) Cloud MemoryStore 本番環境のデータをダンプして匿名化したもの (本番同等のデータの量・偏りを再現) 必要に応じてマイグレーションを実施 ③負荷試験を実施
  5. 負荷試験手動実行時代の課題① • 必要手順が多かった ◦ 必要なコンポーネントの起動(CloudSQL, Redis etc...) ◦ DBのマイグレーション ◦

    負荷試験のマニフェストを負荷試験用k8sクラスタにApply ◦ 終了後ダッシュボードを見て時間を絞って結果を確認 ◦ 分析結果をレポートに纏める • 人によって実施手順に差があった ◦ 実施手順の差で結果に差が出ていた ▪ 暖気運転の有無など 15
  6. GitHub Actionsによる自動化 22 GitHub Actions Load test Cluster (GKE) Slack

    Datadog Application Cluster (GKE) ③ 暖機運転/負荷試験用の マニフェストを適用 ⑤ 負荷試験の 結果を投稿 k6 runnner k6 runnner k6 runnner collect metrics, trace… ① 平日朝に 自動トリガー ① ステージング環境 更新時に自動トリガー Cloud SQL ② 関連するコンポーネントを起動 起動後にマイグレーションを実施 ① 手動でトリガー ④ 負荷試験を実施 Cloud MemoryStore
  7. GitHub Actionsによる自動化 23 GitHub Actions Load test Cluster (GKE) Slack

    Datadog Application Cluster (GKE) ③ 暖機運転/負荷試験用の マニフェストを適用 ⑤ 負荷試験の 結果を投稿 k6 runnner k6 runnner k6 runnner collect metrics, trace… ① 平日朝に 自動トリガー ① ステージング環境 更新時に自動トリガー Cloud SQL ② 関連するコンポーネントを起動 起動後にマイグレーションを実施 ① 手動でトリガー ④ 負荷試験を実施 Cloud MemoryStore
  8. GitHub Actionsによる自動化 24 GitHub Actions Load test Cluster (GKE) Slack

    Datadog Application Cluster (GKE) ③ 暖機運転/負荷試験用の マニフェストを適用 ⑤ 負荷試験の 結果を投稿 k6 runnner k6 runnner k6 runnner collect metrics, trace… ① 平日朝に 自動トリガー ① ステージング環境 更新時に自動トリガー Cloud SQL ② 関連するコンポーネントを起動 起動後にマイグレーションを実施 ① 手動でトリガー ④ 負荷試験を実施 Cloud MemoryStore
  9. GitHub Actionsによる自動化 25 GitHub Actions Load test Cluster (GKE) Slack

    Datadog Application Cluster (GKE) ③ 暖機運転/負荷試験用の マニフェストを適用 ⑤ 負荷試験の 結果を投稿 k6 runnner k6 runnner k6 runnner collect metrics, trace… ① 平日朝に 自動トリガー ① ステージング環境 更新時に自動トリガー Cloud SQL ② 関連するコンポーネントを起動 起動後にマイグレーションを実施 ① 手動でトリガー ④ 負荷試験を実施 Cloud MemoryStore
  10. GitHub Actionsによる自動化 26 GitHub Actions Load test Cluster (GKE) Slack

    Datadog Application Cluster (GKE) ③ 暖機運転/負荷試験用の マニフェストを適用 ⑤ 負荷試験の 結果を投稿 k6 runnner k6 runnner k6 runnner collect metrics, trace… ① 平日朝に 自動トリガー ① ステージング環境 更新時に自動トリガー Cloud SQL ② 関連するコンポーネントを起動 起動後にマイグレーションを実施 ① 手動でトリガー ④ 負荷試験を実施 Cloud MemoryStore
  11. GitHub Actionsによる自動化 27 GitHub Actions Load test Cluster (GKE) Slack

    Datadog Application Cluster (GKE) ③ 暖機運転/負荷試験用の マニフェストを適用 ⑤ 負荷試験の 結果を投稿 k6 runnner k6 runnner k6 runnner collect metrics, trace… ① 平日朝に 自動トリガー ① ステージング環境 更新時に自動トリガー Cloud SQL ② 関連するコンポーネントを起動 起動後にマイグレーションを実施 ① 手動でトリガー ④ 負荷試験を実施 Cloud MemoryStore Slackの投稿で 負荷試験結果が記録される
  12. 負荷試験自動実行時代のまとめ いつでも誰でも簡単に負荷試験を実行できるように! = ユーザー & 開発者の体験を守れる体制に • 手動で実施していた時の課題を以下のように改善 ◦ 実施者による手順のばらつき

    ▪ GitHub Actionsによる自動化 ◦ リリース直前になるまでパフォーマンス状況の把握が遅れる ▪ 日次/ステージング環境更新時に自動で実行する ◦ パフォーマンス情報の分析が面倒 ▪ 見るポイントを絞ったダッシュボードを作成 ◦ 手作業で記録をする負担 ▪ Slackへレポートの自動投稿 33