Slide 1

Slide 1 text

コロプラゲームバックエンド
 共通基盤 運用・開発体制の紹介
 松野岳記

Slide 2

Slide 2 text

2 ● 略歴 ○ SIerで出張生活 ○ Web系 ○ 2018 コロプラ入社 ■ 白猫プロジェクトSREチーム ■ ドラゴンクエストウォーク SREチーム ■ サーバー基盤マネジャー兼SRE 氏名  : 部署名 : 松野 岳記 技術基盤本部 第3バックエンドエンジニア部 サーバー基盤グループ 自己紹介

Slide 3

Slide 3 text

目次 1. コロプラバックエンド組織体制の紹介 2. 社内共通基盤ライブラリ開発活動の紹介 3

Slide 4

Slide 4 text

コロプラバックエンド組織体制の紹介
 4

Slide 5

Slide 5 text

5 バックエンド組織の構成 ゲームサーバー開発チーム ゲームサーバー開発チーム インフラグループ : : ゲームサーバー開発チーム 共通基盤組織 ゲームタイトル サーバー基盤グループ ※枠の大きさは実際の組織と関係ありません🙇

Slide 6

Slide 6 text

6 ゲームの共通基盤組織の役割? ● ゲームってユニークでありたいものなのでは? ● コロプラのVision → "新しい体験" を届ける ● 共通基盤組織のやるべきことは? ??

Slide 7

Slide 7 text

7 ゲームの共通基盤組織の役割 ● ゲームってユニークでありたいものなのでは? ● コロプラのVision → "新しい体験" を届ける ● ゲームタイトルは常に新しい体験に挑戦 ● 共通基盤はゲーム開発の土台 ○ 性能面や運用ナレッジの会社としての蓄積 ■ 成功の再現性 ■ 技術の開拓

Slide 8

Slide 8 text

8 サーバー基盤グループの構成 ゲームサーバー開発チーム ゲームサーバー開発チーム インフラグループ : : ゲームサーバー開発チーム 共通基盤組織 ゲームタイトル サーバー基盤グループ ※枠の大きさは実際の組織と関係ありません🙇

Slide 9

Slide 9 text

9 サーバー基盤グループの構成 ゲームサーバー開発チーム ゲームサーバー開発チーム インフラグループ : : ゲームサーバー開発チーム 共通基盤組織 ゲームタイトル ※枠の大きさは実際の組織と関係ありません🙇 LCEチーム SREチーム PEチーム RTPEチーム 【運用サイド】 普通にはなかなか経験できない運用ケースの知識 ● LCE (Launch Coordination Engineer) ○ ローンチ関連の性能とプロセスの品質 ● SRE (Site Reliability Engineer) ○ 長期運用の性能とプロセスの品質

Slide 10

Slide 10 text

10 サーバー基盤グループの構成 ゲームサーバー開発チーム ゲームサーバー開発チーム インフラグループ : : ゲームサーバー開発チーム 共通基盤組織 ゲームタイトル ※枠の大きさは実際の組織と関係ありません🙇 LCEチーム SREチーム PEチーム RTPEチーム 【開発サイド】 ● PE (Platform Engineer) ○ APIサーバーを中心とした開発技術のリード ● RTPE (Real-Time Platform Engineer) ○ リアルタイムサーバーを中心とした開発技術のリード

Slide 11

Slide 11 text

11 開発組織体制のイメージ PE・RTPE
 LCE・SRE
 ゲームエンジニア
 社内基盤ライブラリ
 ゲームサーバー
 クラウド・オープン技術 


Slide 12

Slide 12 text

社内共通基盤ライブラリ開発活動の紹介
 12

Slide 13

Slide 13 text

13 PEチーム ● Platform Engineer チーム ○ 主にコロプラAPIサーバー開発の土台を支えています ● 主な活動領域 ○ Google Cloudやミドルウェアの新機能の検証と追従 ○ サーバーコンテナのエンハンス・チューニング ○ サーバーフレームワークのエンハンス ○ サーバー開発用CIなどの環境整備

