JD의 블로그

[Professional Cloud Architect] Mountkirk Games 케이스 분석 본문

클라우드/GCP

[Professional Cloud Architect] Mountkirk Games 케이스 분석

GDong 2020. 1. 10. 03:39

Professional Cloud Architect

샘플 케이스 스터디: Mountkirk Games

 

Mountkirk Games makes online, session-based, multiplayer games for mobile platforms. They build all of their games using some server-side integration. Historically, they have used cloud providers to lease physical servers.

더보기

Mountkirk Games는 모바일 플랫폼을 위한 온라인, 세션 기반의 멀티 플레이어 게임을 만들고 있습니다. 그들은 서버 사이드 통합을 이용하는 게임을 만들고 있으며, 과거부터 그들은 물리적인 서버를 대여해주는 클라우드 제공자의 역할을 해왔습니다. 

 

Due to the unexpected popularity of some of their games, they have had problems scaling their global audience, application servers, MySQL databases, and analytics tools.

더보기

그들의 몇몇 게임이 예상치 못하게 인기를 얻으며, 그들은 전세계의 사용자을 처리하기 위해 애플리케이션 서버, MySQL 데이터베이스, 그리고 분석용 도구를 확장하는데 어려움을 겪고 있습니다. 

 

Their current model is to (1) write game statistics to files and (2) send them through an ETL tool that (3) loads them into a centralized MySQL database for reporting.

더보기

그들이 현재 가진 모델은 게임의 통계치를 파일에 쓰고, 그것들을 기록하기 위한 중앙집중화된 MySQL 데이터베이스에 적재하는 것을 도와주는 ETL 도구를 사용해 이러한 파일을 보냅니다. 

(1) Google Cloud Storage (GCS)

(2) Cloud Dataflow

(3) BigQuery


1. 솔루션 개념 

Mountkirk Games is building a new game, which they expect to be very popular. They plan to deploy the game’s backend on (1) Google Compute Engine so they can (2) capture streaming metrics, (3) run intensive analytics, and take advantage of its (4) autoscaling server environment and integrate with a (5) managed NoSQL database.

더보기

Mountkrik Games는 새로운 게임을 개발하고 있으며, 그들은 이 게임이 매우 인기있을 것이라 예상하고 있습니다. 그들은 게임의 백엔드를 Compute Engine으로 배포할 예정이며 이를 통해 그들은 스트리밍 측정값을 포착하고, 집중적인 분석을 수행하며, 오토 스케일링 서버 환경의 장점을 사용하고, 관리형 NoSQL 데이터베이스와 통합할 수 있게 될 것입니다.

(1) Google Compute Engine(GCE)

(2) Cloud Pub / Sub

(3) BigQuery

(4) Managed Instance Group (MIG) - Groups of Compute Engines

(5) Bigtable, Cloud Datastore

2. 비즈니스 요구사항

    • Increase to a global footprint
    • Improve uptime—downtime is loss of players
    • Increase efficiency of the cloud resources we use
    • Reduce latency to all customers
더보기
  • 글로벌 영역 증가시키기
  • 가동 시간 개선하기 - 작동이 멈추는 시간(downtime)이 곧 플레이어 손실이다
  • 우리가 사용하는 클라우드 자원의 효율성을 향상시키기
  • 모든 사용자에 대한 지연 속도를 감소시키기

3. 기술적인 요구사항

Requirements for game backend platform

    1. Dynamically scale up or down based on game activity
      => Managed Instance Group with Autoscaling enabled
    2. Connect to a transactional database service to manage user profiles and game state
      => Cloud Datastore
    3. Store game activity in a timeseries database service for future analysis
      => BigQuery
    4. As the system scales, ensure that data is not lost due to processing backlogs
      => Cloud Dataflow
    5. Run hardened Linux distro
더보기

게임의 백엔드 플랫폼을 위한 요구사항

  1. 게임 활동을 기반으로 동적으로 확장하고 축소한다
  2. 사용자 프로필과 게임의 상태를 관리하기 위한 트랜잭션 데이터베이스와 연결한다
  3. 향후 분석을 위해 시계열 데이터베이스 서비스에 게임 활동 정보를 저장한다
  4. 시스템이 확장됨에 따라 백로그(backlog) 처리로 인해 데이터가 손실되지 않도록 보장한다
  5. 강화된 리눅스 배포판을 가동한다

Requirements for game analytics platform

    1. Dynamically scale up or down based on game activity
    2. Process incoming data on the fly directly from the game servers
      => Cloud Pub / Sub & Cloud Dataflow
    3. Process data that arrives late because of slow mobile networks
      => Cloud Dataflow
    4. Allow queries to access at least 10 TB of historical data
      => BigQuery
    5. Process files that are regularly uploaded by users’ mobile devices
      => Google Cloud Storage
더보기

게임의 분석 플랫폼을 위한 요구사항

  1. 게임 활동을 기반으로 확장하고 축소한다
  2. 게임 서버에서 수신하는 데이터를 즉시 처리한다
  3. 느린 모바일 네트워크 때문에 늦게 도착하는 데이터를 처리해야한다
  4. 퀴리를 이용해 최소 10TB의 과거 데이터를 액세스할 수 있게 허용합니다
  5. 사용자의 모바일 기기에 의해 주기적으로 업로드되는 파일을 처리해야한다

더보기

관련 문제

1. Mountkirk Games needs to create a repeatable and configurable mechanism for deploying isolated application environments. Developers and testers can access each other's environments and resources, but they cannot access staging or production resources. The staging environment needs access to some services from production. What should you do to isolate development environments from staging and production?

 

Create a project for development and test and another for staging and production

 

2. Mountkirk Games wants you to design their new testing strategy. How should the test coverage differ from their existing backends on the other platforms?

 

Tests should scale well beyong the prior approaches

 

3. Mountkirk Games has deployed their new backend on Google Cloud Platform (GCP). You want to create a through testing process for new versions of the backend before they are released to the public. You want the testing environment to scale in an economical way. How should you design the process?

 

Create a scalable environment in GCP for simulating production load 

 

4. Mountkirk Games needs to build out their streaming data analytics pipeline to feed from their game backend application. What GCP services in which order will achieve this?

 

Cloud Pub/Sub - Cloud Dataflow - BigQuery

 

5. Mountkirk Games wants to set up a real-time analytics platform for their new game. The new platform must meet their technical requirements. Which combination of Google technologies will meet all of their requirements?

 

Cloud Dataflow, Cloud Storage, Cloud Pub/Sub, and BigQuery

 

6. Based on MountKirk Games' technical requirements, what GCP services/infrastructure will they use to host their game backend platform?

 

Managed Instance Group on Compute Engine

 

7. Based on Mountkirk Games’ technical requirements, what GCP services/infrastructure will they uses for the backend data services?

 

Cloud Datastore for transactional data, Bigtable for time series data and BigQuery for historical data

 

8. Based on Mountkirk Games’ technical requirements, which GCP services/infrastructure can help achieve the requirement of storing the game activity data in a time series database service for future analysis?

 

BigQuery