SlideShare a Scribd company logo
KubernetesとSpannerで
進化し続けるコロプラのゲーム開発
邵 正
奥村 開里
コロプラ インフラグループ
2
About me
● 奥村開里(おくむら かいり)
● 2016年に新卒として株式会社コロプラに入社
● インフラチームメンバーとして三年目
● GCPへのノーメンテナンスマイグレーション、新作の負荷対策、
アーキテクチャの刷新等を担当
● 現在GKE周りやマイクロサービス化等をしています。
3
About me
01 Problem
02 Backend
03 Frontend
Today’s Agenda
KubernetesとSpannerで
進化し続けるコロプラのゲーム開発
4
04 No SPOF
05 Deploy
5
01 Problem
02 Backend
03 Frontend
Today’s Agenda
KubernetesとSpannerで
進化し続けるコロプラのゲーム開発
04 No SPOF
05 Deploy
以前までのコロプラ
6
● 昔のタイトルから最近のタイトルまで同一構成で
種々のゲームサービスを長期間運用
● マネージドサービスはほぼ使用せず運用
7
以前のGCEを使った構成
8
以前のGCEを使った構成
9
● この構成でも行っていたインフラの取り組み
○ いつでもプレイ可能にする
○ 障害時間の減少
○ スムースなLiveOpsの達成
コロプラの取り組み
LiveOps
10
What’s 『 LiveOps 』
● ARPUを高く保ちつづける為の取り組み
○ イベントを打ち続ける
○ コミュニティからの反響に答える
○ …etc
LiveOps
11
スムースなLiveOpsの為に…
● ビジネスロジックへの集中
● 余計な手間の削減
● 種々コストの保持&低減
12
● Backend (DB)
○ データベースサーバーの切り替えコストの増大
● Frontend (APP, PVP)
○ アプリケーションサーバーのキャパシティ
プランニングが人力で厳しい
● No SPOF
○ システム各所に自動復旧しないコンポーネントが
存在すること
取り組む際の課題
13
01 Problem
02 Backend
03 Frontend
Today’s Agenda
KubernetesとSpannerで
進化し続けるコロプラのゲーム開発
04 No SPOF
05 Deploy
14
バックエンドサーバーの
切り替えコストの増大
15
● リリース時やイベント時には…
○ 多数のサーバー,スペックの高いサーバーを用意
○ 安定期に入った後に使用するサーバーの台数,
スペック等を調整
サービスをプレイできる環境を保証するために
16
● フロントエンド
○ ステートレスなので,切り替えは手間ではない
● バックエンド
○ データを保存しているので,切り替えが手間
○ このバックエンドのスペック調整の手間がネック
切り替えの手間
17
運用していたが…
18
● 開発とインフラ双方のオペレーションが必要
○ インフラはテーブルの使い方等は把握していない
○ 開発にデータの使い方を確認しなければならない
● サーバーコストの大きさ
○ データが大きくなると構築にも時間がかかる
○ 併存期間が長くなる
切り替えにかかる種々のコスト
19
● 大量のバックエンドを用意するのは手間
○ 単純作業でも馬鹿にならない人的コスト
○ 頻繁な切り替え作業は大変…
切り替えにかかる種々のコスト
20
● 結果として
○ キャパシティプランニングがおざなりに
○ 多くの人を巻き込む必要
■ LiveOpsの弊害
人的コストが高いと
21
Cloud
Spanner
22
● Googleの提供する分散RDB
● RDBなのでSQL使用可能
● 容易にスケールアウト、スケールイン
● ダウンタイムなし
○ 我々の取り組みにも非常にマッチ
Cloud Spannerとは
23
早速採用
24
25
● Cloud Spannerの利点
○ メンテナンスウィンドウなし
○ スケールアウト,スケールインがとても容易
○ スキーマもオンラインで容易に変更可能
■ 弊社の方針にマッチ
インフラから
26
● DevからみたCloud Spannerの利点
○ DBの分割いらない
○ MasterとSlaveの意識もいらない
○ 純粋にゲームロジックに集中できる
■ スムースなLiveOpsの一助
Devから
27
● サーバーコスト
○ 費用対効果はとても高い
○ GCEのインスタンスで運用していた環境と比べて
半額程度に抑えることができた
Cost
28
01 Problem
02 Backend
03 Frontend
Today’s Agenda
KubernetesとSpannerで
進化し続けるコロプラのゲーム開発
04 No SPOF
05 Deploy
29
フロントエンドサーバーの
キャパシティプランニングが
人力では厳しい
30
● イベント,日時等の理由で大きく変動
● 適正なキャパシティに保つのは人力では不可能
● タイトルの増加に伴い時間が取られる
● インフラと開発のリクエスト予想数の認識の差異
ゲームリクエスト
31
オートスケールが
必要そうだが…
32
何故今まで導入
していなかったのか
33
● 数分間の間にリクエストが数倍になるケースも存在
○ マニュアルスケールとオートスケールの両立が
ゲームにおいては必要不可欠
スパイクとオートスケール
34
● スムースなLiveOpsの実現の為には頻繁なデプロイを伴う
○ デプロイ中にスケールすると差分が出る
○ デプロイ中のスケーリングの発動を止める
■ 冪等性の担保が難しい
デプロイとオートスケール
35
● 頻繁なデプロイが可能
● マニュアルスケールとオートスケールの両立
● 煩雑な制御は無いまま
オートスケールへの要件
36
GKE
37
38
● GKE環境では どのようにオートスケールさせるのか
○ オートスケールとマニュアルスケールの両立
○ 冪等性の担保はどのように行われるのか
GKEのオートスケール
39
リクエストが増加
CPU使用率が上昇
GKEのオートスケール
40
サービスインしている
コンテナを追加
GKEのオートスケール
41
コンテナを立てる為に
自動的にインスタンス
が増加
GKEのオートスケール
42
増加したインスタンスに
コンテナを配置
GKEのオートスケール
43
● 現在稼働中のコンテナイメージで起動することを保証
● マニュアルのスケールも最小のコンテナの数を
設定することで実現可能
GKEのオートスケール
44
PVPは?
45
46
● PVP内部をマイクロサービス化し,
コンテナとして扱いやすいアーキテクチャに
● プロセス自身に終了前に自身のコネクションが
無くなるまで待機する機構
○ APPと同様にオートスケール
○ デプロイもAPPと同様の感覚
GKEによるPVPのオートスケール
47
01 Problem
02 Backend
03 Frontend
Today’s Agenda
KubernetesとSpannerで
進化し続けるコロプラのゲーム開発
04 No SPOF
05 Deploy
48
自動復旧しない
コンポーネントの存在
49
50
51
GKE管理下のものには
自分で見て自分で
復旧してもらう
52
● ノード単位での退避から
プロセス単位での自動復旧
● Kubernetes管理下にすれば
ロードバランサー配下に無くとも
監視可能
● フォールバックの仕組みと
組み合わせることによって
エラーを抑えて自動復旧が可能
Kubernetesの自己監視
53
Cloud Spannerは
そもそもHA
54
● Cloud Spannerは計算ノードを
3台以上にすることでHA構成になる
● インスタンスの物理故障の恐怖から開放
Cloud SpannerのHA構成
55
● 監視項目とアラートの見直しを再度行い,
アラートを最小限に抑制
● 人力より確実に早く復旧
耐障害性の向上
56
まとめ
57
● フロントエンド
○ GKEにより自動復旧するように
○ オートスケール
● バックエンド
○ Cloud SpannerによりHA化
○ スケールの手間ほぼ0
まとめ
58
● サービス全体として
○ 外側からの挙動を監視するアラートで十分になった
○ スムースなLiveOpsを実現
まとめ
59
GKEを導入することによって新
たな問題が…
60
01 Problem
02 Backend
03 Frontend
Today’s Agenda
KubernetesとSpannerで
進化し続けるコロプラのゲーム開発
04 No SPOF
05 Deploy
61
About me
● 邵 正(しょう せい)
● 2015年に新卒として株式会社コロプラに入社
● クライアントとサーバーサイドエンジニアを担当,
その後インフラチームに参画
● セキュリティ,パフォーマンスチューニング,
ストレステスト,新技術導入を担当
62
About me
63
Kubernetes上でのDeploy
● RsyncによるDeploy
○ sshdがない
○ autoscaleによる
台数増減
64
GCPでの本番Deploy
65
kubernetes上でのDeployための要件
● ApplicationのソースコードDeploy
○ 我々のニーズ
■ Canary Deploy,時限式Deployなど
■ Autoscaleの対応
■ Deploy進捗の把握
What is Spinnaker
● Netflixが開発したマルチクラウド対応のCDツール
● GKE対応
● 目玉機能
○ Pipeline
○ Versioning
67
kubernetes上でのDeployための要件
● ApplicationのソースコードDeploy
○ 我々のニーズ
■ Canary Deploy,時限式Deployなど
■ Autoscaleの対応
■ Deploy進捗の把握
68
Pipeline
69
本番Deploy
70
本番Deploy
71
本番Deploy
72
本番Deploy
73
Kubernetes上でのDeployための要件
● ApplicationのソースコードDeploy
○ 我々のニーズ
■ Canary Deploy,時限式Deployなど
■ Autoscaleの対応
■ Deploy進捗の把握
74
可視化
75
可視化
76
可視化
77
可視化
78
可視化
79
Pipelineはこれだけじゃない
インフラのDeployも可能に
● ApplicationのDeployだけではなく,
インフラのリソースもSpinnaker経由でDeploy
○ インフラを含めたCI/CDが可能になった
CI/CDのflow
CI/CDのflow
CI/CDのflow
CI/CDのflow
85
Versioning
86
● K8sではPodとConfigMapがそ
れぞれのリソースとして管理し
ている
● バージョン管理の機能は
付いてない
Versioning
87
Kubernetes上でのDeploy
Git
Commit a Commit a
88
Kubernetes上でのDeploy
Git
Commit b
Commit a
Commit b
旧
新
Commit b
Commit a
89
Kubernetes上でのDeploy
● インフラのDeployに新たな要件
○ k8sでの設定ファイルのバージョン管理
■ git管理されている設定ファイル
■ 動作中ミドルウェアの設定ファイル
90
● バージョン管理が可能
○ Rollbackが簡単
○ サービスインのAppに
影響しない
V1
V1
V2
V2
V2
Versioning
91
Spinnakerの課題と対策
● Versioningしたくないリソースがあった
○ strategy.spinnaker.io/versioned: false
● Podが多いときにDeployがタイムアウト
○ 高負荷のマイクロサービスを専用ノードに移動
● Pipelineのエラー調査が難しい
○ マイクロサービスごとに調査・確認をする
92
まとめ
● Spinnakerによって
○ Pipelineを使ってのコロプラの要件の達成
○ 動作中ミドルウェアの設定ファイルの
バージョン管理
○ CI/CDとの連携強化
93
● GKE, Spanner, Spinnakerを用いて
○ サービス全体の耐障害性向上
○ キャパシティプランニングの手間ほぼ無し
○ デプロイへの種々要件の達成
まとめ
94
スムースな
LiveOps
Thank you!

