Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWSで始める負荷テスト入門
Search
Nakagawa Shota
July 10, 2024
1
3.8k
AWSで始める負荷テスト入門
【7/5(金)】DevelopersIO 2024 SAPPORO #devio2024
https://classmethod.connpass.com/event/319416/
Nakagawa Shota
July 10, 2024
Tweet
Share
More Decks by Nakagawa Shota
See All by Nakagawa Shota
これから始める脆弱性診断
snakagawax227
0
1.3k
迅速にAWS移行をすすめるベストプラクティス
snakagawax227
0
1.5k
これから始めるAWS移行のベストプラクティス
snakagawax227
0
2.8k
AWSコスト最適化のポイントのご紹介
snakagawax227
0
7.7k
テレワーク化を進めるミツイワ様でAmazon WorkSpacesの支援をした事例紹介
snakagawax227
1
1.7k
AKIBA.AWS#14_AWS_Config_Update
snakagawax227
0
1.1k
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
269
27k
It's Worth the Effort
3n
183
27k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
Ruby is Unlike a Banana
tanoku
97
11k
Fireside Chat
paigeccino
34
3k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Designing for humans not robots
tammielis
250
25k
Why Our Code Smells
bkeepers
PRO
334
57k
Transcript
AWSで始める 負荷テスト⼊⾨ 2024.7.5 AWS事業本部 中川 翔太
Xへの投稿の際は、 ハッシュタグ #devio2024 でお願いいたします。 2 お願い
⾃⼰紹介 中川 翔太 AWS事業本部コンサルティング部 ソリューションアーキテクト 受賞 • 2024 Japan AWS
All Certifications Engineers 好きな道の駅 • ぐるっとパノラマ美幌峠、厚岸グルメパーク 3
負荷テスト できてますか? 4
負荷テストでよくある課題 • 何をやったらいいかわからない • スケジュールに追われてできていない • ⼗分な負荷をかけられていない • スケールアップ/アウトだけのチューニング 5
負荷テストをしないと 6 システム特性を 把握できてない運⽤ ユーザー体験への悪影響 ‧アクセス遅い ‧買うの⽌めよ ‧別サービスにしよ ‧急激にアクセス 増えてボトルネッ
クを特定できない ‧サイズ⼤きくし たのに改善しない ビジネス機会の損失に繋がる
本⽇話すこと • 負荷テストの概要と⽬的 • 負荷テストの進め⽅ • AWSを活⽤した負荷テスト • 実践的なTips 7
負荷テストとは • 特定の条件下でシステムに負荷を与えて処理能⼒を測定 するテスト • 同時に多数のアクセスが発⽣する状況をシミュレーショ ン 8
負荷テストの⽬的 システム特性を把握して改善すること 1. ユースケースに基づいた性能要件を満たしているか確認 2. ボトルネック箇所の特定して性能限界を把握 9
負荷テストの種類 10 https://grafana.com/load-testing/types-of-load-testing/
負荷テストの進め⽅ ‧⽬標を設定 ‧シナリオを検討 11 ‧負荷テスト⽤の環境構築 ‧負荷テストツールの選定 ‧モニタリング ‧事前の申請 ‧実施時のポイント ‧RDS/Auroraで注意事項
計画 12
⽬標を設定する 主にスループットとレイテンシを使⽤します • スループット:⼀定時間にどれだけリクエストがあるか ◦ 1⽇、1時間(ピーク)、 1分(ピーク) のユーザー数を定義 ▪ ピークは通常時の平常時の2〜3倍を⽤いる
◦ 1ユーザーあたりのリクエスト数と乗算してスループットを算出 • レイテンシ:リクエストからレスポンスまでどれだけかかったか ◦ 即時求められる処理、遅れが許容できる処理ごとに定義 ▪ 例)会員登録などユーザを逃す可能性のあるところは短く ◦ 実⾏数が多い処理はレイテンシ増加の影響が⼤きい ▪ 逆にレイテンシが⼤きくても実⾏数が少なければ影響は⼩さい 13
シナリオの検討 ユースケースを満たすためのシナリオ検討します。 • 想定しているユーザーの導線からシナリオ ◦ 例)商品⼀覧からカートに追加 → カート移動 → 決済
• 負荷が⾼くなりやすい処理が含まれているか確認 ◦ アクセス頻度が⾼い機能 ◦ DBの参照‧更新が発⽣する機能 ◦ ⽔平スケールができない機能 14
準備 15
負荷テストの準備 • 負荷テスト⽤の環境構築 • 負荷テストツールの選定 • モニタリング • AWSへの事前申請 16
負荷テスト⽤の環境構築 • IaCで管理する • 本番と同じ構成にする • 外部連携している場合はモック化する • 実環境相当のデータを⽤意する 17
負荷テストツールの選定 ワークロードやチーム‧組織にあったツールを選定します。 18
分散負荷テストソリューション 19 https://aws.amazon.com/jp/solutions/implementations/distributed-load-testing-on-aws/
分散負荷テストソリューション 20
分散負荷テストソリューション 21
分散負荷テストソリューション 22 https://catalog.us-east-1.prod.workshops.aws/workshops/401f5147-738e-45 d9-be9f-fed9c42a60b0/ja-JP ワークショップも公開されています。
モニタリング 23 Amazon CloudWatch AWS X-Ray Amazon DevOps Guru AWSのモニタリング
サービス。メトリクス 収 集、ログ管理、 アラー ト機能提供。 分散トレーシング サー ビス。リクエスト追跡 ‧分析を提供。 機械学習を使⽤して異 常な動作パターンを検 出。運⽤上の問題を特 定。
モニタリング 24 RDS/AuroraではPerformance Insights を有効化します
AWSへの事前申請 • 上限緩和申請 ◦ AWSの各サービスのリソースにデフォルトで設定され ている上限値を超えて使⽤する場合に申請 • (必要に応じて)ELB 暖気申請 ◦
急激なリクエスト増加に対応するための事前申請 • (必要に応じて)ネットワーク負荷テスト申請 ◦ 1分以上の1 Gbps または 1Gppsを超えるトラフィック を⽣成する場合に申請 25
実施‧評価 26
負荷テスト実施時のポイント • 最⼩構成で最⼩負荷から性能を確認すること • 負荷の並列数は徐々にあげること • 試験ごとに複数のパラメータを同時に上げないこと • 負荷テストごとに同じデータを使⽤していること ◦
Auroraを使っている場合はBacktrack機能が便利 • 暖気にはRamp-Up機能(⼀定時間かけて最⼤並列数に) ◦ 実際にありえないコネクション⽣成が問題となる場合 27
RDS/Auroraで注意事項 28 事象 注意事項 対策(上から検討) 読み込みクエリがボトル ネックのとき ☐ インデックスの有無を確認(SQLに EXPLAIN
をつけて実行計画を取得) ☐ COUNT で多数のレコードが対象と なっていないか、多用していないか • インデックスを作成 • COUNT() を多用しないように • 非同期に処理できるか検討 • バッファプールの最適化(メモリ最適化) • リーダーノードを追加 • キャッシュレイヤを追加 書き込みクエリがボトル ネックのとき ☐ 複数レコード更新に BULK INSERTを 使っているか ☐ 非同期にできるクエリがあるか • (非同期な処理が可能な場合) キューを挟む • クエリのチューニング • スロットリングを挟む • クエリ負荷のピークを分散 • インスタンスサイズを上げる • シャーディング ※1 読み込みも書き込みもボ トルネックのとき ☐ 負荷が大きすぎていないか、シナリオ が適切か確認する • 実際のアクセスパターンに近づける(wait追加) 期待するパフォーマンスが出ないときに確認します ※1 https://aws.amazon.com/jp/blogs/news/sharding-with-amazon-relational-database-service/
まとめ • 負荷テストはシステム特性を把握しするために⾏います • 計画、準備、実施の各段階ごとに進めましょう • AWSサービスを活⽤して、効果的に負荷テストを⾏いま しょう ◦ 負荷テストツールに迷った場合、まずは「分散負荷テ
ストソリューション」がおすすめ 29
参考 • 負荷テスト on AWS のすすめ ◦ https://aws.amazon.com/jp/builders-flash/202308/distributed-test-on-aws/ • 第三⼗五回
ちょっぴりDD - ⼈気番組の新作配信を安定起動させた、サーバーレスな AWS 分散負荷試験 ソリューション「Distributed Load Testing」を使った負荷試験の仕組み ◦ https://www.youtube.com/watch?v=8qfj-klSdBU • Types of load testing ◦ https://grafana.com/load-testing/types-of-load-testing/ • 負荷テストとは?⽬的や種類ごとの観点、実施の流れについて解説 ◦ https://service.shiftinc.jp/column/9503/ • 書籍「Amazon Web Services負荷試験⼊⾨―クラウドの性能の引き出し⽅がわかる」 ◦ https://amzn.asia/d/06N58UQp 30
None
32