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
450
[JAWS-UG GameTech] 第6回 各種事例紹介_18TRIPにおけるAWSサービスを活用した負荷テスト・障害テスト
Naoto Yasuda
September 30, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
Абьюзим random_bytes(). Фёдор Кулаков, разработчик Lamoda Tech
lamodatech
0
350
Windows 11 で AWS Documentation MCP Server 接続実践/practical-aws-documentation-mcp-server-connection-on-windows-11
emiki
0
1k
変化する開発、進化する体系時代に適応するソフトウェアエンジニアの知識と考え方(JaSST'25 Kansai)
mizunori
1
230
Understanding_Thread_Tuning_for_Inference_Servers_of_Deep_Models.pdf
lycorptech_jp
PRO
0
130
Prox Industries株式会社 会社紹介資料
proxindustries
0
320
AIの最新技術&テーマをつまんで紹介&フリートークするシリーズ #1 量子機械学習の入門
tkhresk
0
140
Clineを含めたAIエージェントを 大規模組織に導入し、投資対効果を考える / Introducing AI agents into your organization
i35_267
4
1.6k
あなたの声を届けよう! 女性エンジニア登壇の意義とアウトプット実践ガイド #wttjp / Call for Your Voice
kondoyuko
4
470
【PHPカンファレンス 2025】PHPを愛するひとに伝えたい PHPとキャリアの話
tenshoku_draft
0
120
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
220
PHP開発者のためのSOLID原則再入門 #phpcon / PHP Conference Japan 2025
shogogg
4
850
製造業からパッケージ製品まで、あらゆる領域をカバー!生成AIを利用したテストシナリオ生成 / 20250627 Suguru Ishii
shift_evolve
PRO
1
140
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
670
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
For a Future-Friendly Web
brad_frost
179
9.8k
Raft: Consensus for Rubyists
vanstee
140
7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Practical Orchestrator
shlominoach
188
11k
How to train your dragon (web standard)
notwaldorf
94
6.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
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 ご清聴ありがとうございました