SlideShare a Scribd company logo
1 of 37
Download to read offline
モンスターストライクにおける
監視システムのあれこれ
株式会社ミクシィ
モンスト事業本部 開発室 室⻑
⽩川裕介
⾃⼰紹介
⾃⼰紹介
- ⽒名
- 白川裕介
- 経歴
- 2012年に新卒でミクシィに入社。
- SNS「mixi」でアドネットワークを担当したのちXFLAGのアドテクスタジオへ異動
- その後、モンストの開発に携わりマネージャーを経験
- 現在では開発室の室長として、モンストに関わるエンジニア組織を統括
モンスターストライク
モンスターストライク
⾃分のモンスターを引っ張って弾き、敵のモンスターに当てて倒していくという、スマートフォンの特性を活⽤した、
誰でも簡単に楽しめるアクションRPGです。ゲームはターン制をとっており、
⼀緒にいる友だちと最⼤4⼈まで同時に遊べる協⼒プレイ(マルチプレイ)が特⻑です。
2013年の10⽉の提供開始から現在※までの世界累計利⽤者数5,300万⼈を突破
※ 2020年01⽉時点
「世界累計利用者数 5,300万人を突破したスマホアプリ」
アジェンダ
モンストを⽀えるシステム
アーキテクチャ構成
監視システム
メトリクス監視
死活監視
監視のその先
・
・
・
・
・
・
アーキテクチャ構成
アーキテクチャ構成
LB
App
App
App
DB(master) DB(backup)
Redis
Memcached
Batch
Turn
アーキテクチャ構成
LB
App
App
App
App
• ロードバランサー
• A10を利用し配下に約200台のAppサーバーを配置
• Appサーバー
• マルチクラウドで計算リソースの確保
• AWS / GCP / IBM を利用
• オンプレサーバーも利用
• ハイブリット構成にしている理由
• 単一点障害の回避
• 在庫の確保の柔軟性
アーキテクチャ構成
DB(master) DB(backup)
DB
• 全てオンプレサーバーで構成
• 約300台稼働中
• 複数拠点・複数系統でサーバー故障に備える
• DBサーバーへのアプローチ
• 水平分割 / 垂直分割
• Indexやクエリの最適化
• 高性能なマシンを投入 (高いIO性能を出せるもの)
• IOMemory / NVMeを利用
DBサーバー障害への対策
• データが完全に消失しないように何重にも防衛
• DCレベルでの冗⻑化
• DBサーバーは2拠点での冗長化
• DC毎に複数系統に冗長化
• master - backup構成
• 定期的にDBのSnapshotをとりクラウド上に保存
• 数週間分のbinlogのBackupを保持
アーキテクチャ構成
Redis
Memcached
Batch
Redis / Batch / memcached
• Redis / Batch
• Resqueを利用した非同期処理
• ミッションの達成判定や報酬付与などを非同期処理で実施
• memcached
• すべてオンプレサーバーで構成
• DBサーバーとの距離を重視
• DB性能限界へのアプローチとしてCacheを用いる
• モンストではCacheの比重が大きい
• app <=> memcached の往復が100回を超えるAPIもある
• Cacheを利用することによりレスポンスの高速化を実現
• Replica Poolを用意しサーバー障害へ対策
アーキテクチャ構成まとめ その1
• 稼働中のサーバーはトータルで約1,000台
• DBサーバー: 約300台、Appサーバー: 約200台
• Turnサーバーを利⽤しマルチプレイを実現
• パケットのリレーを行う用途
• Cacheを多⽤することでレスポンスの⾼速化
• モンストではmemecachedを利用
• Resqueを利⽤した⾮同期処理
• バックエンドはRedis
アーキテクチャ構成まとめ その2
• ハイブリッド構成
• 自社DCのオンプレサーバーとクラウドサーバーの併用
• 単一点障害の回避や柔軟な在庫の確保
• サーバー障害に対して、何重もの対策を実施
• DCの冗長構成
• 2つDCを利用しDCレベルでの冗長化を実現
• memcachedのReplica Poolの用意
監視システム
監視システム(メトリクス監視)
• CloudForecast
• リソースのモニタリング
• Kibana + elasticsearch
• ログ可視化
• Grafana + InfluxDB
• APIリクエストなどをモニタリング
CloudForecast
• mixiで利⽤していた監視ツール
• オープンソースで公開
• http://github.com/kazeburo/cloudforecast
• Gearmanで監視処理を分散
• RRDtoolのラッパー
• Perlで書かれている
• Pluginを⾃作して各種項⽬を監視
Kibana + elasticsearch
• Appサーバーのlogなどを蓄積
• ログの集計や検索などに利用
• 1/100でサンプリングして蓄積
• Fluentd
• サンプリングやデータ加工
• Kibana + Elasticsearch
• 可視化、検索
Grafana + InfluxDB
• InfluxDB
• 様々なデータを集計して蓄積
• Grafana
• ダッシュボードを作成し可視化
• Nagios
• サーバー監視
• PagerDuty
• インシデント管理システム
監視システム(死活監視)
Nagios
• サービスインしている全サーバーの死活監視を実施
• 監視項目はサーバーの利用用途により多岐にわたる
• App/DB/memcached等
• 監視項目(check plugin)も独自に拡張
• SNMPのextend機能を利用
• Nagios自体の監視をするために各拠点ごとにNagiosを構築
• 相互に監視をし合う
• 独自で運用ツールを構築
• 設定に用いるcfgファイルはyamlから自動生成
• 各拠点の設定を一括で更新
PagerDuty
• 監視で異常を検知した際のインシデント通知を送る
• 各種監視システムと簡単に連携可能
• エスカレーションルールを柔軟に設定可能
• On-Call当番制
• システム障害に備えて24時間365日待機
• 2人1組で1週間の当番制
• アラート発生時には15分以内に対応開始
監視システム
• オンプレ・クラウドで共通で利⽤可能
• モンストはハイブリット構成で運用
• 拠点間に監視やモニタリングは共通である必要
• SNS mixi時代からの資産を数多く利⽤
• 採用しているフレームワークやアーキテクチャは違えど基本的な構成は同じ
• SNS時代に活用していたものを多く利用可能
監視システムまとめ
• モンストの監視システム
• メトリクス監視
• CloudForecast
• Kibana + elasticsearch
• Grafana + InfluxDB
• 死活監視
• Nagios
• PagerDuty
• SNS mixiで⽤いていた資産を最⼤限に活⽤
• 独⾃Pluginなどで監視項⽬を拡張
監視のその先
メトリクス監視
• グラフを⾒る/ログを取る習慣をつける
• 毎日見ているとグラフから小さな変化にも気づくことが可能
• イベントやピークタイミングのログやグラフから次回への対策を考察
• より詳細なログが取りたいときはサーバーにtcpdumpを仕込む
• グラフの変化を捉える
• バージョンアップ、改善施策のリリース、イベント時など
• 必ずグラフ上から変化読み取る
• 想定通りなのか、想定外なのかを判断
メトリクス監視
• リリース後の効果
メトリクス監視
• リリース後の効果
メトリクス監視
• グラフから読み取る⼒を養う
• 各サーバーによって監視項⽬は異なる
• 各グラフを⾒ることでサービスの全体構成を把握
メトリクス監視
• グラフから読み取る⼒を養う
• 各サーバーによって監視項⽬は異なる
• 各グラフを⾒ることでサービスの全体構成を把握
死活監視
• On-Call
• Nagios / CloudWatch / Zabbix などの監視からPagerDutyへ通知
• 同時にslackのalert部屋にも投稿
• アラートがなったら15分以内に対応開始
• 基本的な1次対応はドキュメント化されている
• 1次対応に少しでも迷った場合はエスカレーションを奨励
障害対応時のルール
• 深夜対応の⼼得
• 必ず安全な道を選ぶ
• 1次対応を迅速に実施
• サービスが正常に回っている状態まで復旧
• 2次対応(サーバの復旧や新サーバの作成)は翌営業日の作業
• 作業分担
• デプロイする内容は必ずもう一人の確認するなど
• 情報を共有
• 必ずslack内で作業内容を共有
• ログなど共有すべき内容は必ず共有
• サービスにエラーや遅延など影響がある場合は企画とcsに共有
まとめ
⽇頃から監視ツールを確認する癖をつけましょう
(未然に防げるものは防ぎましょう)
モンスターストライクにおける監視システムのあれこれ