More Related Content

PDF
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
PPTX
FiNC DDD第一回勉強会
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PDF
KubernetesでRedisを使うときの選択肢
PDF
Dockerからcontainerdへの移行
PPTX
RLSを用いたマルチテナント実装 for Django
PPTX
コンテナネットワーキング(CNI)最前線
PPTX
はじめてのElasticsearchクラスタ
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
FiNC DDD第一回勉強会
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
KubernetesでRedisを使うときの選択肢
Dockerからcontainerdへの移行
RLSを用いたマルチテナント実装 for Django
コンテナネットワーキング(CNI)最前線
はじめてのElasticsearchクラスタ

What's hot (20)

PPTX
Redisの特徴と活用方法について
PDF
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
イミュータブルデータモデル(入門編)
PDF
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
PDF
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
PPTX
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
PDF
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
PDF
いまさら聞けないarmを使ったNEONの基礎と活用事例
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
PDF
ドメイン駆動設計のための Spring の上手な使い方
PDF
Protocol Buffers 入門
PDF
Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~
PPTX
マイクロサービスにおける 結果整合性との戦い
PDF
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
PDF
containerdの概要と最近の機能
Redisの特徴と活用方法について
Kubernetes Meetup Tokyo #35_GitOps Toolkit による Kubernetes マニフェスト CD
分散トレーシング技術について(Open tracingやjaeger)
イミュータブルデータモデル(入門編)
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
コンテナとimmutableとわたし。あとセキュリティ。(Kubernetes Novice Tokyo #15 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
ネットワーク ゲームにおけるTCPとUDPの使い分け
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
新入社員のための大規模ゲーム開発入門 サーバサイド編
ドメイン駆動設計のための Spring の上手な使い方
Protocol Buffers 入門
Docker管理もHinemosで! ~監視・ジョブ機能を併せ持つ唯一のOSS「Hinemos」のご紹介~
マイクロサービスにおける 結果整合性との戦い
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
containerdの概要と最近の機能
Ad

More from Google Cloud Platform - Japan (20)

PDF
ServerlessDays Tokyo 2022 Virtual.pdf
PDF
20221105_GCPUG 女子会 Kubernets 編.pdf
PDF
Google Cloud でアプリケーションを動かす.pdf
PDF
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
PDF
What’s new in cloud run 2021 後期
PDF
【Dialogflow cx】はじめてみよう google cloud dialogflow cx 編
PDF
Google Cloud で実践する SRE
PDF
[Cloud OnAir] 事例紹介 : 株式会社マーケティングアプリケーションズ 〜クラウドへのマイグレーションとその後〜 2020年12月17日 放送
PDF
[Cloud OnAir] 【実演】Google Cloud VMware Engine と VMware ソリューションを組み合わせたハイブリッド環境の...
PDF
[Cloud OnAir] Google Workspace でできる データ分析と業務自動化のご紹介 2020年12月3日 放送
PDF
[Cloud OnAir] Google Cloud へのマイグレーション ツールの紹介 2020年11月26日 放送
PDF
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
PDF
[Cloud OnAir] 事例紹介: 株式会社オープンハウス 〜Google サービスを活用したオープンハウスの AI の取り組み〜 2020年11月1...
PDF
[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送
PDF
[Cloud OnAir] 【Google Kubernetes Engine 演習】解説を聞きながら GKE を体験しよう 2020年10月29日 放送
PDF
[Cloud OnAir] Google Cloud の AI / IoT 最新事例紹介 2020年10月22日 放送
PDF
[Cloud OnAir] Google Cloud Next '20: OnAir 特別編 〜世界で人気のあったセッション特集〜 2020年9月24日 放送
PDF
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
PDF
明日から役立つ BigQuery ML 活用 5 つのヒント | Google Cloud INSIDE Games & Apps: Online
PDF
今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online
ServerlessDays Tokyo 2022 Virtual.pdf
20221105_GCPUG 女子会 Kubernets 編.pdf
Google Cloud でアプリケーションを動かす.pdf
[External] 2021.12.15 コンテナ移行の前に知っておきたいこと @ gcpug 湘南
What’s new in cloud run 2021 後期
【Dialogflow cx】はじめてみよう google cloud dialogflow cx 編
Google Cloud で実践する SRE
[Cloud OnAir] 事例紹介 : 株式会社マーケティングアプリケーションズ 〜クラウドへのマイグレーションとその後〜 2020年12月17日 放送
[Cloud OnAir] 【実演】Google Cloud VMware Engine と VMware ソリューションを組み合わせたハイブリッド環境の...
[Cloud OnAir] Google Workspace でできる データ分析と業務自動化のご紹介 2020年12月3日 放送
[Cloud OnAir] Google Cloud へのマイグレーション ツールの紹介 2020年11月26日 放送
[Cloud OnAir] Google Cloud における RDBMS の運用パターン 2020年11月19日 放送
[Cloud OnAir] 事例紹介: 株式会社オープンハウス 〜Google サービスを活用したオープンハウスの AI の取り組み〜 2020年11月1...
[Cloud OnAir] 【Anthos 演習】 解説を聞きながら Anthos を体験しよう 2020年11月5日 放送
[Cloud OnAir] 【Google Kubernetes Engine 演習】解説を聞きながら GKE を体験しよう 2020年10月29日 放送
[Cloud OnAir] Google Cloud の AI / IoT 最新事例紹介 2020年10月22日 放送
[Cloud OnAir] Google Cloud Next '20: OnAir 特別編 〜世界で人気のあったセッション特集〜 2020年9月24日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
明日から役立つ BigQuery ML 活用 5 つのヒント | Google Cloud INSIDE Games & Apps: Online
今だから知りたい BigQuery 再入門 | Google Cloud INSIDE Games & Apps: Online
Ad

KubernetesとSpannerで 進化し続けるコロプラのゲーム開発