KLab株式会社のインフラアーキテクチャ
アーキテクチャの工夫ポイント
KLabにはオンプレミス環境のDSASとクラウド上のKLAWSという基盤システムがありますが、現行システムの運用性を維持したまま、新しい技術を導入することは難しくなっていました。そこで、新しいAPI基盤としてコンテナ技術を活かしたクラウドネイティブなシステムを構築しました。
新しいAPI基盤ではオーケストレータにEKS(Kubernetes)を利用しています。サーバーアプリケーションのデプロイ・コントローラーにJenkinsとArgo CDを使ってGitops運用を実現しています。Kubernetesには多くの優れたツールが存在するため、独自の作り込みをすることなく構築できたのはたいへんありがたかったです。
APIサーバーはFlask+Pythonで実装しています。クライアント側のゲームエンジンはUnityを採用し、C#で実装しています。特徴的な点として、クライアントサーバ間のAPI送受信および双方のモデルクラスをバックエンド開発者がC#/Pythonで実装しています。これにより、通信処理の最適化による品質の向上と、クライアント開発者とバックエンド開発者のコミュニケーションコストの削減による開発効率の向上を図っています。
また、APIサーバーとは別に、オンライン対戦のゲームロジックをサーバーサイドで.NET環境下で動作させています。クライアントと共通のC#で実装されているため、開発効率の向上と一貫性のあるゲーム挙動が実現されています。
APIサーバーのオートスケール・オートヒーリングといった可用性の維持がKubernetesに任せられるようになったのは大きなメリットです。モニタリングにはDatadogを利用しています。ネットワークからサーバーアプリケーションまでDatadogでカバーできるため、状況の変化やエラーが起きたときの原因を見つけやすくなりました。
現在のアーキテクチャの課題と今後の改善予定
Kubernetesを採用した以上、ライフサイクルに追随してEKSクラスタのバージョンアップをしなければなりません。AWS Load Balancer Controller、External Secrets Operator、ArgoCD、Argo Rolloutsといったアドオンもアップデートする必要があります。バージョンアップにかかる手間と時間は運用の負担になります。クラスタを更新するタイミングで、問題がある部分をより良い形で置き換えやすいというメリットはありますが、追随に関わるコストに関しては、これが不要となるECSのほうが分があり、ECSをつかったシステムも検討しています。
◆執筆:米田 真治 (こめだ しんじ)
エンジニアリング本部 ゲームコアテクノロジーグループ @komeda_shinji
【公式サイト】
https://www.klab.com/jp/
アーキテクチャを構成するツール
会社情報
KLab株式会社
KLab(クラブ)株式会社は、「エンタテインメントコンテンツで、世界中のユーザーをひとつにつなげる」をビジョンに掲げ、世界中で人気の高いアニメ、コミックなどのIPを原作としたタイトルを中心に、モバイルオンラインゲームを世界155の国と地域に配信しています。