SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
でソーシャルゲームを 
1本出してみた! 
株式会社 Zeadle 長谷川祐介 
2014-07-28
はじめに! 
• 単なるエンジニアなので気楽に聞いて下さい。 
• また今回の発表の内容は 
GCP上でGCPの機能を活用しながらいわゆるソーシャルゲーム 
の設計をしてみました! 
そしてできましたよ!という内容になってます。 
• これから導入を検討されている企業のみなさまの良い参考になれ 
ばと考えています。
index 
• 会社説明 
• 自己紹介 
• ゲーム紹介 
• GCP上で今回作ったアーキテクチャの説明
会社説明 
社名株式会社Zeadle 
設立2013年 
代表川方慎介 
社名の由来Zeal(熱意)とDoodle(いたずら書きをする)
自己紹介 
氏名長谷川祐介 
経歴 
20代に転々としながら 
2010年にgloops(旧gms)へ 
2014年4月1日からZeadleへ 
職種いわゆるインフラエンジニア 
GCP歴約4ヶ月 
その他AWSもAzureもVM側だけど数ヶ月以上触ってます。 
基本的にはオンプレが多いです。
ゲーム紹介
ゲームタイトル
斬神 
• 戦国ファンタジー風味の 
リアルタイムバトル 
• Mobage NBPFで提供 
• 完全にWeb! 
• WebSocketバリバリ仕様 
• 同時に20人でボスを叩け 
ます! 
• http://ap.zs.zeadle.net/
アーキテクチャ
Google各種サービス 
Compute Engine 
Application / WebSocket 
redis, MySQL etc… 
LoadBalancer, Network Firewall 
metadata, snapshot 
CloudDNS DNSはすべて依存 
CloudStorage 静的ファイル配信、バックアップなど 
BigQuery KPI関連とログ系すべて 
Google Analytics もはや説明の必要なし
お世話になってるみなさん!
インスタンス種別 
• 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合わせて
Application/WebSocket 
WebSocketインスタンスはlocalにredisが起動
WebSocketへの振り分け手法 
• LoadBalancerを使ってません! 
いわゆるHTTP Dispatcherを独自 
で構成してます。 
• 監視結果を元に 
正常なWebSocketインスタンス情 
報を更新 
• 各レイドボス出現タイミングで選択 
• 伐討祭(リアルタイムバトル)では 
team_id単位で利用するインスタン 
スを選択 
• こういったインスタンスの監視を元 
にしたクラスタ稼働状況は 
Applicationと連携して自動で更新 
稼働してます。
Redis 
• haproxyで処理系から接続 
• 各目的別でデータをsharding 
• websocketの後ろでpub/sub 
• Resque?かわからないけどPythonのJobQueueとしても
MariaDB 
• haproxyで処理系から接続 
• lookup, master, contents, historyと複数のスキーマ分割 
• userNはlookupでマッピングして分割 
• BackupにはPercona XtraBackupとmysqldumpを状況に応じ 
て使い分けそれぞれCloud Storageへバックアップ 
• configは完全に自動化
Deploy 
• Active/Standbyの切り替え 
• 今のところJenkinsとか使っ 
ていません。 
• Deployはgit pull 
• 切り替えはconsulのkv使っ 
ていて1秒程度 
• 同じくRollbackも! 
• メンテナンス切り替え 
メンテナ時特定IPだけ許可 
特定IPはStandbyに通す 
• 各種操作はオーケストレーショ 
ンを通してHipChatへ通知
Monitor 
• 全インスタンス共通でオレオレ仕様になってますw 
• configは起動時にmetadataから取得してくるタグをベースに自動生成 
• consulから起動するmonitor用のscriptで直接metrixをlibratoへ 
• consulのHTTP API health/stateを利用してデータをサマってHipChatへ 
• またBigQueryのApplicationLogをHipchatへ(logglyでもできるけど後付なんで
Operation Central 
• さきほど紹介したDeployTool 
• PerlのCinnamon 
• nginx, haproxy, fluentd, consul, etc…のconfig自動生成 
• 各種daemonのコントロールなど 
• セットアップなどにも活用 
• 各種操作はHipChatへ通知
KPI 
• よく言われるKPI必須項目系以外にも各種進行度などグラフ化 
• 短い間隔(現状1分間隔)でMariaDB/Redis/BigQueryを活用 
してデータ集計 
まだBigQueryの利用率が低いがリリース期間が短いためこれか 
ら活発になっていくと思われる! 
• 結果はすべてLibratoへ送りグラフ描画 
• またGoogle Analyticsを活用中
bootstrap 
• operation用のインスタンスをsnapshot取得 
• 上記snapshotからstartup scriptを利用して作りたいサーバー 
種別用のtagを付与しながらaddinstanceするだけ 
• startup scriptが起動時に各種configを自動生成しながら所定の 
サーバーに仕上げてくれる形になってます。 
• cloud storageにUploadして使っています。 
• 上記をまとめたコマンドセットを発行できる仕組みを作って対応 
してます。
運用に利用してる画面
斬神インフラの今後の課題 
• AutoScaleはまだ未実施 
• WebSocket系の構成を見直し、保険をもう少し作りたい。 
• consulが恐ろしく便利! 
ただしちょっと関係ないけどserverがすんごいバッファ食うw 
(clientは問題無し
これからやりたいこと 
• stream使いたい! 
ゲームで導入すると面白いことがいろいろできそうな気がする! 
• docker化 
大好きなんですがリリース準備中はちょっとタイミング悪かったの 
で・・・ 
• 現在外部依存している部分についてはコストを見ながら徐々に 
BigQueryなどを活用したものに移行していこうと思ってます。
ご清聴ありがとうございました! 
! 
今後ともよろしくお願い致します!

Contenu connexe

Tendances

20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazugKatsuya Shimizu
 
Bicep 入門 MySQL編
Bicep 入門 MySQL編Bicep 入門 MySQL編
Bicep 入門 MySQL編Takekazu Omi
 
AzureDevOpsの機能解説
AzureDevOpsの機能解説AzureDevOpsの機能解説
AzureDevOpsの機能解説Makoto Nishimura
 
Azure DevOps と開発管理
Azure DevOps と開発管理Azure DevOps と開発管理
Azure DevOps と開発管理Tsukasa Kato
 
Azure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーションAzure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーションMasahiko Ebisuda
 
俺的 Build 2020 Update まとめ
俺的 Build 2020 Update まとめ俺的 Build 2020 Update まとめ
俺的 Build 2020 Update まとめYui Ashikaga
 
AnsibleによるHWプロビジョニング -OneViewの連携-
AnsibleによるHWプロビジョニング  -OneViewの連携-AnsibleによるHWプロビジョニング  -OneViewの連携-
AnsibleによるHWプロビジョニング -OneViewの連携-Takahiro Kida
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話gree_tech
 
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~Dai Iwai
 
Azure Functions あれこれ
Azure Functions あれこれAzure Functions あれこれ
Azure Functions あれこれYasuaki Matsuda
 
大規模ライブ配信の苦労ポイント
大規模ライブ配信の苦労ポイント大規模ライブ配信の苦労ポイント
大規模ライブ配信の苦労ポイントgree_tech
 
Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要Yui Ashikaga
 
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)Masahiko Ebisuda
 
Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)Kazushi Kamegawa
 
