[JAWS-UG GameTech] 第6回 各種事例紹介_18TRIPにおけるAWSサービスを活用した負荷テスト・障害テスト
by
Naoto Yasuda
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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 ご清聴ありがとうございました