[JAWS-UG GameTech] 第6回 各種事例紹介_18TRIPにおけるAWSサービスを活用した負荷テスト・障害テスト
by
Naoto Yasuda
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
1 18TRIPにおける AWSサービスを活用した 負荷テスト・障害テスト 2024/9/25 JAWS-UG GameTech ©18TRIP PROJECT
Slide 2
Slide 2 text
2 株式会社フリースタイル ゲーム事業部 インフラセクション マネージャー 安田 直人 NintendoSwitch 向けソフト 「オバケイドロ!」 開発・運営 CloudFront フリースタイルとは? ・本社:愛知県名古屋市 ・業務内容: システムエンジニアリングサービス 自社/受託開発(システム / ゲーム) 好きなAWSサービス ©18TRIP PROJECT ©2018 FREE STYLE, Inc.
Slide 3
Slide 3 text
3 ©18TRIP PROJECT 18TRIP(エイトリ) 近未来の横浜「HAMA18区」を舞台に、 旅をテーマに展開される “おもてなしアドベンチャー” 企画・制作 音楽制作 開発 リベル・エンタテインメント ポニーキャニオン フリースタイル iOS/Android 2024/5/23 サービス開始
Slide 4
Slide 4 text
4 アジェンダ • 18TRIPのインフラ構成 • AWSサービスを活用したテストとは • FISって何? • DLTって何? • まとめ ©18TRIP PROJECT
Slide 5
Slide 5 text
5 ©18TRIP PROJECT 18TRIPのインフラ構成
Slide 6
Slide 6 text
6 ©18TRIP PROJECT
Slide 7
Slide 7 text
7 サービスを活かしたサーバ構成 • LEMP環境をモダンなサービスをベースに構成 • WebサーバはECS on Fargate+Nginx+Laravel • DBはAurora for MySQL • キャッシュDBとしてElastiCache for Redis ©18TRIP PROJECT
Slide 8
Slide 8 text
8 運用にもAWSサービスを活用 • デプロイやバッチ処理もAWSサービスで! • CodePipeline+GitHubでデプロイを管理 • StepFunctions+EventBridgeで各種バッチ処理を実施 • 更に今回はテスト関連もAWSサービスを活用することに ©18TRIP PROJECT
Slide 9
Slide 9 text
9 ©18TRIP PROJECT AWSサービスを活用した テストとは
Slide 10
Slide 10 text
10 AWSサービスを活用したテストとは • 本作ではリリース前に障害テストと負荷テストを実施 • これまでのプロジェクトでは • 手動で停止するなどの障害テスト • 攻撃サーバを別で構築しての負荷テスト をしていた • FIS、DLTを利用することで手間を最小限に! ©18TRIP PROJECT
Slide 11
Slide 11 text
11 ©18TRIP PROJECT 「FIS」って何?
Slide 12
Slide 12 text
12 FIS = AWS製障害テストツール • 正式名称:AWS Fault Injection Service • AWSの各リソースに対して疑似障害を起こせる • 例:EC2の停止・再起動、ECSタスクの停止、 RDSのフェールオーバーなどが実施可能 ©18TRIP PROJECT
Slide 13
Slide 13 text
13 シナリオに沿った障害テストが可能 • 複数の障害を順番に組み合わせて実施可能 • GUIでアクションとターゲット を順番に追加していく • 18TRIPでは • ECSタスク停止 • RDSフェールオーバー を実施 ©18TRIP PROJECT
Slide 14
Slide 14 text
14 FISを使ってみて… • 設定方法はシンプルでわかりやすく、 最低限のテストならサクッと設定することが出来た • テスト内容のインポート、エクスポートもできるため パターン違いなども作りやすそう • 作り込んだシナリオや負荷テスト中に実行するなど、 多様な観点での実施は今後利用するうえでの課題 ©18TRIP PROJECT
Slide 15
Slide 15 text
15 ©18TRIP PROJECT 「DLT」って何?
Slide 16
Slide 16 text
16 DLT = AWS製負荷テストツール • 正式名称:Distributed Load Testing on AWS • 単一のサービスではなく、CloudFormationにより 一括構築されたサービス群 • CloudFront、Lambda等から構成される ©18TRIP PROJECT
Slide 17
Slide 17 text
17 DLTの構成図 ©18TRIP PROJECT
Slide 18
Slide 18 text
18 JMeterベースで負荷テスト • Webコンソールからテスト内容を設定可能 • JMeterのシナリオとデータをまとめ、 Zipでアップロードして使用することもできる • 18TRIPではJMeterのシナリオを使って実施 ©18TRIP PROJECT
Slide 19
Slide 19 text
19 DLTの設定画面 ©18TRIP PROJECT
Slide 20
Slide 20 text
20 DLTの実行結果画面 ©18TRIP PROJECT
Slide 21
Slide 21 text
21 ©18TRIP PROJECT DLTに問題発生…!!
Slide 22
Slide 22 text
22 負荷テストが上手くいかない… • DLTは指定した並列数に応じて Fargateが起動し、ターゲットへアタックする • が…テスト開始と共にFargateが次々止まり アタックが終わってしまう… ©18TRIP PROJECT
Slide 23
Slide 23 text
23 原因はS3の仕様にあり • DLT内部で設定用のファイルをアップロードしている S3の仕様に問題があった • 詳しくは後述 • ファイル容量が一定以上だとアップロードの 完了前にテストが開始してしまう… • 結果、エラーになってFargateが停止… ©18TRIP PROJECT
Slide 24
Slide 24 text
24 問題となったS3の仕様とは • DLTはアップするファイルサイズにより、使うAPIが変わる • 5MB以上だとマルチパートアップロードが利用される • が…S3のマルチパートアップロードはタイムアウト回避の ためにアップロード途中でも完了ステータスを返してしまう • レスポンスの詳細を見れば本当に完了しているか判定できるが、 DLTはそこまで行ってくれない ©18TRIP PROJECT
Slide 25
Slide 25 text
25 駄目なら直せば良い • DLT用のLambda関数は通常の関数と同様に 編集が可能 • 担当SAに助力頂きながら関数を修正 • S3へのアップロード処理に待ち時間を持たせることで 正常に動作するように ©18TRIP PROJECT
Slide 26
Slide 26 text
26 DLTを使ってみて… • JMeterの知見があれば比較的簡単に利用できた • 使われるサービスがサーバレス中心のため、 攻撃サーバを建てるよりもコスパが良かった • ただ、使い始めには前述したような謎挙動に 振り回される場面も… ©18TRIP PROJECT
Slide 27
Slide 27 text
27 まとめ • FIS、DLTの導入で工数もコストも改善できた • 今後も使い込むことで更にメリットが得られる • 知見の少なさ、挙動の読めなさで困ることもあったが、 SAさんに協力いただくことで対処が出来た ©18TRIP PROJECT
Slide 28
Slide 28 text
28 ©18TRIP PROJECT ご清聴ありがとうございました