More Related Content

What's hot

UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件Grenge, Inc.
 
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?Yusuke Shirakawa
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)gree_tech
 
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingはじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingTakashi Yoshinaga
 
モンスターストライクにおける負荷対策
モンスターストライクにおける負荷対策モンスターストライクにおける負荷対策
モンスターストライクにおける負荷対策Yusuke Shirakawa
 
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについてSEGADevTech
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込むYoshiki Hayama
 
9コマシナリオの使い方
9コマシナリオの使い方9コマシナリオの使い方
9コマシナリオの使い方Mayumi Okusa
 
つぶやきGLSLのススメ
つぶやきGLSLのススメつぶやきGLSLのススメ
つぶやきGLSLのススメnotargs
 
IoT Agents とは? - FIWARE WednesdayWebinars
IoT Agents とは? - FIWARE WednesdayWebinarsIoT Agents とは? - FIWARE WednesdayWebinars
IoT Agents とは? - FIWARE WednesdayWebinarsfisuda
 
ピクシブ社初! 大規模チームのチームビルディング
ピクシブ社初! 大規模チームのチームビルディングピクシブ社初! 大規模チームのチームビルディング
ピクシブ社初! 大規模チームのチームビルディングYuzo Shigematsu
 
WebGIS初級編 - OpenLayersで簡単作成
WebGIS初級編 - OpenLayersで簡単作成WebGIS初級編 - OpenLayersで簡単作成
WebGIS初級編 - OpenLayersで簡単作成Hideo Harada
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified IDNaohiro Fujie
 
