Com2us Platform · Migration
GCP → Tencent Cloud 무중단 마이그레이션
서머너즈워: 크로니클의 서버 80대·DB 20개를 약 1주일 만에 서비스 중단 없이 GCP에서 Tencent Cloud로 옮긴 프로젝트입니다.
- 역할
- Cloud Engineer · 메인 엔지니어
- 기간
- 2023.02 – 2026.02
- CSP
- GCP · Tencent
- 규모
- 서버 80대 · DB 20개
- 핵심 기술
- Terraform · GCP · Tencent Cloud · Online Migration
- 80
- 이관한 서버
- 20
- 이관한 DB
- 0
- 서비스 중단
한눈에 보기
문제
라이브 게임의 인프라를 클라우드 간에 옮기면서 서비스를 멈출 수 없었고, 옮기는 과정에서 방화벽 정책이 다르게 적용되면 안 됐습니다.
접근
네트워크와 방화벽 규칙을 Tencent에 GCP와 동일하게 먼저 구성했습니다. 서버는 Online Migration 도구로 옮기고 같은 인프라를 구성한 뒤, 비공개로 운영하며 개발팀과 이슈를 확인하고 트래픽을 단계적으로 전환했습니다. 전 과정은 GCP Terraform 코드를 Tencent Terraform 코드로 옮기는 방식으로 진행했습니다.
결과
약 1주일 만에 서비스 중단 없이 이관을 끝냈습니다. 일부는 GCP에 남기고 대부분의 게임 서버와 DB를 Tencent로 옮겼으며, 방화벽 정책은 전부 검토해 다시 세운 상태로 운영했습니다.
자세히 보기
Tencent 보안그룹 리소스 (관련 공개 저장소 pf-03)
이 코드가 하는 일: Tencent Cloud 보안그룹과 그 안의 규칙을 만드는 모듈 코드입니다. 첫 블록은 보안그룹을 만들 때만(local.create) 이름, 설명, 프로젝트, 태그를 붙여 생성하고, 두 번째 블록은 인바운드(ingress)와 아웃바운드(egress) 규칙 목록을 변수로 받아 그 보안그룹에 한 번에 적용합니다. 규칙이 변수로 들어오기 때문에 GCP에서 정리한 방화벽 규칙을 이 형식의 목록으로 옮겨 적으면 같은 정책을 Tencent 쪽에 그대로 세울 수 있습니다.
resource "tencentcloud_security_group" "sg" {
count = local.create ? 1 : 0
name = var.name
description = var.description
project_id = var.project_id
tags = merge(var.tags, var.security_group_tags)
}
resource "tencentcloud_security_group_lite_rule" "lite_rule" {
count = var.create_lite_rule ? 1 : 0
security_group_id = local.this_sg_id
ingress = var.ingress_for_lite_rule
egress = var.egress_for_lite_rule
}배운 점
클라우드 간 이관에서 가장 먼저 할 일은 서버를 옮기는 것이 아니라 두 클라우드의 리소스를 역할별로 짝지어 보는 일이었습니다. 네트워크, 서브넷, 방화벽, 서버의 대응표를 먼저 정리하니 GCP Terraform 코드를 Tencent Terraform 코드로 옮기는 작업이 단순해졌고, 방화벽 정책도 옮기는 김에 전부 검토해 다시 세울 수 있었습니다. 서비스를 멈추지 않는 비결도 한 번에 바꾸지 않는 데 있었습니다. 같은 인프라를 먼저 구성해 비공개로 운영하며 개발팀과 이슈를 확인하고, 트래픽은 단계적으로 넘겼습니다. 인프라는 코드로 남았지만 트래픽 전환 절차까지 코드와 런북으로 남겨야 다음 이관에서도 같은 결과를 재현할 수 있다는 점을 배웠습니다.