Azure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュAzure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュYasuaki Matsuda
 
ワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルTsuyoshi Ushio
 
OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向gree_tech
 
Multi Cloud Design Pattern(Beta)
Multi Cloud Design Pattern(Beta)Multi Cloud Design Pattern(Beta)
Multi Cloud Design Pattern(Beta)Terui Masashi
 
How to create your own Azure Pipeline's image
How to create your own Azure Pipeline's imageHow to create your own Azure Pipeline's image
How to create your own Azure Pipeline's imageKazushi Kamegawa
 

Tendances (20)

20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
20181201 Azure Storage 静的 Web サイト ホスティング #きたあず #jazug
 
Bicep 入門 MySQL編
Bicep 入門 MySQL編Bicep 入門 MySQL編
Bicep 入門 MySQL編
 
AzureDevOpsの機能解説
AzureDevOpsの機能解説AzureDevOpsの機能解説
AzureDevOpsの機能解説
 
Azure DevOps と開発管理
Azure DevOps と開発管理Azure DevOps と開発管理
Azure DevOps と開発管理
 
Azure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーションAzure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーション
 
俺的 Build 2020 Update まとめ
俺的 Build 2020 Update まとめ俺的 Build 2020 Update まとめ
俺的 Build 2020 Update まとめ
 
Nested Hyper-v on Azure
Nested Hyper-v on AzureNested Hyper-v on Azure
Nested Hyper-v on Azure
 
