Com2us Platform · Multi-cloud
서머너즈워: 천공의 아레나 멀티클라우드와 방화벽 재설계
GCP와 Tencent Cloud에 걸친 서버 600대·DB 70개 환경의 방화벽 정책을 전수 재설계하고, 무점검 원칙으로 운영한 대규모 게임 인프라입니다.
- 역할
- Cloud Engineer · 메인 엔지니어
- 기간
- 2023.02 – 2026.02
- CSP
- GCP · Tencent
- 규모
- 서버 600대 · DB 70개 · Massive
- 핵심 기술
- GCP · Tencent Cloud · Terraform · Terragrunt · Cloud Armor
- 600
- 서버
- 70
- DB
- - 40 %
- Terragrunt 전환 뒤 배포 시간
한눈에 보기
문제
회사에서 가장 큰 프로젝트로, 중국 서비스를 위해 Tencent를 함께 운영했습니다. 두 클라우드의 방화벽 정책이 오래 쌓여 중복되고 복잡해졌고, 여러 리전으로 커진 코드는 Terraform만으로 다루기 어려워졌습니다.
접근
클라우드 간 방화벽 정책을 전수 분석해 중복과 불필요한 규칙을 제거하고 웹, 게임, DB, 관리 역할 기준으로 다시 묶었습니다. Terraform을 Terragrunt 구조로 옮겨 코드 중복을 걷어 냈습니다. 대부분의 서버를 로드밸런서 백엔드로 두어 서버를 하나씩 빼고 넣는 방식으로 무점검 패치를 했습니다.
결과
방화벽 정책이 단순해져 검토와 변경이 쉬워지고 공격에 노출되는 범위가 줄었습니다. Terragrunt 전환으로 배포 시간을 40% 줄였고, GCP Cloud Armor로 DDoS 방어를 운영했습니다.
자세히 보기
규칙 맵으로 만드는 방화벽 (관련 공개 저장소 pf-02)
이 코드가 하는 일: 역할별 규칙 맵을 for_each로 받아 방화벽 규칙을 만듭니다. 이 프로젝트의 운영 코드가 아니라 관련 공개 저장소의 코드입니다.
resource "google_compute_firewall" "rules" {
for_each = var.rules
network = each.value.network
name = each.key
direction = each.value.direction
source_ranges = each.value.direction == "INGRESS" ? each.value.ranges : null
destination_ranges = each.value.direction == "EGRESS" ? each.value.ranges : null
source_tags = each.value.use_service_accounts || each.value.direction == "EGRESS" ? null : each.value.sources
source_service_accounts = each.value.use_service_accounts && each.value.direction == "INGRESS" ? each.value.sources : null
target_tags = each.value.use_service_accounts ? null : each.value.targets
target_service_accounts = each.value.use_service_accounts ? each.value.targets : null
priority = each.value.priority배운 점
규칙을 추가만 하면 정책은 금방 읽을 수 없게 됩니다. 역할 단위로 묶어 두면 변경 때 어디를 봐야 하는지 바로 보입니다.
다음에 개선할 점
방화벽 규칙의 중복과 미사용을 전수 분석으로 찾았습니다. 다음에는 이런 분석을 정기적으로 돌아가는 점검으로 바꾸고 싶습니다.