2. Basic scenario
Matchmaker
Dedicated
Game Server
Dedicated
Game Server
Dedicated
Game Server
Dedicated
Game Server
Dedicated
Game Server
Dedicated
Game Server
Dedicated
Game Server
Dedicated
Game Server
Multiple Instances
Server Manager
Multiple Instances
Machine Cluster
- k8s Cluster가 dedicated VM 또는 베어메탈이라고 가정
- FPS 게임 프로세스가 베어메탈에 Provisioning
- 접속자가 차면 새 프로세스가 생성, 코어 당 수십 명씩 접속 및 플레이
- 게임 서버 개발자가 전체 서버에 패치 배포에 어려움
- 운영 측면에서도 이슈 발생
- 모든 서버에 사용자가 없음을 확인 후 서버 프로그램을 수정, 릴리즈
2
3. Introduce of Agones
- 18년 초 공개된 게임 서비스 라이브러리 (Google, Ubisoft)
- FPS, MMO, MOBA(Multiplayer Online Battle Arena) 지원
- 멀티플레이 게임을 k8s 환경에서 호스팅, 실행,
스케일링 위한 라이브러리
- Alpha (0.2.0)
- Key functions
· k8s CustomResource를 API로 컨트롤
· “GameServer”의 Status, Lifecycle 관리
· 게임 클라이언트의 SDK 통합 관리
- Requirements
· k8s Cluster 1.9+
· GameServer UDP Port 방화벽 개방
· GameServer Client SDK 필수
3
4. Building Agones on Kubernetes
Custom
Matchmaker Agones
Controller
Dedicated
Game Server
Multiple Instances
Kubernete API
Kubernetes
Kubernetes
Agones
- container로 프로세스를 물리 Core 당 하나씩 up (k8s + agones)
- Agones를 활용하여 무중단으로 new version 배포 (GameServerFleet)
- 3rd party CI/CD Tool를 이용한 배포 컨셉
- Matchmaking 서버가 유저들을 하나의 프로세스로 UDP 접속
- 모든 CPU Core 소모 시, 타 서버(노드) 프로비저닝 (Node Scaling)
4
8. Continuos Delivery 활용 방안
- Game Server 배포 (Agones)
- Game Server 수정 및 배포 (Git)
- Git Webhook을 통한 CD Pipeline 구성
- Patch Manifests (Scale out, new version 배포)
Code
Check-IN
Continuos
Integration
Deployment
Production
Deploy
+
Test
Hotfix Live
8
9. Conclusion
- Agones 자체는 아직 알파 단계, 실시간 멀티플레이 어플리케이션에서 효과 기대
- Dedicated Server임에 Cache나 LoadBalancer를 사용하지 않음
- Server Vunlerable 또는 DDoS에 대응 필요
- 컨퍼런스는 사은품을 많이 준다. (목베개, 미니 선풍기)
9