Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
モバイルゲームにおけるカオスエンジニアリング実践に向けて
Search
Cygames, Inc.
PRO
December 10, 2018
Technology
4.7k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
モバイルゲームにおけるカオスエンジニアリング実践に向けて
2018/12/04 Amazon Game Developers Day 2018
Cygames, Inc.
PRO
December 10, 2018
More Decks by Cygames, Inc.
See All by Cygames, Inc.
【ゲームメーカーズスクランブル2026】『Shadowverse: Worlds Beyond』UIとアニメーションで実現する最高のユーザー体験を叶えるプロトタイピング
cygames
PRO
1
710
【CEDEC2026】Creative Approaches to Localizing the Dialects and Unique Speech of Umamusume: Pretty Derby Characters in English
cygames
PRO
5
28k
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
1
1.3k
【CEDEC2026】『ウマ娘 プリティーダービー』 英語版のキャラクターの方言や口調をローカライズするための創造的アプローチ
cygames
PRO
4
1.3k
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
3
2.1k
【CEDEC2026】派手さと見やすさは両立できる!『Shadowverse: Worlds Beyond』エフェクト・3D背景の超進化したビジュアル設計
cygames
PRO
2
2k
【CEDEC2026】『Shadowverse: Worlds Beyond』続編開発におけるUIデザイン・アニメーション演出の「超進化」 ~継承と挑戦を両立するデザイン手法~
cygames
PRO
4
5.3k
【CEDEC2026】『Relink』を拡張せよ - 『GRANBLUE FANTASY: Relink - Endless Ragnarok』の開発速度と品質を守るCI運用
cygames
PRO
2
450
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
3
600
Other Decks in Technology
See All in Technology
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
2
650
サーバーフルコンピューティング?AWS Lambda
iwatatomoya
0
120
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
230
個別開発で終わらせない。 現場の課題をプロダクトの強さに変える StockmarkのFDE
ktkrhr
0
530
大阪オフィスに Unitree Go2 がやってきたので Physical AI やってみた
dafujii
0
220
「とりあえず動く」の先へ。 AI時代のチーム開発と内部設計/2026-slsdays
slsops
0
100
キャリアLT今日までそして明日から
kentapapa
1
140
[2026 Oracle Technical Deep Dive] エンタープライズAIエージェントを支えるOCIソリューション。ラインナップと特徴を理解しよう! (2026年9月17日開催)
oracle4engineer
PRO
0
150
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
270
Claude起点の仕様駆動開発
tanakaseiya
0
280
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
180
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
580
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Navigating Weather and Climate Data
rabernat
0
540
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
960
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Design in an AI World
tapps
1
340
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Believing is Seeing
oripsolob
1
240
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
My Coaching Mixtape
mlcsv
0
330
Building the Perfect Custom Keyboard
takai
2
890
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!