Node RED で実現する製造業の DX
Node RED で実現する製造業の DXNode RED で実現する製造業の DX
Node RED で実現する製造業の DX雅治 新澤
 
Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_ltDoozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lttorisoup
 
Fargateを使いこなす!creatiaのインフラを支える技術について
Fargateを使いこなす!creatiaのインフラを支える技術についてFargateを使いこなす!creatiaのインフラを支える技術について
Fargateを使いこなす!creatiaのインフラを支える技術について虎の穴 開発室
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るUnity Technologies Japan K.K.
 
DMBOKをベースにしたデータマネジメント
DMBOKをベースにしたデータマネジメントDMBOKをベースにしたデータマネジメント
DMBOKをベースにしたデータマネジメントKent Ishizawa
 

What's hot (20)

UnityでUI開発を高速化した件
UnityでUI開発を高速化した件UnityでUI開発を高速化した件
UnityでUI開発を高速化した件
 
5分でわかる Unity点群
5分でわかる Unity点群5分でわかる Unity点群
5分でわかる Unity点群
 
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?大規模トラフィックにどのように備えて負荷対策を実施しているのか?
大規模トラフィックにどのように備えて負荷対策を実施しているのか?
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
 
はじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTrackingはじめようARCore:自己位置推定・平面検出・FaceTracking
はじめようARCore:自己位置推定・平面検出・FaceTracking
 
モンスターストライクにおける負荷対策
モンスターストライクにおける負荷対策モンスターストライクにおける負荷対策
モンスターストライクにおける負荷対策
 
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
 
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む45分間で「ユーザー中心のものづくり」ができるまで詰め込む
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
 
9コマシナリオの使い方
9コマシナリオの使い方9コマシナリオの使い方
9コマシナリオの使い方
 
つぶやきGLSLのススメ
つぶやきGLSLのススメつぶやきGLSLのススメ
つぶやきGLSLのススメ
 
IoT Agents とは? - FIWARE WednesdayWebinars
IoT Agents とは? - FIWARE WednesdayWebinarsIoT Agents とは? - FIWARE WednesdayWebinars
IoT Agents とは? - FIWARE WednesdayWebinars
 
ピクシブ社初! 大規模チームのチームビルディング
ピクシブ社初! 大規模チームのチームビルディングピクシブ社初! 大規模チームのチームビルディング
ピクシブ社初! 大規模チームのチームビルディング
 
WebGIS初級編 - OpenLayersで簡単作成
WebGIS初級編 - OpenLayersで簡単作成WebGIS初級編 - OpenLayersで簡単作成
WebGIS初級編 - OpenLayersで簡単作成
 
今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
 
Node RED で実現する製造業の DX
Node RED で実現する製造業の DXNode RED で実現する製造業の DX
Node RED で実現する製造業の DX
 
Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_ltDoozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
 
Fargateを使いこなす!creatiaのインフラを支える技術について
Fargateを使いこなす!creatiaのインフラを支える技術についてFargateを使いこなす!creatiaのインフラを支える技術について
Fargateを使いこなす!creatiaのインフラを支える技術について
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
 
DMBOKをベースにしたデータマネジメント
DMBOKをベースにしたデータマネジメントDMBOKをベースにしたデータマネジメント
DMBOKをベースにしたデータマネジメント
 

Similar to モンスターストライクにおける監視システムのあれこれ

クリエイターに大切なモノ
クリエイターに大切なモノクリエイターに大切なモノ
クリエイターに大切なモノWataru Ito
 
ゼロからのエンジニアが開発マネージャーになるまで
ゼロからのエンジニアが開発マネージャーになるまでゼロからのエンジニアが開発マネージャーになるまで
ゼロからのエンジニアが開発マネージャーになるまでYusuke Shirakawa
 
クラッシュフィーバー開発の裏側
クラッシュフィーバー開発の裏側クラッシュフィーバー開発の裏側
クラッシュフィーバー開発の裏側Tomotsune Murata
 
モバイル通信を使わない 近接端末間通信対戦のレシピ
モバイル通信を使わない 近接端末間通信対戦のレシピモバイル通信を使わない 近接端末間通信対戦のレシピ
モバイル通信を使わない 近接端末間通信対戦のレシピNakamuraTaro
 
