Share
Embed
負荷テスト on AWS のすすめ (AWS Summit Japan 2024 - Ministage session)
AWS Summit Japan 2024 にて、セキュリティ & One-AWS Zone ミニステージでの登壇資料です。
「負荷テストは、AWS を使ってどう楽になるか?」についてお話しました。スライド内のリンク類はコチラ→https://mabuchs.hatenablog.com/entry/2024/06/22/152833
Mab
June 21, 2024
Transcript
40 slides
-
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 負荷テスト on AWS のすすめ ⾺渕 俊介 M I N I S E S S I O N アマゾン ウェブ サービス ジャパン合同会社 エンタープライズ技術本部 サービスグループ トラベル・交通・物流ソリューション部 ソリューションアーキテクト -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. ⾃⼰紹介 名前︓⾺渕 俊介 (Shunsuke Mabuchi) 所属︓エンタープライズ技術本部 サービスグループ トラベル・交通・物流ソリューション部 ソリューションアーキテクト 経歴︓・国内 SIer で性能専⾨の技術⽀援部隊に所属し、 多数システムで性能テスト・性能問題解決を担当(〜2020/11) ・AWS にてソリューションアーキテクトとして交通系のお客様を担当 好きな AWS サービス : Amazon CloudWatch 好きな AWS ソリューション : Distributed Load Testing on AWS ︓@mabuchsss -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 本セッションの対象者と前提知識 本セッションの想定聴講者 • システムの開発・運⽤に関わるエンジニアの⽅ • システムの発注に関わる、事業会社の情報部⾨の⽅ • SRE・テストエンジニアの⽅ 前提知識 • AWS の基本的なサービスについて知っていること • システム開発のサイクルの概要を理解していること -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Key takeaways : 負荷テストのつらいところを、AWS サービスやソリューションで軽減できる 環境 Instance Scheduler IaC DB 複製 負荷ツール Distributed Load Testing Timestream for InfluxDB 監視ツール Observability on AWS -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. イントロダクション -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Q. 負荷テストについて、 どういう印象を持っていますか︖ 「つらい」「⼤変」「やりたくない」 「やったことないけど⼤変そう」 と思っている⽅、挙⼿をお願いします 👋 👋 -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Q. 負荷テストについて、 どういう印象を持っていますか︖ 環境やデータ の準備が⼤変 負荷ツールが ネックにならないように ⽤意するのが⼤変 想定ケースの シナリオ作り が難しい リソース情報から ボトルネックを 分析するのが困難 CI/CD の中で どうやるべきか 悩ましい -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Q. 負荷テストについて、 どういう印象を持っていますか︖ 環境やデータ の準備が⼤変 負荷ツールが ネックにならないように ⽤意するのが⼤変 想定ケースの シナリオ作り が難しい リソース情報から ボトルネックを 分析するのが困難 CI/CD の中で どうやるべきか 悩ましい つらいけど 避けては通れない -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 本セッションの⽬的と全体像 本セッションの⽬的 • 負荷テストのつらい部分を、AWS の活⽤でどう軽減できるかを知る 本セッションでお話すること • 負荷テストの全体像の説明 • 負荷テストの主要ファクターについて、 つらい部分と、AWS での解決⽅法について説明 本セッションでお話しないこと • 性能⽬標やシナリオの検討⽅法 • オンライン処理の負荷テストを対象とし、バッチ処理性能には触れない • システム開発サイクルにおける、負荷テストの⽴ち位置 (例 : アジャイル開発における実施タイミング、etc) -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Agenda • イントロダクション • 負荷テストの全体像 • 負荷テストのつらいところと、AWS での解決 • まとめ & Call to action -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Agenda • イントロダクション • 負荷テストの全体像 • 負荷テストのつらいところと、AWS での解決 • まとめ & Call to action -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 負荷テストの全体像 ① 計画 全体像を決める • 負荷量 • シナリオ • テスト環境 • 負荷ツール • 監視ツール ② 準備 環境・ツールを 実装する ③ 実施 実験を繰り返す ④ 評価 結果を合意し、 Next Action を 決定する 準備 実⾏ チューニング 分析 -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. • 負荷量 • シナリオ • テスト環境 • 負荷ツール • 監視ツール -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 負荷テストの主要ファクター • 負荷量 • シナリオ • テスト環境 • 負荷ツール • 監視ツール ③ 実施 実験を繰り返す 準備 実⾏ チューニング 分析 実施サイクルの QCD に直結 -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 負荷テストの主要ファクター • 負荷量 • シナリオ • テスト環境 • 負荷ツール • 監視ツール ここについては、builders.flash 記事シリーズ 「負荷テストのすすめ」をご参照ください 本⽇のフォーカス対象 -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Agenda • イントロダクション • 負荷テストの全体像 • 負荷テストのつらいところと、AWS での解決 • テスト環境 • 負荷ツール • 監視ツール • まとめ & Call to action -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. テスト環境の検討事項とアンチパターン 検討事項 • どこに構築するか • どのサイズで構築するか • どうやって構築するか • 外部接続先をどうするか • DB のデータをどうするか アンチパターン • 独⽴していない • 専⽤環境を構築せず、他環境と相乗り • AWS アカウントが他環境と同居 ※ Quota 到達のリスク • 本番環境が再現されていない • コスト削減のために、縮⼩版環境で実施 • 外部接続先に関連するシナリオを省略 • DB のデータの量・偏りを再現しない -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. テスト環境のベストプラクティスと、その "つらさ" ベストプラクティス • 本番同等の負荷テスト専⽤環境を、専⽤の AWS アカウントに構築する • 本番環境同等のデータを、負荷テスト環境の DB 上に再現する 😭 環境構築の⼿間が⼤変…… 😭 環境のコストがかかる…… 😭 再現度の⾼いデータ作りは⼤変…… -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. テスト環境の "つらさ" 解決 ① : IaC ベストプラクティス • 本番同等の負荷テスト専⽤環境を、専⽤の AWS アカウントに構築する 解決策 IaC で専⽤環境構築、負荷テストが終わったら削除可能にしておく 😭 環境構築の⼿間が⼤変…… 😭 環境のコストがかかる…… AWS CloudFormation AWS CDK 負荷テスト環境 開発環境 運⽤テスト環境 PJ 全体の環境構築・利⽤戦略として IaC を組み込んでおく -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. テスト環境の "つらさ" 解決 ② : Instance Scheduler ベストプラクティス • 本番同等の負荷テスト専⽤環境を、専⽤の AWS アカウントに構築する 解決策 Instance Scheduler ソリューションで、テスト時間帯外のコスト削減 • 曜⽇・時間を指定して EC2 / RDS の起動停⽌スケジュールを設定 • AWS ソリューションとして公開されており テンプレートからすぐ構築できる 😭 環境のコストがかかる…… -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. AWS ソリューションとは • AWS サービス、コード、設定を組み合わせた、 すぐデプロイできるソリューション=便利な構成テンプレ集(CloudFormation) • 利⽤にかかる費⽤は、含まれる AWS サービスの費⽤のみ 21 https://aws.amazon.com/jp/solutions/ 注⽬のソリューション例︓ • ⾃動化されたセキュリティ対応 • AWS Security Hub が検出した脅威を ⾃動 or ワンクリックで修復 • OpenSearch での統合ログ管理 • デプロイしてすぐに使えて、 ログ収集・分析・可視化を⼀元化 • DevOps Monitoring Dashboard • CI/CD のメトリクスを収集し 分析・可視化、改善の指標を提供 -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. テスト環境の "つらさ" 解決 ③ : DB 複製 ベストプラクティス • 本番環境同等のデータを、負荷テスト環境の DB 上に再現する 解決策 RDS スナップショットを⽤いて本番 DB を複製 → マスキング 😭 再現度の⾼いデータ作りは⼤変…… 本番環境 テスト環境 本番DB 複製DB Snapshot Snapshot 機密情報 マスク テストDB Snapshot 注意事項︓ • 暗号化の設定によっては 制約事項あり -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Agenda • イントロダクション • 負荷テストの全体像 • 負荷テストのつらいところと、AWS での解決 • テスト環境 • 負荷ツール • 監視ツール • まとめ & Call to action -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 負荷ツールの検討事項とアンチパターン 検討事項 • どのツールを使うか • 負荷ツールを稼働させる マシンの台数・スペック • 負荷ツールの監視⽅法 アンチパターン • 負荷クライアントに ⼗分なスペックを⽤意しない • 負荷ツール視点のメトリクスを 監視しない -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 負荷ツールのベストプラクティスと、その "つらさ" ベストプラクティス • 負荷クライアントを、スケールアウト可能な構成で構築する • 負荷クライアント視点の状況をモニタリングする 😭 台数分の構築が⼤変…… 😭 複数台の協調が⼤変…… 😭 複数台の EC2 を⽴ち上げっぱなしにするのはコストがかかる…… 😭 スケールアウトする負荷クライアントに いちいちモニタリングの導⼊するのも⼤変…… -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 負荷ツールのベストプラクティスと、その "つらさ" ベストプラクティス • 負荷クライアントを、スケールアウト可能な構成で構築する • 負荷クライアント視点の状況をモニタリングする 😭 台数分の構築が⼤変…… 😭 複数台の協調が⼤変…… 😭 複数台の EC2 を⽴ち上げっぱなしにするのはコストがかかる…… 😭 スケールアウトする負荷クライアントに いちいちモニタリングの導⼊するのも⼤変…… 構築が簡単で 簡単にスケールできて 負荷実⾏時以外はコンピュートリソースを使わず 負荷ツール側のメトリクスも集められる -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 負荷ツールの "つらさ" 解決 ① : DLT ソリューション ベストプラクティス • 負荷クライアントを、スケールアウト可能な構成で構築する • 負荷クライアント視点の状況をモニタリングする 😭 台数分の構築が⼤変…… 😭 複数台の協調が⼤変…… 😭 複数台の EC2 を⽴ち上げっぱなしにするのはコストがかかる…… 😭 スケールアウトする負荷クライアントに いちいちモニタリングの導⼊するのも⼤変…… 構築が簡単で 簡単にスケールできて 負荷実⾏時以外はコンピュートリソースを使わず 負荷ツール側のメトリクスも集められる 解決策︓ Distributed Load Testing (DLT) on AWS ソリューション -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Distributed Load Testing on AWS (DLT) とは Web コンソールから JMeter のシナリオをアップロードすると、 複数の Fargate コンテナが⽴ち上がり、JMeter※ で負荷を実⾏ AWS Fargate タスク1 タスク2 タスクn … 指定⽇または定期⽇ などスケジュール 実⾏可能 1タスクあたりの 仮想ユーザー数を指定して 並列処理 Apache JMeter テストシナリオ (.jmx) S3バケット 各シナリオが S3バケット から取得 負荷テスト対象サービス … ※ Taurus がラッパーとなっている -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. DLT ソリューションのメリット 構築 スケール・コスト モニタリング CloudFormation テンプレートで すぐデプロイ可能 負荷実⾏時だけ コンテナ起動 コンテナ数は Web コンソールで 簡単に設定 CloudWatch Container Insightsで コンテナ状況可視化 性能指標値を 可視化する ダッシュボード⾃動作成 -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 負荷ツールの "つらさ" 解決 ② : Amazon Timestream for InfluxDB ベストプラクティス • 負荷クライアント視点の状況をモニタリングする 😭 全部の負荷クライアントから⾒た性能って まとめて・簡単に・リアルタイムに⾒られない…… DLT のコンソールで部分的には解決可能だが、 より詳細な情報を⾒たい場合 Amazon Timestream for InfluxDB New! 2024/03 -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Amazon Timestream for InfluxDB • 時系列 DB の InfluxDB を マネージドで提供 • JMeter のリスナー設定で メトリクス送出可能 • リクエスト種別ごとの リアルタイムな数値を ダッシュボードで可視化 New! 2024/03 -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Agenda • イントロダクション • 負荷テストの全体像 • 負荷テストのつらいところと、AWS での解決 • テスト環境 • 負荷ツール • 監視ツール • まとめ & Call to action -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 監視ツールの検討事項とアンチパターン 検討事項 • どのツールを使うか • どういった情報を収集するか • どうやって可視化するか • どうやって分析するか アンチパターン • マシンリソースのメトリクスしか 取得できていない • ログがリアルタイムに集約されていない • ログの検索・取得・集計で あちこちツールを⾏き来する -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 監視ツールのベストプラクティスと、その "つらさ" ベストプラクティス • オブザーバビリティが実現されている • ログ・メトリクス・トレースにより システムの動作状況を把握できること 解決策 AWS の Observability サービスの活⽤ 😭 今まで使ってきたツールだと全部はカバーできない…… 詳細は 12:10-12:25 の ミニステージセッション 「監視運⽤ベストプラクティス」 セッションでご紹介︕ -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 監視ツールの "つらさ" 解決 : Observability on AWS Observability Collectors and SDKs Container insights Lambda insights Contributor insights Application insights Synthetics Dashboards Alarms RUM AWS X-Ray AWS native services Amazon CloudWatch ServiceLens Open-source managed services Amazon Managed Grafana Do it yourself (DIY) – AWS OSS Solutions Amazon OpenSearch Service Amazon Managed Service for Prometheus Jaeger and Zipkin Tracing Insights & ML Instrumentation Metrics CloudWatch agent AWS X-Ray agent AWS Distro for OpenTelemetry Internet monitor Logs -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. 負荷テストでのオブザーバビリティ Tips Tips • 標準メトリクス・ログより詳細なデータ収集設定 例)EC2 インスタンスの詳細モニタリング、CloudWatch エージェントの導⼊、 RDS の拡張モニタリング、RDS への Performance Insights の有効化 • ダッシュボードを育てれば育てるほど負荷テストサイクルが早くなる • CloudWatch ⾃動ダッシュボードはウィジェットの宝庫 • 〇〇〇 Insights は必殺の武器 • CloudWatch 〇〇〇 Insights シリーズ (例 : Log Insights) や、 RDS Performance Insights の使い⽅を覚えておく -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Agenda • イントロダクション • 負荷テストの全体像 • 負荷テストのつらいところと、AWS での解決 • テスト環境 • 負荷ツール • 監視ツール • まとめ & Call to action -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. まとめ 負荷テストのつらいところを、AWS サービスやソリューションで軽減できる 環境 Instance Scheduler IaC DB 複製 負荷ツール Distributed Load Testing Timestream for InfluxDB 監視ツール Observability on AWS -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Call to action ⽇本語のワークショップやベストプラクティス教材で学び、実践する 環境 Instance Scheduler 負荷ツール Distributed Load Testing 監視ツール Observability on AWS InstanceScheduler Workshop Distributed Load Testing Workshop One Observability Workshop AWS Observability Best Practices Happy Load Testing︕ -
© 2024, Amazon Web Services, Inc. or its affiliates. All
rights reserved. Thank you! ⾺渕 俊介 (Shunsuke Mabuchi) アマゾン ウェブ サービス ジャパン合同会社 エンタープライズ技術本部 サービスグループ トラベル・交通・物流ソリューション部 ソリューションアーキテクト