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
December 10, 2018
Technology
6
4.4k
モバイルゲームにおけるカオスエンジニアリング実践に向けて
2018/12/04 Amazon Game Developers Day 2018
Cygames
December 10, 2018
Tweet
Share
More Decks by Cygames
See All by Cygames
『GRANBLUE FANTASY Relink』キャラクターの魅力を支えるリグ・シミュレーション制作事例
cygames
0
410
『GRANBLUE FANTASY: Relink』最高の「没入感」を実現するカットシーン制作手法とそれを支える技術
cygames
1
320
『GRANBLUE FANTASY Relink』ソフトウェアラスタライザによる実践的なオクルージョンカリング
cygames
0
320
高品質なフォトグラメトリデータを取得するためのハードウェア&ソフトウェア開発
cygames
0
1.1k
AIを活用した柔軟かつ効率的な社内リソース検索への取り組み
cygames
0
980
『GRANBLUE FANTASY: Relink』開発からリリースまでを支えたCI/CDの取り組み
cygames
0
250
『GRANBLUE FANTASY: Relink』専任エンジニアチームで回す大規模開発QAサイクル
cygames
0
260
『GRANBLUE FANTASY: Relink』クオリティと物量の両立に挑戦したフェイシャルアニメーション事例 ~カットシーンからランタイムまで~
cygames
0
280
『GRANBLUE FANTASY: Relink』キャラクターの個性にlinkした効果音表現
cygames
0
130
Other Decks in Technology
See All in Technology
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
200
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
CysharpのOSS群から見るModern C#の現在地
neuecc
2
3.3k
Why does continuous profiling matter to developers? #appdevelopercon
salaboy
0
190
Evangelismo técnico: ¿qué, cómo y por qué?
trishagee
0
360
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
150
フルカイテン株式会社 採用資料
fullkaiten
0
40k
Can We Measure Developer Productivity?
ewolff
1
150
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
470
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
750
Lambdaと地方とコミュニティ
miu_crescent
2
370
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
Featured
See All Featured
Code Review Best Practice
trishagee
64
17k
Statistics for Hackers
jakevdp
796
220k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Visualization
eitanlees
145
15k
Writing Fast Ruby
sferik
627
61k
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!