コロプラゲームバックエンド 共通基盤 運用・開発体制の紹介 松野岳記
View Slide
2● 略歴○ SIerで出張生活○ Web系○ 2018 コロプラ入社■ 白猫プロジェクトSREチーム■ ドラゴンクエストウォーク SREチーム■ サーバー基盤マネジャー兼SRE氏名 :部署名 :松野 岳記技術基盤本部 第3バックエンドエンジニア部サーバー基盤グループ自己紹介
目次1. コロプラバックエンド組織体制の紹介2. 社内共通基盤ライブラリ開発活動の紹介3
コロプラバックエンド組織体制の紹介 4
5バックエンド組織の構成ゲームサーバー開発チームゲームサーバー開発チームインフラグループ ::ゲームサーバー開発チーム共通基盤組織 ゲームタイトルサーバー基盤グループ※枠の大きさは実際の組織と関係ありません🙇
6ゲームの共通基盤組織の役割?● ゲームってユニークでありたいものなのでは?● コロプラのVision → "新しい体験" を届ける● 共通基盤組織のやるべきことは???
7ゲームの共通基盤組織の役割● ゲームってユニークでありたいものなのでは?● コロプラのVision → "新しい体験" を届ける● ゲームタイトルは常に新しい体験に挑戦● 共通基盤はゲーム開発の土台○ 性能面や運用ナレッジの会社としての蓄積■ 成功の再現性■ 技術の開拓
8サーバー基盤グループの構成ゲームサーバー開発チームゲームサーバー開発チームインフラグループ ::ゲームサーバー開発チーム共通基盤組織 ゲームタイトルサーバー基盤グループ※枠の大きさは実際の組織と関係ありません🙇
9サーバー基盤グループの構成ゲームサーバー開発チームゲームサーバー開発チームインフラグループ ::ゲームサーバー開発チーム共通基盤組織 ゲームタイトル※枠の大きさは実際の組織と関係ありません🙇LCEチームSREチームPEチームRTPEチーム【運用サイド】普通にはなかなか経験できない運用ケースの知識● LCE (Launch Coordination Engineer)○ ローンチ関連の性能とプロセスの品質● SRE (Site Reliability Engineer)○ 長期運用の性能とプロセスの品質
10サーバー基盤グループの構成ゲームサーバー開発チームゲームサーバー開発チームインフラグループ ::ゲームサーバー開発チーム共通基盤組織 ゲームタイトル※枠の大きさは実際の組織と関係ありません🙇LCEチームSREチームPEチームRTPEチーム【開発サイド】● PE (Platform Engineer)○ APIサーバーを中心とした開発技術のリード● RTPE (Real-Time Platform Engineer)○ リアルタイムサーバーを中心とした開発技術のリード
11開発組織体制のイメージPE・RTPE LCE・SRE ゲームエンジニア 社内基盤ライブラリ ゲームサーバー クラウド・オープン技術
社内共通基盤ライブラリ開発活動の紹介 12
13PEチーム● Platform Engineer チーム○ 主にコロプラAPIサーバー開発の土台を支えています● 主な活動領域○ Google Cloudやミドルウェアの新機能の検証と追従○ サーバーコンテナのエンハンス・チューニング○ サーバーフレームワークのエンハンス○ サーバー開発用CIなどの環境整備
14PEチーム● Platform Engineer チーム○ 主にコロプラAPIサーバー開発の土台を支えています● 主な活動領域○ Google Cloudやミドルウェアの新機能の検証と追従○ サーバーコンテナのエンハンス・チューニング○ サーバーフレームワークのエンハンス○ サーバー開発用CIなどの環境整備今回はここの紹介をします
15APIサーバーの社内基盤ライブラリ● 開発言語 / フレームワーク○ PHP / Laravel● ライブラリ (一部)○ laravel-extension○ laravel-skeleton○ laravel-spanner
16laravel-extension● 役割○ ゲームサーバーとして低レイヤーを効果的に利用するための拡張● 性質○ 低レイヤーを効果的に使うプラクティスの実装■ 外部コンポーネント利用時のハンドリング■ データアクセスコードの自動生成■ etc.○ ベース技術へのアンテナが必要
17laravel-skeleton● 役割○ どのゲームでも必要になる機能のテンプレート実装● 性質○ 共通機能の実装■ ユーザー認証■ 課金処理■ 運用サポートツール画面○ ゲームタイトル運用の共通ナレッジの蓄積
18laravel-spanner● 役割○ Google 公式の PHP 用 Cloud Spanner SDK をLaravel の DB Manger フレームワークとして利用するアダプタ● 性質○ Google の Cloud Spanner 利用のガイダンスを吸収してLaravel のモデルで取り扱えるように提供○ Cloud Spanner と SDK の更新に追従○ OSSとして公開運用■ https://github.com/colopl/laravel-spanner
19PE とゲームエンジニアとのコミュニケーション● コア開発チームがあることの懸念○ 本番ユースケースを知らずに技術の押し付けになりたくない○ 技術に触れる機会の不平等■ ゲームタイトル側アサインでもベース技術と関わりたい (関わって欲しい)○ 物量■ やること多い● 社内オープン開発○ 共通 Git でゲームエンジニアからも Issue や Merge Request を常時受付○ PE 側で発行した Issue に対しても実装希望者を受付
20PE の OSS 活動● コロプラ一部ライブラリのOSS公開○ 前述の colopl/laravel-spanner など● 利用しているOSSへのフィードバックや提案○ PHP, Laravel, Google Cloud の SDK を中心になんでも○ RFC 提案やバグ修正などのコントリビュート○ 次バージョンの RFC や PR へのコメント○ +1 凸 リード
21開発フィードバックサイクルのイメージPE・RTPE LCE・SRE ゲームエンジニア 社内基盤ライブラリ クラウド・オープン技術 ゲームサーバー laravel-skeletonlaravel-extensionlaravel-spanner ベース提供 ゲーム実装 ユースケース Issue報告 修正MR 研究・検証 コード公開 提案・修正 ベストプラクティス実装
22ここまでのまとめ● コロプラバックエンドの基盤開発をメインタスクにしているPE というエンジニアがいます● PE はベース技術に対して他に先んじてアンテナを張りAPIサーバーの課題解決に取り組んでいます● PE を中心にベース技術やゲームタイトルから得られたナレッジを共通基盤ライブラリとして会社の資産にしています● コロプラではゲームタイトルのエンジニアでも共通基盤ライブラリ開発が開かれています● RTPEの紹介もいつかできれば
Thank you 23