Slide 14

Slide 14 text

14 PEチーム ● Platform Engineer チーム ○ 主にコロプラAPIサーバー開発の土台を支えています ● 主な活動領域 ○ Google Cloudやミドルウェアの新機能の検証と追従 ○ サーバーコンテナのエンハンス・チューニング ○ サーバーフレームワークのエンハンス ○ サーバー開発用CIなどの環境整備 今回はここの紹介をします

Slide 15

Slide 15 text

15 APIサーバーの社内基盤ライブラリ ● 開発言語 / フレームワーク ○ PHP / Laravel ● ライブラリ (一部) ○ laravel-extension ○ laravel-skeleton ○ laravel-spanner

Slide 16

Slide 16 text

16 laravel-extension ● 役割 ○ ゲームサーバーとして低レイヤーを効果的に利用するための拡張 ● 性質 ○ 低レイヤーを効果的に使うプラクティスの実装 ■ 外部コンポーネント利用時のハンドリング ■ データアクセスコードの自動生成 ■ etc. ○ ベース技術へのアンテナが必要

Slide 17

Slide 17 text

17 laravel-skeleton ● 役割 ○ どのゲームでも必要になる機能のテンプレート実装 ● 性質 ○ 共通機能の実装 ■ ユーザー認証 ■ 課金処理 ■ 運用サポートツール画面 ○ ゲームタイトル運用の共通ナレッジの蓄積

Slide 18

Slide 18 text

18 laravel-spanner ● 役割 ○ Google 公式の PHP 用 Cloud Spanner SDK を Laravel の DB Manger フレームワークとして利用するアダプタ ● 性質 ○ Google の Cloud Spanner 利用のガイダンスを吸収して Laravel のモデルで取り扱えるように提供 ○ Cloud Spanner と SDK の更新に追従 ○ OSSとして公開運用 ■ https://github.com/colopl/laravel-spanner

Slide 19

Slide 19 text

19 PE とゲームエンジニアとのコミュニケーション ● コア開発チームがあることの懸念 ○ 本番ユースケースを知らずに技術の押し付けになりたくない ○ 技術に触れる機会の不平等 ■ ゲームタイトル側アサインでもベース技術と関わりたい (関わって欲しい) ○ 物量 ■ やること多い ● 社内オープン開発 ○ 共通 Git でゲームエンジニアからも Issue や Merge Request を常時受付 ○ PE 側で発行した Issue に対しても実装希望者を受付

Slide 20

Slide 20 text

20 PE の OSS 活動 ● コロプラ一部ライブラリのOSS公開 ○ 前述の colopl/laravel-spanner など ● 利用しているOSSへのフィードバックや提案 ○ PHP, Laravel, Google Cloud の SDK を中心になんでも ○ RFC 提案やバグ修正などのコントリビュート ○ 次バージョンの RFC や PR へのコメント ○ +1 凸 リード

Slide 21

Slide 21 text

21 開発フィードバックサイクルのイメージ PE・RTPE
 LCE・SRE
 ゲームエンジニア
 社内基盤ライブラリ
 クラウド・オープン技術 
 ゲームサーバー
 laravel-skeleton laravel-extension laravel-spanner ベース提供
 ゲーム実装
 ユースケース
 Issue報告
 修正MR
 研究・検証
 コード公開
 提案・修正
 ベストプラクティス実装


Slide 22

Slide 22 text

22 ここまでのまとめ ● コロプラバックエンドの基盤開発をメインタスクにしている PE というエンジニアがいます ● PE はベース技術に対して他に先んじてアンテナを張り APIサーバーの課題解決に取り組んでいます ● PE を中心にベース技術やゲームタイトルから得られたナレッジを 共通基盤ライブラリとして会社の資産にしています ● コロプラではゲームタイトルのエンジニアでも 共通基盤ライブラリ開発が開かれています ● RTPEの紹介もいつかできれば

Slide 23

Slide 23 text

Thank you
 23