ShinnosukeSuzuki / techtrain-mission-ca-tech-dojo-golang

オンライン版 CA Tech Dojo サーバサイド (Go)編
0 stars 0 forks source link

ゲームガチャAPIの実装

概要

TechTrain MISSION オンライン版 CA Tech Dojo サーバサイド (Go)編 のリポジトリ。
スマートフォン向けゲームのAPIの開発を想定。
API仕様YAML: https://github.com/ShinnosukeSuzuki/techtrain-mission-ca-tech-dojo-golang/blob/main/api-document.yaml
作成したAPIは以下の6つ。

デプロイ

AWS ECS on Fargateを使ってデプロイした。
インフラ構成の詳細: https://github.com/ShinnosukeSuzuki/techtrain-mission-ca-tech-dojo-golang/blob/main/infra/game-api-infrastructure/game-api-infrastructure.md

CICD

CICDにはAWS CodePipelineとCodeBuildを使用した。
mainブランチへのpushをトリガーとし、mdファイルやinfraディレクトリの変更はトリガーから除いた。
具体的には以下を実行する

  1. go api のDockerfileのbuild
  2. ECRへのpush
  3. パラメータストアで保存しているECSがpullするECRのtag値を更新
  4. cdk deployを行い、ECSのローリングアップデート(CodeDeployを使用してblue/greenデプロイするように改修予定)

    メトリクス監視

    go api サーバーのサイドカーにNode exporterを置くことでtaskのメトリクスを取得し、ローカルのPrometheusで収集、Grafanaで可視化した。

    alt text

使用技術

Go(1.22.4), Echo(4.12.0), MySQL(8.0), AWS ECS, AWS RDS, AWS CodePipleline, AWS CodeBuild, AWS CDK, Prometheus, Grafana