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
モバイルゲームにおけるカオスエンジニアリング実践に向けて
Search
Cygames
PRO
December 10, 2018
Technology
6
4.5k
モバイルゲームにおけるカオスエンジニアリング実践に向けて
2018/12/04 Amazon Game Developers Day 2018
Cygames
PRO
December 10, 2018
Tweet
Share
More Decks by Cygames
See All by Cygames
【CEDEC2025】『Shadowverse: Worlds Beyond』二度目のDCG開発でゲームをリデザインする~遊びやすさと競技性の両立~
cygames
PRO
2
420
【CEDEC2025】大規模言語モデルを活用したゲーム内会話パートのスクリプト作成支援への取り組み
cygames
PRO
2
1.1k
【CEDEC2025】現場を理解して実現!ゲーム開発を効率化するWebサービスの開発と、利用促進のための継続的な改善
cygames
PRO
0
960
【CEDEC2025】ブランド力アップのためのコンテンツマーケティング~ゲーム会社における情報資産の活かし方~
cygames
PRO
0
500
【CEDEC2025】『ウマ娘 プリティーダービー』における映像制作のさらなる高品質化へ!~ 豊富な素材出力と制作フローの改善を実現するツールについて~
cygames
PRO
0
320
【CEDEC2025】LLMを活用したゲーム開発支援と、生成AIの利活用を進める組織的な取り組み
cygames
PRO
1
3.1k
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
PRO
0
2.1k
雲だけじゃない!『GRANBLUE FANTASY: Relink』の世界に奥行きを出す半透明スプライト活用術
cygames
PRO
0
1k
最高のアートワークを発信する『Cygames展 Artworks』企画制作事例
cygames
PRO
0
160
Other Decks in Technology
See All in Technology
Devinを使ったモバイルアプリ開発 / Mobile app development with Devin
yanzm
0
210
新規案件の立ち上げ専門チームから見たAI駆動開発の始め方
shuyakinjo
0
520
そのコンポーネント、サーバー?クライアント?App Router開発のモヤモヤを可視化する補助輪
makotot
4
760
帳票Vibe Coding
terurou
0
150
Figma + Storybook + PlaywrightのMCPを使ったフロントエンド開発
yug1224
10
3.4k
進捗
ydah
1
210
mruby(PicoRuby)で ファミコン音楽を奏でる
kishima
1
410
シークレット管理だけじゃない!HashiCorp Vault でデータ暗号化をしよう / Beyond Secret Management! Let's Encrypt Data with HashiCorp Vault
nnstt1
2
120
Product Management Conference -AI時代に進化するPdM-
kojima111
0
260
「AI2027」を紐解く ― AGI・ASI・シンギュラリティ
masayamoriofficial
0
140
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
170
実践アプリケーション設計 ①データモデルとドメインモデル
recruitengineers
PRO
5
1.2k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Become a Pro
speakerdeck
PRO
29
5.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Speed Design
sergeychernyshev
32
1.1k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
A designer walks into a library…
pauljervisheath
207
24k
Code Reviewing Like a Champion
maltzj
525
40k
Designing for Performance
lara
610
69k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Transcript
© Cygames,Inc.
© Cygames,Inc. Frontend Engineer HTML5, JS,CSS 2013 Backend Engineer PHP,
Mysql, Linux, Shell script…. 2014 2015 Infrastructure Engineer Nginx, Bigquery, Appengine, Python, Go, Kafka 2016 2017 Pagerduty, Chaos engineering 2018 Who am I 株式会社Cygames インフラエンジニア 和田 明久 • Toil削減・自動化 • CI/CDフロー改善 • カオスエンジニアリング • オンコール Lambda function, ECS, Athena
© Cygames,Inc. AGENDA • なぜ導入したか • カオスエンジニアリングとは • カオスエクスペリメント事例 ◦
開発フェーズにおいて ◦ インフラチームにおいて • まとめと今後の展望
© Cygames,Inc. なぜ導入したか 運用タイトルが年々スケール ↓ サービス運用中の障害発生は不可避 ↓ プロアクティブな障害対応
© Cygames,Inc.
© Cygames,Inc. デイリーで50件前後のインシデントやアラート
© Cygames,Inc. 我々が直面した障害例... インパクト TTR 内容 サービス停止 6 hour ELBとWebサーバ間でセッション滞留発生
データ不整合 1 day ログをインサートしている Auroraでデータ不整合が発生した データ不整合 1 day 分散トランザクションのテスト漏れ 一部ユーザ ~ 2min RDS Failover 一部ユーザ ~ 2min VMホスト障害
© Cygames,Inc. 大規模な障害が発生すると • ゲームブランドに対する信頼低下 • ユーザエクスペリエンスの低下 • 機会損失
© Cygames,Inc. データ引用元 https://www.jolt.co.uk/blog/outage-outrage/
© Cygames,Inc. 障害発生を事前対処したい
© Cygames,Inc. カオスエンジニアリング?
“Chaos Engineering is the discipline of experimenting on a distributed
system in order to build confidence in the system’s capability to withstand turbulent conditions in production.” http://principlesofchaos.org/
“Chaos Engineering is the discipline of experimenting on a distributed
system in order to build confidence in the system’s capability to withstand turbulent conditions in production.” http://principlesofchaos.org/ 検証の規律 不安定な状態にも耐えうる
https://www.flickr.com/search/?q=injection&l=4
https://www.flickr.com/search/?license=4&advanced=1&text=firedrill
© Cygames,Inc. Chaos in Practice 定常状態を仮定する 仮説を構築する 故障を発生させる 反証をあげる
© Cygames,Inc. Step1 定常状態を仮定する システムの振舞いを示す指標を用いて定常状態を定義 e.g. CPU Usage < 60%
Connection < 2000 Latency 99th < 5s
© Cygames,Inc. Step 2 仮説を構築する 定常状態が通常と実験グループで継続する仮説を構築 e.g. • EC2 インスタンスが全対比1%停止しても稼働率は99.99%
• CPU Usage 80 % 超過しても平均レイテンシーは 200ms 以内 • RDS で Failover が発生してもロールバックが正常実行
© Cygames,Inc. Step 3 故障を発生させる 実際に起きうるイベントをシステムに付加する e.g. インスタンス 停止 Network
遮断 CPU Usage 100%
© Cygames,Inc. Step 4 反証をあげる 通常と実験グループのシステム出力を振り返り反証をあげる • 反証された場合 ◦ 同様のイベントに対する対策
◦ 構成変更やプログラム修正を行う • 反証されない場合 ◦ さらに故障度を上げても同様の振る舞いになるか
© Cygames,Inc. 定常状態 仮説反証 故障発生 仮説構築 Chaos Loop
© Cygames,Inc. その他 • 文化・書籍・ツールなど https://github.com/dastergon/awesome-chaos-engineering • Chaos Conf 2018
https://www.youtube.com/playlist?list=PLLIx5ktghjqKtZdfDDy uJrlhC-ICfhVAN
© Cygames,Inc. まとめると • ITシステムの障害訓練 • 信頼性・可用性・保守性 の向上 • システムを無秩序に故障させることではない
© Cygames,Inc. カオスエクスペリメント事例
© Cygames,Inc. 実施対象 開発環境もしくはサービス影響のないシステムが対象 • 運用タイトルの本番環境では未実施 • 運用タイトルの開発環境で実施 • ゲームサービス以外で実施
© Cygames,Inc. 実施対象 https://aws.amazon.com/compliance/shared-responsibility-model/
© Cygames,Inc. モニタリング方法 ツール 対象 例 Mackerel Resource CPU・Memory・Disk Usage
NewRelic Processing PHP・Memcached・Mysql 処理時間 ElasticSearch Response AVG/MEDIAN/95th/99th Web Server Response Time
© Cygames,Inc. Mackerel
© Cygames,Inc. New Relic
© Cygames,Inc. Elastic Search Service
© Cygames,Inc. カオスエクスペリメント事例 ~開発フェーズにおいて~
© Cygames,Inc. カオスチーム編成 アドバイザー 1 マネ・サブマネ陣 5 インフラ 2
© Cygames,Inc. 実施方法 • タスクフォース的に招集 • 週1回MTGで反省と今後のアクション決定 • 構成はビジネスサイド以外 •
期間は最長で9ヶ月のもの
© Cygames,Inc. 実験対象のアーキテクチャ • WEB / Cache / Database •
モノリスな構成 • リクエスト数は実験内容に依存
© Cygames,Inc. Internet AWS Cloud
© Cygames,Inc. AWS Cloud Internet cache proxy web
© Cygames,Inc. 故障方法例 ※ https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Managing.FaultInjectionQueries.html コンポーネント イベント EC2 Stop, Reboot
ElastiCache Stop, Reboot ECS Stop Task RDS(Mysql) Reboot, Failover RDS(Aurora) Reboot, Failover, Fault Injection Queries (※) Network Switch Security Group, Network ACL Allow / Deny
© Cygames,Inc. 定常状態 仮説反証 故障発生 仮説構築 Chaos Loop
© Cygames,Inc. 事例1 RDS Failover
© Cygames,Inc. AWS Cloud Internet cache proxy web
© Cygames,Inc. 定常状態 仮説反証 故障発生 仮説構築 Chaos Loop 99th percentile
< 5s 正常に ロールバックされる 反証された RDS Failover
© Cygames,Inc. 事例1 振り返り • 結果 ◦ リクエストはタイムアウト ◦ 部分的にロールバック
◦ 同一性が崩れるパターンが発生 • アクション ◦ テーブルを水平分割 ◦ 同一ユーザのデータは同一DBへ保存 ◦ セッションが滞留するためカーネルパラメーターを調整
© Cygames,Inc. 事例2 ElastiCache Reboot
© Cygames,Inc. AWS Cloud Internet cache proxy web
© Cygames,Inc. 定常状態 仮説反証 故障発生 仮説構築 Chaos Loop 99th percentile
< 5s 起動中のElastiCacheに 切替る 反証された ElastiCache Reboot
© Cygames,Inc. 事例2 ElastiCache Reboot • 結果 ◦ Cache Proxyの状態がサーバごとに異なりキー分散の不整合が発生
• アクション ◦ Cache Proxyの状態が異常なサーバをELBから除外
© Cygames,Inc. 事例3 EC2 上のプロセス停止
© Cygames,Inc. AWS Cloud Internet cache proxy web
© Cygames,Inc. 定常状態 仮説反証 故障発生 仮説構築 Chaos Loop 99th percentile
< 5s Return 200s マスターデータ参照 反証された WEBサーバ上 Cache Process停止
© Cygames,Inc. 事例3 EC2 上のプロセス停止 • 結果 ◦ キャッシュ接続エラーで後続処理に移らなかった ◦
SPOF • アクション ◦ 冗長化 ◦ ALB health_check にてローカルキャッシュの接続性確認する
© Cygames,Inc. 実験はさらに膨大化 • 示した事例はごく一部 • 障害パターンは増加 • 障害対応フローチャートも作成
© Cygames,Inc. Chaos Sheet 数百項目に...
© Cygames,Inc. 障害発生時の対応フローチャート
© Cygames,Inc. 本環境に適用されたこと • シングルポイント冗長化 • カーネルパラメーター最適化 • DB設計変更 •
ALB health check の詳細実装
© Cygames,Inc. 章まとめ • ロジック内・外における脆弱性を認識 • 発生しがちな故障イベントに対する事前対策 • 障害発生時の対応フローを構築
© Cygames,Inc. カオスエクスペリメント事例 ~インフラチームでの事例~
© Cygames,Inc. インフラカオスチーム編成 サブマネ 1 インフラ 1
© Cygames,Inc. インフラチームの領域 • オンプレ運用・監視 • クラウド運用・監視 • オンコール対応 •
ログ収集基盤 • MW・クラウドサービス導入支援 • ...etc
© Cygames,Inc. 実施対象 • サービス影響厳禁 • 手をつけられるところからやろう • ログの解析ツールへのロード処理を ECS化していた
© Cygames,Inc. 事例 ECS Task の停止
© Cygames,Inc. AWS Cloud Instances ECS Containers Elastic Search Service
へのログインポート処理
© Cygames,Inc. 定常状態 仮説反証 故障発生 仮説構築 Chaos Loop Received ≒
Deleted Load Latency < 60s Taskが停止しても ロード処理に無影響 反証されなかった ECS Task 停止
© Cygames,Inc. 事例 ECS Task の停止 • 結果 ◦ SQS
Deleted と Received は変化なし・遅延も数秒以下 ◦ Task 数が多い可能性示唆 • アクション ◦ 故障率を上げても同様の結果になるか確認する
© Cygames,Inc. 章まとめ • できるところからやっている • 仮説通りのポジティブな結果だと安心 • 指標化が不十分な箇所が明確化
© Cygames,Inc. まとめと今後の展望
© Cygames,Inc. 導入によるメリット • 信頼性・可用性・保守性の向上 • SPOF・脆弱性認知 • 障害発生を前提としたコード実装
© Cygames,Inc. AWSだから手軽にできた • インスタンス起動・停止 • NW遮断 • DB Failover
• ECS task 起動・停止
© Cygames,Inc. プロダクション環境で実践するための課題 • プロダクトチームとの交渉 • モノリスからマイクロサービスへ • 影響範囲の最小化 •
自動化
© Cygames,Inc. 今後 • Failure Fastな設計推進 • マイクロサービス化推進 • カオスエンジニアリング推進
© Cygames,Inc. We are hiring chaos engineer !!
Thank you!