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
最高のアートワークを発信する『Cygames展 Artworks』企画制作事例
cygames
0
13
社内にバーチャルスタッフ!?「スイちゃん」のキャラクターデザインと施策の広げ方の秘訣
cygames
0
43
全高3m超のバハムート像がスマホを通して躍動する! ~『Cygames展 Artworks』ARコンテンツの開発プロセスと実装~
cygames
0
6
最高の資料を目指すために!社内フリーイラスト制作チームの取り組みについて
cygames
0
42
「生きているモーション」を作り出すCygamesのモーションキャプチャー
cygames
0
30
『Cygames展 Artworks』におけるShadowverseデジタルサイネージ制作事例
cygames
0
15
『GRANBLUE FANTASY: Relink』 原作の世界観に没入するステージの絵作り
cygames
0
15
『GRANBLUE FANTASY: Relink』イラストを再現する為のキャラクターモデル制作事例
cygames
0
16
『GRANBLUE FANTASY: Relink』キャラクターの魅力を支えるリグ制作事例
cygames
0
22
Other Decks in Technology
See All in Technology
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
520
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
210
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
260
Amazon Kendra GenAI Index 登場でどう変わる? 評価から学ぶ最適なRAG構成
naoki_0531
0
100
権威ドキュメントで振り返る2024 #年忘れセキュリティ2024
hirotomotaguchi
2
740
Wvlet: A New Flow-Style Query Language For Functional Data Modeling and Interactive Data Analysis - Trino Summit 2024
xerial
1
110
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
520
re:Invent をおうちで楽しんでみた ~CloudWatch のオブザーバビリティ機能がスゴい!/ Enjoyed AWS re:Invent from Home and CloudWatch Observability Feature is Amazing!
yuj1osm
0
120
AIのコンプラは何故しんどい?
shujisado
1
190
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
330
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
260
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
33
3k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5k
A designer walks into a library…
pauljervisheath
204
24k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
What's in a price? How to price your products and services
michaelherold
243
12k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
97
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!