More Related Content Similar to Google Cloud Platformでソーシャルゲームを1本出してみた!
Similar to Google Cloud Platformでソーシャルゲームを1本出してみた! (20) Google Cloud Platformでソーシャルゲームを1本出してみた!2. はじめに!
• 単なるエンジニアなので気楽に聞いて下さい。
• また今回の発表の内容は
GCP上でGCPの機能を活用しながらいわゆるソーシャルゲーム
の設計をしてみました!
そしてできましたよ!という内容になってます。
• これから導入を検討されている企業のみなさまの良い参考になれ
ばと考えています。
5. 自己紹介
氏名長谷川祐介
経歴
20代に転々としながら
2010年にgloops(旧gms)へ
2014年4月1日からZeadleへ
職種いわゆるインフラエンジニア
GCP歴約4ヶ月
その他AWSもAzureもVM側だけど数ヶ月以上触ってます。
基本的にはオンプレが多いです。
8. 斬神
• 戦国ファンタジー風味の
リアルタイムバトル
• Mobage NBPFで提供
• 完全にWeb!
• WebSocketバリバリ仕様
• 同時に20人でボスを叩け
ます!
• http://ap.zs.zeadle.net/
10. Google各種サービス
Compute Engine
Application / WebSocket
redis, MySQL etc…
LoadBalancer, Network Firewall
metadata, snapshot
CloudDNS DNSはすべて依存
CloudStorage 静的ファイル配信、バックアップなど
BigQuery KPI関連とログ系すべて
Google Analytics もはや説明の必要なし
12. インスタンス種別
• Application x 21
• WebSocket x 21
• Entry(事前登録用)x 2
• JobQueue Worker x 7
• API(Platformと連携)x 3
• MariaDB x 11
• Redis x 6
• Redis(JobQueue用)x 2
• Operation Central x 1
• KPI収集 x 1
production/staging合わせて
14. WebSocketへの振り分け手法
• LoadBalancerを使ってません!
いわゆるHTTP Dispatcherを独自
で構成してます。
• 監視結果を元に
正常なWebSocketインスタンス情
報を更新
• 各レイドボス出現タイミングで選択
• 伐討祭(リアルタイムバトル)では
team_id単位で利用するインスタン
スを選択
• こういったインスタンスの監視を元
にしたクラスタ稼働状況は
Applicationと連携して自動で更新
稼働してます。
16. MariaDB
• haproxyで処理系から接続
• lookup, master, contents, historyと複数のスキーマ分割
• userNはlookupでマッピングして分割
• BackupにはPercona XtraBackupとmysqldumpを状況に応じ
て使い分けそれぞれCloud Storageへバックアップ
• configは完全に自動化
17. Deploy
• Active/Standbyの切り替え
• 今のところJenkinsとか使っ
ていません。
• Deployはgit pull
• 切り替えはconsulのkv使っ
ていて1秒程度
• 同じくRollbackも!
• メンテナンス切り替え
メンテナ時特定IPだけ許可
特定IPはStandbyに通す
• 各種操作はオーケストレーショ
ンを通してHipChatへ通知
18. Monitor
• 全インスタンス共通でオレオレ仕様になってますw
• configは起動時にmetadataから取得してくるタグをベースに自動生成
• consulから起動するmonitor用のscriptで直接metrixをlibratoへ
• consulのHTTP API health/stateを利用してデータをサマってHipChatへ
• またBigQueryのApplicationLogをHipchatへ(logglyでもできるけど後付なんで
19. Operation Central
• さきほど紹介したDeployTool
• PerlのCinnamon
• nginx, haproxy, fluentd, consul, etc…のconfig自動生成
• 各種daemonのコントロールなど
• セットアップなどにも活用
• 各種操作はHipChatへ通知
20. KPI
• よく言われるKPI必須項目系以外にも各種進行度などグラフ化
• 短い間隔(現状1分間隔)でMariaDB/Redis/BigQueryを活用
してデータ集計
まだBigQueryの利用率が低いがリリース期間が短いためこれか
ら活発になっていくと思われる!
• 結果はすべてLibratoへ送りグラフ描画
• またGoogle Analyticsを活用中
21. bootstrap
• operation用のインスタンスをsnapshot取得
• 上記snapshotからstartup scriptを利用して作りたいサーバー
種別用のtagを付与しながらaddinstanceするだけ
• startup scriptが起動時に各種configを自動生成しながら所定の
サーバーに仕上げてくれる形になってます。
• cloud storageにUploadして使っています。
• 上記をまとめたコマンドセットを発行できる仕組みを作って対応
してます。
24. これからやりたいこと
• stream使いたい!
ゲームで導入すると面白いことがいろいろできそうな気がする!
• docker化
大好きなんですがリリース準備中はちょっとタイミング悪かったの
で・・・
• 現在外部依存している部分についてはコストを見ながら徐々に
BigQueryなどを活用したものに移行していこうと思ってます。