Slide 1

Slide 1 text

COLOPL, Inc. All Rights Reserved 1 リアルタイム通信基盤と
 Kubernetes
 杉浦 綜介

Slide 2

Slide 2 text

COLOPL, Inc. All Rights Reserved 2 ● 杉浦 綜介
 ● 株式会社コロプラ 2017年新卒入社
 ● インフラグループ
 ○ Kubernetes のゲームインフラ
 自己紹介


Slide 3

Slide 3 text

COLOPL, Inc. All Rights Reserved 3 ゲームにおけるリアルタイム通信


Slide 4

Slide 4 text

COLOPL, Inc. All Rights Reserved 4 ● プレイ中、クライアントが割当先のサーバに常時接続されている
 ● ステートフル
 ○ サーバの使用状況
 ● ライフサイクルが短い
 ○ データベースやキーバリューストアに比べ
 ● 急激な負荷
 ○ イベント開始時など
 ゲームのリアルタイム通信


Slide 5

Slide 5 text

COLOPL, Inc. All Rights Reserved 5 ● O などでメンテナンスされている
 ● オートスケール
 ● 接続サーバの IP/Port 管理の自動化
 コロプラでの要件


Slide 6

Slide 6 text

COLOPL, Inc. All Rights Reserved 6 Agones

Slide 7

Slide 7 text

COLOPL, Inc. All Rights Reserved 7 ● Kubernetes 上で、専用ゲームサーバを動かすプラットフォーム
 ● O 
 ● Kubernetes の標準リソース(Pod や Deployment など)に近いカスタムリソース 群
 ● リアルタイム通信で必要な最低限の機能
 ○ ゲームサーバの作成、オートスケール
 ○ マッチメイキングの仕組みは無い
 Agones


Slide 8

Slide 8 text

COLOPL, Inc. All Rights Reserved 8 ● Kubernetes
 ○ すでに Kubernetes を採用しており、Kubernetes 上で動作するのは都合が良 かった 
 ● O でメンテナンスされている
 ○ 内製ソフトウェアのメンテナンス負担の軽減
 ● 必要最小限の機能
 ○ オートスケールと IP/port の管理が必要条件だった
 ● シンプルなコンポーネント
 ○ 学習、導入コストが低い
 Agones 採用理由


Slide 9

Slide 9 text

COLOPL, Inc. All Rights Reserved 9 ● Game erver
 ○ Pod(に近い)
 ● Fleet
 ○ Deployment(に近い)
 ● Fleet Autoscaler
 ○ Horizontal Pod Autoscaler(に近い)
 ● Game erver Allocation
 ○ フロントエンドAPIを提供
 Agones 主要コンポーネント


Slide 10

Slide 10 text

COLOPL, Inc. All Rights Reserved 10 ● Game erver
 ○ クライアントが接続するサーバ
 ○ Pod(に近い)
 ○ ステートを持つ
 ■ Creating (立ち上げ中)
 ■ eady (準備完了)
 ■ Allocated (割当済み)
 ○ 1Gameserver = 1 oom
 ○ 使い終わったら、廃棄
 Agones コンポーネント


Slide 11

Slide 11 text

COLOPL, Inc. All Rights Reserved 11 ● Fleet
 ○ Deployment(に近い)
 ○ 複数の Game erver を管理
 ● Fleet Autoscaler
 ○ Horizontal Pod Autoscale(に近い)
 ○ eady な Game erver を一定数に保つように調整
 ■ ype: Bufferの時
 Agones コンポーネント 
 Ready が不足しているので、 gameserverを増やす

Slide 12

Slide 12 text

COLOPL, Inc. All Rights Reserved 12 ● Game erverAllocation
 ○ API Aggregation で機能実装されている
 ○ Game erver を割り当てるリソース
 ○ このAPIを使い、Allocator を実装することが多い
 Agones コンポーネント


Slide 13

Slide 13 text

COLOPL, Inc. All Rights Reserved 13 ● 1Gameserver(Pod) = 1 oom の制限
 ○ 物理演算を利用しない軽量なリアルタイム通信がほとんど
 ○ Gameserver(Pod) の数が多くなる
 ● Node あたりの Pod の上限がある
 ○ CID 範囲 によって上限が変わる (/24 で 110 pod)
 ● 小さい Node を複数
 ○ Daemonset により Gameserver に割り当てられる領域の減少
 カスタム Allocator 


Slide 14

Slide 14 text

COLOPL, Inc. All Rights Reserved 14 ● コロプラで Allocator を独自実装
 ● 1Gameserver に複数の oom を割り当て ● Allocator が Gameserver を確保して、使い回す
 ○ oom 割当設定数になるまで、同じ接続先を利用する 
 カスタム Allocator


Slide 15

Slide 15 text

COLOPL, Inc. All Rights Reserved 15 ● Buffer機能
 ○ 事前に準備された Gameserver があるため、突然の負荷にも耐えられる
 ● オートスケール機能
 ○ Gameserver の Buffer が減っても、一定数に保つ機能があるため、細かい台数調 整が不要
 ● 機能拡張が容易
 ○ 拡張性が高く、不足している機能の追加が可能
 ここが良かったよ Agones


Slide 16

Slide 16 text

COLOPL, Inc. All Rights Reserved 16 ● マルチクラスター構成が可能
 ○ 複数クラスターの Allocator の前段に Load Balancer を置く
 ■ Load Balancer は自前で用意する
 ここが良かったよ Agones


Slide 17

Slide 17 text

COLOPL, Inc. All Rights Reserved 17 ● ルームが解散しない限り、Gameserver が残り続ける
 ○ 複数ルームが前提のリソース割当に無駄が生じる
 ○ Allocator の台数を減らした時に確保していた Gameserver が無駄になる
 ● Fleet Autoscaler によるスケールが間に合わない
 ○ プレイヤーの流入速度が早いと、 Buffer が枯渇する可能性がある
 ○ Node が枯渇すると、 Node が増えるまで時間がかかる
 ○ Buffer のアクセス数の急上昇と平常時のアクセス数の兼ね合い
 ○ (対策) リトライや複数クラスター構成
 課題


Slide 18

Slide 18 text

COLOPL, Inc. All Rights Reserved 18 ● コロプラはリアルタイム通信基盤に Agones を採用
 ○ 最低限ながらも必要な機能
 ○ シンプルなコンポーネント
 ● Agones のカスタマイズ
 ○ 1Gameserver に複数 oom 割当機能を実装
 ● Buffer やオートスケールは便利
 ○ Gameserver の台数を手動で操作しなくなり、オペレーションが減った
 ● 課題もある
 ○ Gameserver が残る問題、 Buffer の台数調整
 まとめ