Azure、Kubernetes基盤のリアルタイムテトリスマッチングプラットフォーム構築
プロジェクト目標
単純なゲーム開発を超え、クラウド技術(AKS、ACR)を活用した安定的で拡張可能なゲームサービスの構築
役割分担
<aside>
ユ・ハミン - チームリーダー、API開発、DB連動
イ・ジフ - API開発、DB連動、発表資料制作
パク・サンウ - Front-endテンプレート構成、テトリスゲーム設計
パク・ハンビ - 発表、Azureインフラ構成(IaC)、CI/CD
</aside>
主要目標
<aside>
- 安定したリアルタイム通信(品質)
- ユーザーデータの安全な保存(セキュリティ)
- トラフィック増加への対応(拡張性)
</aside>
実装機能
<aside>
- ネットワーク、サーバー、データベース連動及び冗長化(マルチAZ)
- 自動スケーリング(オートスケーリング)
- 負荷分散(ロードバランサー)
- モニタリング - 主要指標(CPU、メモリ、ネットワーク等)のダッシュボード作成と閾値超過時のアラート設定
- IaC - Terraformを使用して手動構築したインフラをコード化し、管理を自動化して再利用性を向上
- CI/CD - イメージビルドとデプロイを自動化し、ソースコード修正のみで迅速かつ便利なデプロイを実現
</aside>
オンラインマッチングゲーム開発シナリオ
<aside>
Phase 1: コアゲームプレイループ実装(MVP)
ユーザーが1ゲームを完全に楽しめる核心機能に集中。この段階の目標は「ゲームサービスが実際に動作するか?」を検証すること。
含まれるシナリオ:
- 会員登録/ログイン(退会、ログアウトは後回し)
- ゲームマッチング(開始、成功/失敗等の基本フロー)
- ゲーム進行及び結果送信(最も基本的な形態のゲームプレイ)
Phase 2: ユーザー体験及びモチベーション強化
核心機能が完成したら、ユーザーが継続的にゲームを楽しめるようにする追加機能を開発。
含まれるシナリオ:
- 会員情報確認(自分の戦績とELOスコア確認)
- ゲーム再対決リクエスト
- ランキングページ
- JWTトークン再発行(ログイン維持機能強化)
Phase 3: サービス運営及び拡張
サービスの安定性を高め、将来に備える段階。
含まれるシナリオ:
- 管理者ページ(運営効率性向上)
- 複数のゲーム種類選択(サービス拡張基盤構築)
- 途中切断状況処理(サービス安定性強化)
- 会員退会/ログアウト(仕上げ機能実装)
</aside>
ディレクトリ構造
アーキテクチャフロー
<aside>
- TerraformのAzureプロバイダーでAKS(Kubernetes)、ACR(Azureイメージストレージ)、DB(Azure Cache for Redis、PostgreSQL)を作成
- TerraformのK8s、Helmプロバイダーでモニタリングツール(Grafana、Prometheus)を構成
- Githubにフロントエンドまたはバックエンドコードを新たにpushすると、GitHub Actionsが起動してDockerイメージをビルドし、ACRにアップロード
- Dockerfileで作成したコンテナをArgoCDを通じてKubernetes Podにデプロイし、常に2つのPodが維持されるよう設定
</aside>
リソース作成(Terraform)
<aside>
リソース命名規則
tetris-camp-<サービス名>
ACR = tetriscampacr0914
</aside>
<aside>
使用した3つのProvider
- Azure
- Kubernetes
- Helm
terraform apply コマンドを実行してリソースを作成し、Azure Portal上で正常に生成されたことを確認しました。



リソース確認



</aside>
ローカルK8s接続
<aside>
Azure CLI コマンドを使用して、新しく作成されたtetrisgame-aksクラスターの接続情報をローカルコンピューターのkubeconfigファイルに自動保存(更新)
az aks get-credentials --resource-group tetris-camp-rg --name tetris-camp-aks

このコマンド入力後、kubectlコマンドが正常動作することを確認しました。
</aside>
Prometheus、Grafana(モニタリング)