Azure, Kubernetes 기반 실시간 테트리스 매칭 플랫폼
2025년 9월
안정적이고 확장 가능한 게임 서비스를 위한 클라우드 네이티브 인프라 설계 및 자동화
사용 기술
프로젝트 목표
단순한 게임 개발이 아닌, 클라우드 기술을 활용하여 안정성, 확장성, 보안 세 가지 핵심 가치를 갖춘 게임 서비스를 구축하는 것을 목표로 삼았습니다. 사용자에게는 원활한 실시간 통신과 안전한 데이터 저장을 보장하고, 트래픽 변동에 유연하게 대응할 수 있는 인프라를 만드는 데 집중했습니다.
주요 역할 및 해결 과정
1. Kubernetes(AKS) 클러스터 설계 및 운영
애플리케이션의 안정적인 운영과 유연한 확장을 위해 AKS를 도입했습니다. Front-end와 Back-end로 컨테이너로 분리하여 배포하고 관리했습니다. 이를 통해 특정 서비스에 장애가 발생해도 다른 서비스에 미치는 영향을 최소화하는 환경을 구축했습니다. 또한, 트래픽이 급증할 경우 자동으로 Pod 수를 늘리는 HPA를 설정하여 갑작스러운 부하에도 안정적으로 대응할 수 있는 기반을 마련했습니다.
2. Terraform을 활용한 인프라 구성 자동화 (IaC)
Azure상에서 생성할 모든 리소스를 Terraform 코드로 정의하여 인프라 구축을 자동화했습니다. Azure 뿐만 아니라, Kubernetes, Helm Provider를 이용해 Prometheus, Grafana, ArgoCD 또한 코드로 생성 및 관리할 수 있었습니다. 고유한 이름을 가져야 하거나 영문과 숫자로만 이루어진 이름을 가져야 하는 Azure 리소스가 존재하여서 오류가 발생하기도 했지만, 코드를 재사용해 팀 환경을 구축하는 시간을 크게 줄여 코드형 인프라의 효율성을 느낄 수 있었습니다.
3. CI/CD 파이프라인 구축
GitHub Actions와 ArgoCD를 빌드, 배포라는 역할로 나누어 CI/CD 파이프라인을 설계했습니다. 개발자가 코드를 GitHub에 Push하면, GitHub Actions가 자동으로 Docker 이미지를 빌드해 ACR에 업로드합니다. 이후 ArgoCD가 GitHub 리포지토리의 K8s Manifest 변경을 감지하고, 클러스터의 상태를 최신 버전으로 자동 동기화하여 안정적인 무중단 배포가 이루어지도록 구현했습니다.