AnsibleによるHWプロビジョニング -OneViewの連携-
AnsibleによるHWプロビジョニング  -OneViewの連携-AnsibleによるHWプロビジョニング  -OneViewの連携-
AnsibleによるHWプロビジョニング -OneViewの連携-
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
 
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~
2021/09/25 JAZUG11周年記念LT大会 ~FSLogixのお話~
 
Azure Functions あれこれ
Azure Functions あれこれAzure Functions あれこれ
Azure Functions あれこれ
 
大規模ライブ配信の苦労ポイント
大規模ライブ配信の苦労ポイント大規模ライブ配信の苦労ポイント
大規模ライブ配信の苦労ポイント
 
Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要
 
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)
ハイブリッドクラウド研究会趣旨説明とこれまでの取り組み(2019/01/24)
 
Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)
 
Azure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュAzure DevOps で始めるスタートダッシュ
Azure DevOps で始めるスタートダッシュ
 
ワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキル
 
OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向OSS強化学習向けゲーム環境の動向
OSS強化学習向けゲーム環境の動向
 
Multi Cloud Design Pattern(Beta)
Multi Cloud Design Pattern(Beta)Multi Cloud Design Pattern(Beta)
Multi Cloud Design Pattern(Beta)
 
How to create your own Azure Pipeline's image
How to create your own Azure Pipeline's imageHow to create your own Azure Pipeline's image
How to create your own Azure Pipeline's image
 

Similaire à Google Cloud Platformでソーシャルゲームを1本出してみた!

Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12matsuo kenji
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由gree_tech
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learningRetrieva inc.
 
Jtf13 ossジョブ管理システムによる運用自動化事例
Jtf13 ossジョブ管理システムによる運用自動化事例 Jtf13 ossジョブ管理システムによる運用自動化事例
Jtf13 ossジョブ管理システムによる運用自動化事例 OSSラボ株式会社
 
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】DeNA
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていくRyo Mitoma
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニングKiyokazu Kaba
 
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12学 松崎
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト健一 辰濱
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策Salesforce Developers Japan
 
Tech lounge gcp_20190313
Tech lounge gcp_20190313Tech lounge gcp_20190313
Tech lounge gcp_20190313yutaka_baba
 
インフラエンジニアのお仕事 ~ daemontools から systemdに乗り換えた話 ~
インフラエンジニアのお仕事 ~ daemontools から systemdに乗り換えた話 ~インフラエンジニアのお仕事 ~ daemontools から systemdに乗り換えた話 ~
インフラエンジニアのお仕事 ~ daemontools から systemdに乗り換えた話 ~KLab Inc. / Tech
 
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスJsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスYoichi KIKUCHI
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechconDeNA
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックYusuke Ando
 

Similaire à Google Cloud Platformでソーシャルゲームを1本出してみた! (20)

Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由
 
Chainerで学ぶdeep learning
Chainerで学ぶdeep learningChainerで学ぶdeep learning
Chainerで学ぶdeep learning
 
130207 kyotorb
130207 kyotorb130207 kyotorb
130207 kyotorb
 
Jtf13 ossジョブ管理システムによる運用自動化事例
Jtf13 ossジョブ管理システムによる運用自動化事例 Jtf13 ossジョブ管理システムによる運用自動化事例
Jtf13 ossジョブ管理システムによる運用自動化事例
 
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
SHOWROOMとDeNAで取り組んだライブ配信基盤刷新・超低遅延ライブ配信の裏側【DeNA TechCon 2020 ライブ配信】
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
Spring Boot + Doma + AngularJSで作るERP #jjug_ccc #ccc_r12
 
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テストDevice Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
 
特盛!Heroku
特盛!Heroku特盛!Heroku
特盛!Heroku
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
 
Tech lounge gcp_20190313
Tech lounge gcp_20190313Tech lounge gcp_20190313
Tech lounge gcp_20190313
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
インフラエンジニアのお仕事 ~ daemontools から systemdに乗り換えた話 ~
インフラエンジニアのお仕事 ~ daemontools から systemdに乗り換えた話 ~インフラエンジニアのお仕事 ~ daemontools から systemdに乗り換えた話 ~
インフラエンジニアのお仕事 ~ daemontools から systemdに乗り換えた話 ~
 
Hadoop事始め
Hadoop事始めHadoop事始め
Hadoop事始め
 
Google Product
Google ProductGoogle Product
Google Product
 
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティスJsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
Jsug2015 summer spring適用におけるバッドノウハウとベタープラクティス
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 

Google Cloud Platformでソーシャルゲームを1本出してみた!