これらの課題を解決するためのMBaaS = LCX
• これらの課題を解決し、ゲームの迅速な開発とパブリッシングを実現するための
Mobile Backend as a Service = LCX
• ゲーム側は詳細の実装不要、必要に応じてLCXのAPIを呼び出すだけで各種機能を実現
ゲーム開発者の実装範囲 LCX
LCX on Multi Cloud Platform
• ⾔語はJava
• 中国、⽇本ともに馴染みがある
• 1つのコードをMulti Cloud上で動かす
• GCP: GAE/Java11
• Alibaba Cloud: マネージドKubernetes
• GAE/Java11(2nd-gen)はApp Engine API⾮依存
• そのため、GAE/Java11の上で動作するアプリはほとん
どそのまま他のプラットフォームでも動く!
中国中国以外
Some icons in this page are from http://icons8.com/
LCX on Multi Cloud Platform
• ただし、各クラウド固有のサービスを利⽤する部分に
ついては実装が完全に分かれることになる
• GCPを使う限りGoogle Cloud APIには依存するこ
とになるし、Alibaba側も固有のAPIを利⽤
• データベースは互いに性質が⼤きく異なるものを採⽤
• GCP: Datastore (NoSQL)
• Alibaba Cloud: DRDS (RDBMS)
• どのようにして異なるクラウド上で共通の動作を担保
するか?
GCP Alibaba
DB
Cloud
Datastore
Alibaba
DRDS
Async
Task
Cloud
Pub/Sub
Message
Service
Big
Data
BigQuery
On-prem
Cluster
Logging
Stackdriver
Logging
Alibaba
Log Service
利⽤サービスの違い
• Clean Architectureの考え⽅を適⽤
• ソースコードの⼤半は共通利⽤しつつ、クラウド
依存の部分のみ個別に実装
• Adapter Pattern, Repository Pattern
• interfaceは共通で、実装は2つ存在
• GCP⽤、Alibaba Cloud⽤
• Common modulesから⾒た際のインターフェー
スは共通なので、クラウドの違いによる処理の分
岐は現れない
LCX on Multi Cloud Platform
userRepository.save(user);
LCX on Multi Cloud Platform
GCPで動作させる場合
Alibaba Cloudで動作させる場合
LCX on Multi Cloud Platform
• Clean Architectureの考え⽅を活かして、GCPとAlibaba Cloudの両⽅への対応を実現
• 共有コード内にはクラウド依存の⽂脈のコードが現れない
• 必要な部分のみ異なる実装で動く
• GAE/Java11のApp Engine API⾮依存の特性もマルチクラウド対応の助けに
• 今のところ⼤きな問題は発⽣していないが、まだまだ開発段階のため今後も注視が必要