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
350
[JAWS-UG GameTech] 第6回 各種事例紹介_18TRIPにおけるAWSサービスを活用した負荷テスト・障害テスト
Naoto Yasuda
September 30, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
Zenn のウラガワ ~エンジニアのアウトプットを支える環境で Google Cloud が採用されているワケ~ #burikaigi #burikaigi_h
kongmingstrap
18
6.9k
CNAPPから考えるAWSガバナンスの実践と最適化
nrinetcom
PRO
1
330
一人から始めたSREチーム3年の歩み - 求められるスキルの変化とチームのあり方 - / The three-year journey of the SRE team, which started all by myself
vtryo
7
5.7k
extensionとschema
yahonda
1
100
Fin-JAWS第38回reInvent2024_全金融系セッションをライトにまとめてみた
mhrtech
1
130
Platform EngineeringがあればSREはいらない!? 新時代のSREに求められる役割とは
mshibuya
2
4k
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
10
120k
panicを深ぼってみる
kworkdev
PRO
2
150
地方企業がクラウドを活用するヒント
miu_crescent
PRO
1
110
ハンズオンで学ぶ Databricks - Databricksにおけるデータエンジニアリング
taka_aki
1
2.1k
Autify Company Deck
autifyhq
2
41k
教師なし学習の基礎
kanojikajino
4
360
Featured
See All Featured
Speed Design
sergeychernyshev
25
760
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.3k
Mobile First: as difficult as doing things right
swwweet
222
9.2k
KATA
mclloyd
29
14k
Building Adaptive Systems
keathley
39
2.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
The Cult of Friendly URLs
andyhume
78
6.2k
BBQ
matthewcrist
85
9.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Bash Introduction
62gerente
610
210k
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 ご清聴ありがとうございました