Azure、Kubernetes基盤のリアルタイムテトリスマッチングプラットフォーム構築

プロジェクト目標

単純なゲーム開発を超え、クラウド技術(AKS、ACR)を活用した安定的で拡張可能なゲームサービスの構築

役割分担

<aside>

ユ・ハミン - チームリーダー、API開発、DB連動

イ・ジフ - API開発、DB連動、発表資料制作

パク・サンウ - Front-endテンプレート構成、テトリスゲーム設計

パク・ハンビ - 発表、Azureインフラ構成(IaC)、CI/CD

</aside>

主要目標

<aside>

  1. 安定したリアルタイム通信(品質)
  2. ユーザーデータの安全な保存(セキュリティ)
  3. トラフィック増加への対応(拡張性) </aside>

実装機能

<aside>

オンラインマッチングゲーム開発シナリオ

<aside>

Phase 1: コアゲームプレイループ実装(MVP) ユーザーが1ゲームを完全に楽しめる核心機能に集中。この段階の目標は「ゲームサービスが実際に動作するか?」を検証すること。

含まれるシナリオ:

Phase 2: ユーザー体験及びモチベーション強化 核心機能が完成したら、ユーザーが継続的にゲームを楽しめるようにする追加機能を開発。

含まれるシナリオ:

  1. 会員情報確認(自分の戦績とELOスコア確認)
  2. ゲーム再対決リクエスト
  3. ランキングページ
  4. JWTトークン再発行(ログイン維持機能強化)

Phase 3: サービス運営及び拡張 サービスの安定性を高め、将来に備える段階。

含まれるシナリオ:

  1. 管理者ページ(運営効率性向上)
  2. 複数のゲーム種類選択(サービス拡張基盤構築)
  3. 途中切断状況処理(サービス安定性強化)
  4. 会員退会/ログアウト(仕上げ機能実装) </aside>

ディレクトリ構造

アーキテクチャフロー

<aside>

  1. TerraformのAzureプロバイダーでAKS(Kubernetes)、ACR(Azureイメージストレージ)、DB(Azure Cache for Redis、PostgreSQL)を作成
  2. TerraformのK8s、Helmプロバイダーでモニタリングツール(Grafana、Prometheus)を構成
  3. Githubにフロントエンドまたはバックエンドコードを新たにpushすると、GitHub Actionsが起動してDockerイメージをビルドし、ACRにアップロード
  4. Dockerfileで作成したコンテナをArgoCDを通じてKubernetes Podにデプロイし、常に2つのPodが維持されるよう設定 </aside>

リソース作成(Terraform)

<aside>

リソース命名規則

tetris-camp-<サービス名> ACR = tetriscampacr0914

</aside>

<aside>

使用した3つのProvider

  1. Azure
  2. Kubernetes
  3. Helm

terraform apply コマンドを実行してリソースを作成し、Azure Portal上で正常に生成されたことを確認しました。

image.png

image.png

image.png


リソース確認

image.png

image.png

image.png

</aside>

ローカルK8s接続

<aside>

Azure CLI コマンドを使用して、新しく作成されたtetrisgame-aksクラスターの接続情報をローカルコンピューターのkubeconfigファイルに自動保存(更新)

az aks get-credentials --resource-group tetris-camp-rg --name tetris-camp-aks

스크린샷 2025-09-09 200012.png

このコマンド入力後、kubectlコマンドが正常動作することを確認しました。

</aside>

Prometheus、Grafana(モニタリング)