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
[JAWS-UG GameTech] 第6回 各種事例紹介_18TRIPにおけるAWSサービス...
Search
Naoto Yasuda
September 30, 2024
Technology
0
100
[JAWS-UG GameTech] 第6回 各種事例紹介_18TRIPにおけるAWSサービスを活用した負荷テスト・障害テスト
Naoto Yasuda
September 30, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
低コストで実現する社内文書RAG機能を搭載したAIチャットボット開発
takapy
3
570
Report of JAWS PANKRATION 2024, a global online event using Amazon IVS
yoshimi0227
1
130
k6を活用した再現性・拡張性の高い負荷試験基盤の構築
biwashi
11
2.9k
Create Inquiry via Bedrock / 生成 AI で問い合わせ品質は変わるのか?思いついてぱっと作ったものを供養してみる
kazzpapa3
1
200
Efficient zero-copy networking using io_uring
ennael
PRO
0
270
virtme-ng
ennael
PRO
0
310
C# 13 / .NET 9 の新機能 (RC 1 時点)
nenonaninu
1
1.1k
不感対策ソリューション
jtes
0
230
小さな勉強会の始め方、広げ方、あるいは友達の作り方 / How to Start, Grow, and Build Connections with Small Study Groups
ar_tama
2
810
ドメインと向き合う - 旅行予約編
hidenorigoto
4
520
Strict Concurrencyにしたらdeinitでクラッシュする話
0si43
0
120
HashHub会社案内「なぜ今、パブリックブロックチェーンに賭けるのか」
hashhub
3
75k
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
59k
Producing Creativity
orderedlist
PRO
341
39k
How To Stay Up To Date on Web Technology
chriscoyier
786
250k
YesSQL, Process and Tooling at Scale
rocio
167
14k
Design by the Numbers
sachag
278
19k
[RailsConf 2023] Rails as a piece of cake
palkan
49
4.7k
4 Signs Your Business is Dying
shpigford
180
21k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
29
1.7k
A designer walks into a library…
pauljervisheath
201
24k
Done Done
chrislema
181
16k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Transcript
1 18TRIPにおける AWSサービスを活用した 負荷テスト・障害テスト 2024/9/25 JAWS-UG GameTech ©18TRIP PROJECT
2 株式会社フリースタイル ゲーム事業部 インフラセクション マネージャー 安田 直人 NintendoSwitch 向けソフト 「オバケイドロ!」
開発・運営 CloudFront フリースタイルとは? ・本社:愛知県名古屋市 ・業務内容: システムエンジニアリングサービス 自社/受託開発(システム / ゲーム) 好きなAWSサービス ©18TRIP PROJECT ©2018 FREE STYLE, Inc.
3 ©18TRIP PROJECT 18TRIP(エイトリ) 近未来の横浜「HAMA18区」を舞台に、 旅をテーマに展開される “おもてなしアドベンチャー” 企画・制作 音楽制作 開発
リベル・エンタテインメント ポニーキャニオン フリースタイル iOS/Android 2024/5/23 サービス開始
4 アジェンダ • 18TRIPのインフラ構成 • AWSサービスを活用したテストとは • FISって何? • DLTって何?
• まとめ ©18TRIP PROJECT
5 ©18TRIP PROJECT 18TRIPのインフラ構成
6 ©18TRIP PROJECT
7 サービスを活かしたサーバ構成 • LEMP環境をモダンなサービスをベースに構成 • WebサーバはECS on Fargate+Nginx+Laravel • DBはAurora
for MySQL • キャッシュDBとしてElastiCache for Redis ©18TRIP PROJECT
8 運用にもAWSサービスを活用 • デプロイやバッチ処理もAWSサービスで! • CodePipeline+GitHubでデプロイを管理 • StepFunctions+EventBridgeで各種バッチ処理を実施 • 更に今回はテスト関連もAWSサービスを活用することに
©18TRIP PROJECT
9 ©18TRIP PROJECT AWSサービスを活用した テストとは
10 AWSサービスを活用したテストとは • 本作ではリリース前に障害テストと負荷テストを実施 • これまでのプロジェクトでは • 手動で停止するなどの障害テスト • 攻撃サーバを別で構築しての負荷テスト
をしていた • FIS、DLTを利用することで手間を最小限に! ©18TRIP PROJECT
11 ©18TRIP PROJECT 「FIS」って何?
12 FIS = AWS製障害テストツール • 正式名称:AWS Fault Injection Service •
AWSの各リソースに対して疑似障害を起こせる • 例:EC2の停止・再起動、ECSタスクの停止、 RDSのフェールオーバーなどが実施可能 ©18TRIP PROJECT
13 シナリオに沿った障害テストが可能 • 複数の障害を順番に組み合わせて実施可能 • GUIでアクションとターゲット を順番に追加していく • 18TRIPでは •
ECSタスク停止 • RDSフェールオーバー を実施 ©18TRIP PROJECT
14 FISを使ってみて… • 設定方法はシンプルでわかりやすく、 最低限のテストならサクッと設定することが出来た • テスト内容のインポート、エクスポートもできるため パターン違いなども作りやすそう • 作り込んだシナリオや負荷テスト中に実行するなど、
多様な観点での実施は今後利用するうえでの課題 ©18TRIP PROJECT
15 ©18TRIP PROJECT 「DLT」って何?
16 DLT = AWS製負荷テストツール • 正式名称:Distributed Load Testing on AWS
• 単一のサービスではなく、CloudFormationにより 一括構築されたサービス群 • CloudFront、Lambda等から構成される ©18TRIP PROJECT
17 DLTの構成図 ©18TRIP PROJECT
18 JMeterベースで負荷テスト • Webコンソールからテスト内容を設定可能 • JMeterのシナリオとデータをまとめ、 Zipでアップロードして使用することもできる • 18TRIPではJMeterのシナリオを使って実施 ©18TRIP
PROJECT
19 DLTの設定画面 ©18TRIP PROJECT
20 DLTの実行結果画面 ©18TRIP PROJECT
21 ©18TRIP PROJECT DLTに問題発生…!!
22 負荷テストが上手くいかない… • DLTは指定した並列数に応じて Fargateが起動し、ターゲットへアタックする • が…テスト開始と共にFargateが次々止まり アタックが終わってしまう… ©18TRIP PROJECT
23 原因はS3の仕様にあり • DLT内部で設定用のファイルをアップロードしている S3の仕様に問題があった • 詳しくは後述 • ファイル容量が一定以上だとアップロードの 完了前にテストが開始してしまう…
• 結果、エラーになってFargateが停止… ©18TRIP PROJECT
24 問題となったS3の仕様とは • DLTはアップするファイルサイズにより、使うAPIが変わる • 5MB以上だとマルチパートアップロードが利用される • が…S3のマルチパートアップロードはタイムアウト回避の ためにアップロード途中でも完了ステータスを返してしまう •
レスポンスの詳細を見れば本当に完了しているか判定できるが、 DLTはそこまで行ってくれない ©18TRIP PROJECT
25 駄目なら直せば良い • DLT用のLambda関数は通常の関数と同様に 編集が可能 • 担当SAに助力頂きながら関数を修正 • S3へのアップロード処理に待ち時間を持たせることで 正常に動作するように
©18TRIP PROJECT
26 DLTを使ってみて… • JMeterの知見があれば比較的簡単に利用できた • 使われるサービスがサーバレス中心のため、 攻撃サーバを建てるよりもコスパが良かった • ただ、使い始めには前述したような謎挙動に 振り回される場面も…
©18TRIP PROJECT
27 まとめ • FIS、DLTの導入で工数もコストも改善できた • 今後も使い込むことで更にメリットが得られる • 知見の少なさ、挙動の読めなさで困ることもあったが、 SAさんに協力いただくことで対処が出来た ©18TRIP
PROJECT
28 ©18TRIP PROJECT ご清聴ありがとうございました