tech

글로벌 게임 서비스를 위한 퍼블릭 클라우드 인프라 운영과 관리

컴투스 그룹은 전 세계 뻗어나가 글로벌 게임 서비스를 제공하고 있다. 글로벌 서비스를 가능하도록 한 것은 IDC 센터의 물리적 장비뿐만 아니라 AWS, Google Cloud, MS Azure, Tencent Cloud 및 Alibaba Cloud와 같은 다양한 CSP(Cloud Service Provider)와 관계 깊다.

클라우드 서비스의 발전은 컴투스 그룹의 글로벌 게임 운영에 여러 가지 장점을 제공한다. 클라우드 인프라는 사용자의 수요에 맞춰 손쉽게 자원을 확장하거나 축소할 수 있게 한다. 덕분에 게임 출시 초기의 폭발적인 사용자 증가나 특정 이벤트 기간의 트래픽 급증에도 유연하게 대응할 수 있다.
또한 클라우드 서비스는 전 세계에 분포된 데이터 센터를 통해 게임 서버를 운영할 수 있도록 지원하여, 사용자들이 지리적 위치에 상관없이 빠르고 안정적인 게임 서비스를 제공받을 수 있도록 도움을 준다.

더불어 전통적인 물리적 서버 인프라에 비해 클라우드 서비스는 초기 비용이 적게 든다. 필요한 만큼만 자원을 사용하고 비용을 지불하는 구조로 되어 있어 비용 측면에서 효율적이기도 하다. 클라우드 서비스를 활용하면 비교적 합리적인 비용으로 쉽게 글로벌 시장 진출에 도움을 받을 수 있어, 중소 규모의 게임 개발사에겐 더욱 효자 역할을 한다.

Adobe Firefly – AI 이미지

컴투스플랫폼 인프라기술G팀에서는 인프라 자원과 서비스를 활용하여 개발자들이 서비스를 만들어갈 수 있도록 인프라 환경을 제공한다. 인프라 환경이 안정적으로 유지할 수 있게 상시 모니터링 하고, 미래의 수요에 맞춰 확장 및 축소를 계획한다.

컴투스플랫폼에서 사용하는 주요 클라우드 제품은 여러 가지다. 먼저, 가상머신(VM) , 컨테이너(GKE) , AppEngine 등의 컴퓨팅 자원을 활용하여 다양한 서비스와 애플리케이션을 운영한다. 또한, 데이터를 저장할 수 있는 스토리지와 네트워크 자원인 VPC(Virtual Private Cloud), 로드밸런서, 보안 그룹을 통해 트래픽을 관리한다. 이와 함께 접근 제어와 암호화를 통해 시스템을 보호한다.
데이터 분석을 위해서는 BigQuery와 Elastic Cloud를 사용해 게임에 필요한 각종 데이터를 수집한다. 마지막으로, 모니터링 기능을 통해 로그와 성능 지표를 분석한다. 이러한 분석 결과를 바탕으로 리소스를 확장하거나 축소하여 비용을 최적화할 수 있다.

클라우드 운영에서는 IaC를 활용하여 클라우드 자원을 할당하고 자동화하며 자원의 상태를 실시간으로 모니터링 한다. 이상이 발생할 경우 알람을 통해 확인이 가능하다. 특히 IAM을 통해 필요한 사용자에게 적절한 권한을 부여함으로써 시스템을 더욱 안전하게 관리하고 있다.

컴투스를 대표하는 게임 ‘서머너즈 워’를 비롯해 MMORPG ‘서머너즈워: 크로니클’, ‘제노니아: 크로노브레이크’ 등 다양한 게임들이 클라우드 인프라에서 서비스되고 있다. 전체적으로 수 천대 이상의 가상머신(VM)을 비롯하여 GKE, App Engine, BigQuery 등 다양한 클라우드 서비스를 사용하고 있다.

그렇다면 이 많은 리소스 관리는 어떻게 하고 있을까? 많은 회사에서 사용 중인 IaC(Infrastructure as Code) 도구 ‘Terraform’을 사용하여 리소스를 관리 중이다.

IaC를 사용함으로써 인프라를 코드로 관리할 수 있으며, 다양한 형태의 클라우드를 지원하기 때문에 확장이 용이하고 상황에 따라 모듈화해 편리하게 사용이 가능하다. 100대의 리소스를 만드는데 콘솔에서 작업하는 것보다 효과적으로 리소스를 생성할 수 있다.

테라폼 공식 홈페이지

예를 들어, AWS EC2 인스턴스를 1대 생성한다고 하면 웹 콘솔에 접속해서 다양한 정보를 입력해 주어야 했다. 예컨대 OS정보 인스턴스 타입과 네트워크 정보 등이다.

Terraform을 사용할 경우 이 모든 것을 코드화할 수 있다.

resource "aws_vpc" "my_vpc" {
  cidr_block = "172.16.0.0/16"

  tags = {
    Name = "tf-example"
  }
}

resource "aws_subnet" "my_subnet" {
  vpc_id            = aws_vpc.my_vpc.id
  cidr_block        = "172.16.10.0/24"
  availability_zone = "us-west-2a"

  tags = {
    Name = "tf-example"
  }
}

resource "aws_network_interface" "foo" {
  subnet_id   = aws_subnet.my_subnet.id
  private_ips = ["172.16.10.100"]

  tags = {
    Name = "primary_network_interface"
  }
}

resource "aws_instance" "foo" {
  ami           = "ami-005e54dee72cc1d00" # us-west-2
  instance_type = "t2.micro"

  network_interface {
    network_interface_id = aws_network_interface.foo.id
    device_index         = 0
  }

  credit_specification {
    cpu_credits = "unlimited"
  }
}

🔗 테라폼 공식 홈페이지 예제코드

Terraform코드 역시 다양한 CSP를 지원해주어 현재 운영 환경에 맞게 코드를 모듈화해 사용하고 있다.

코드로 인프라를 작성하기 때문에 글로벌 서비스에 따른 상당한 리소스를 생성, 변경, 삭제하는 것이 용이하다. 대량의 가상머신을 생성하는 데에도 몇십 분 정도만 소요되어 업무 효율을 높일 수 있다.

다만, 많은 양의 리소스를 코드로 관리하다 보니, 작은 실수로 인프라를 잘못 삭제하는 경우도 발생할 수 있다. 때문에 주의를 기울여야 한다. 또한 클라우드 제품의 업데이트로 인해 기능이 추가되거나 변경되는 부분이 생길 경우, Terraform코드를 수정해야 하는 경우가 빈번하게 발생하는 점은 단점으로 꼽을 수 있다.

Pixabay

지금까지 컴투스 그룹의 퍼블릭 클라우드 운영 방법에 대해 간단하게 소개했다. 컴투스 그룹은 다양한 CSP를 사용하고 있어서, 해당 기능에 대해 알아가는 것과 Terraform 코드를 이해하는 것이 개인적으로 어려운 부분이 있었다. 하지만 사내 온라인 교육 인프런을 수강하면서 많은 도움을 받았다. 앞으로도 다양한 클라우드 서비스를 안정적으로 운영하도록 노력하며 나아가고자 한다. 긴 글을 읽어주신 분들께 감사한 마음을 전하며, 이만 글을 마친다.

김민수 기자

컴투스플랫폼에 입사하여 다양한 클라우드 서비스를 사용하고 컴투스홀딩스의 여러 서비스를 안정적으로 관리하고 있습니다.


TOP