VR空間特有のリアルを追え 〜メイキング「エニグマスフィア」
VR空間特有のリアルを追え 〜メイキング「エニグマスフィア」VR空間特有のリアルを追え 〜メイキング「エニグマスフィア」
VR空間特有のリアルを追え 〜メイキング「エニグマスフィア」Yomuneco
 
【CEDEC2015】リアルタイム通信アクションゲーム60分クッキング!〜1時間でゼロから本格的MOゲームを完成させるライブコーディングデモ〜
【CEDEC2015】リアルタイム通信アクションゲーム60分クッキング!〜1時間でゼロから本格的MOゲームを完成させるライブコーディングデモ〜【CEDEC2015】リアルタイム通信アクションゲーム60分クッキング!〜1時間でゼロから本格的MOゲームを完成させるライブコーディングデモ〜
【CEDEC2015】リアルタイム通信アクションゲーム60分クッキング!〜1時間でゼロから本格的MOゲームを完成させるライブコーディングデモ〜モノビット エンジン
 
画像処理は怖くない-OpenCVのすすめ-
画像処理は怖くない-OpenCVのすすめ-画像処理は怖くない-OpenCVのすすめ-
画像処理は怖くない-OpenCVのすすめ-JackMasaki
 
ポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウGameCreators,CyberAgent
 
元ソシャゲプランナー幻談
元ソシャゲプランナー幻談元ソシャゲプランナー幻談
元ソシャゲプランナー幻談YukiSamuraki
 
ホントのホントの0から始める3Dモデリング入門
ホントのホントの0から始める3Dモデリング入門ホントのホントの0から始める3Dモデリング入門
ホントのホントの0から始める3Dモデリング入門c-mitsuba
 
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウGameCreators,CyberAgent
 
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)ミルク株式会社
 

Similar to モンスターストライクにおける監視システムのあれこれ (12)

クリエイターに大切なモノ
クリエイターに大切なモノクリエイターに大切なモノ
クリエイターに大切なモノ
 
ゼロからのエンジニアが開発マネージャーになるまで
ゼロからのエンジニアが開発マネージャーになるまでゼロからのエンジニアが開発マネージャーになるまで
ゼロからのエンジニアが開発マネージャーになるまで
 
クラッシュフィーバー開発の裏側
クラッシュフィーバー開発の裏側クラッシュフィーバー開発の裏側
クラッシュフィーバー開発の裏側
 
モバイル通信を使わない 近接端末間通信対戦のレシピ
モバイル通信を使わない 近接端末間通信対戦のレシピモバイル通信を使わない 近接端末間通信対戦のレシピ
モバイル通信を使わない 近接端末間通信対戦のレシピ
 
VR空間特有のリアルを追え 〜メイキング「エニグマスフィア」
VR空間特有のリアルを追え 〜メイキング「エニグマスフィア」VR空間特有のリアルを追え 〜メイキング「エニグマスフィア」
VR空間特有のリアルを追え 〜メイキング「エニグマスフィア」
 
【CEDEC2015】リアルタイム通信アクションゲーム60分クッキング!〜1時間でゼロから本格的MOゲームを完成させるライブコーディングデモ〜
【CEDEC2015】リアルタイム通信アクションゲーム60分クッキング!〜1時間でゼロから本格的MOゲームを完成させるライブコーディングデモ〜【CEDEC2015】リアルタイム通信アクションゲーム60分クッキング!〜1時間でゼロから本格的MOゲームを完成させるライブコーディングデモ〜
【CEDEC2015】リアルタイム通信アクションゲーム60分クッキング!〜1時間でゼロから本格的MOゲームを完成させるライブコーディングデモ〜
 
画像処理は怖くない-OpenCVのすすめ-
画像処理は怖くない-OpenCVのすすめ-画像処理は怖くない-OpenCVのすすめ-
画像処理は怖くない-OpenCVのすすめ-
 
ポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウポコロンダンジョンズを彩るアニメーションノウハウ
ポコロンダンジョンズを彩るアニメーションノウハウ
 
元ソシャゲプランナー幻談
元ソシャゲプランナー幻談元ソシャゲプランナー幻談
元ソシャゲプランナー幻談
 
ホントのホントの0から始める3Dモデリング入門
ホントのホントの0から始める3Dモデリング入門ホントのホントの0から始める3Dモデリング入門
ホントのホントの0から始める3Dモデリング入門
 
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
『ポコロンダンジョンズ』エフェクトや演出制作ノウハウ
 
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
「会社で寝よう!」制作レポート(3Dカジュアルゲームの開発手法)
 

モンスターストライクにおける監視システムのあれこれ