DigitalOcean에서 Hetzner로 옮기고 월 비용을 84% 줄인 실전 마이그레이션

월 $1,432였던 DigitalOcean 인프라 비용을 Hetzner 전용 서버로 옮겨 $233까지 낮춘 실전 사례. 비용 구조, 무중단 전환 절차, Terraform 이식성 설계를 다룬다.

2026-08-12 · 최초 발행 2026-04-20

DigitalOcean에서 월 $1,432를 내던 인프라를 Hetzner로 옮기고 월 $233로 낮춘 사례가 2026년 여러 커뮤니티에서 공유되며 회자되고 있다. 단순히 저렴한 호스팅사로 갈아탄 이야기가 아니라, 스펙을 오히려 올리면서 비용은 84% 줄이고, 그 전환을 24시간 안에 다운타임 없이 끝낸 과정이 핵심이다.

왜 Hetzner인가

DigitalOcean이나 AWS, GCP 같은 퍼블릭 클라우드는 관리형 서비스와 생태계로 편의성을 판다. 반면 독일 기반 Hetzner는 베어메탈에 가까운 원가형 가격 정책으로 별도의 시장을 유지해 왔다. 2026년 들어 AI 워크로드로 인한 클라우드 비용 급증과 스타트업의 runway 압박이 겹치면서 Hetzner 이전이 눈에 띄게 늘었다.

이전을 촉발한 요인은 크게 네 가지로 정리된다.

  • 트래픽·데이터 비용이 누적되며 월 청구액이 수천 달러 단위로 불어난 것
  • 투자자·경영진 쪽에서 강해진 클라우드 지출 최적화 압박
  • 동급 스펙 기준 Hetzner가 60~84% 저렴하다는 가격 격차
  • 유럽 서버를 쓰면 GDPR 컴플라이언스에서 유리해지는 데이터 주권 문제

비용 구조: $1,432에서 $233로

이전 전 DigitalOcean 구성은 192GB RAM, 32 vCPU Droplet을 중심으로 네트워크 초과 트래픽과 스토리지 블록, 백업 비용이 더해진 형태였다.

항목 스펙 월 비용
Droplet 192GB RAM, 32 vCPU $1,152
네트워크 트래픽 초과분 $180
스토리지 블록 500GB $50
기타(백업 등) $50
합계 $1,432

이전 후 Hetzner 구성은 전용 서버 AX162-R 한 대로 대체됐다. 트래픽은 20TB가 기본 포함이라 별도 과금이 없다.

항목 스펙 월 비용
전용 서버 AX162-R 256GB DDR5 RAM, 96 vCPU $180
네트워크 트래픽 20TB 포함 포함
NVMe SSD 스토리지 2×1.92TB $35
백업/스냅샷 $18
합계 $233

연간으로 환산하면 $14,388이 절감됐고, 그 와중에 RAM은 192GB에서 256GB DDR5로, CPU는 32코어에서 96코어로 오히려 늘었다. 비용을 줄이려고 스펙을 깎은 게 아니라 가격 구조 자체가 다른 시장으로 옮긴 결과다.

퍼블릭 클라우드와 Hetzner의 가격·SLA 차이

동급 인스턴스를 놓고 보면 격차가 더 뚜렷하다.

비교비교AWS (참고)t3.medium2 vCPU / 4GB RAM~$30/월트래픽: 별도 과금높은 egress 비용SLA: 99.99%Hetzner Cloud2 vCPU / 4GB RAM€7.99/월 (~$9.5)트래픽: 20TB 포함60% 저렴SLA: 99.9%DigitalOcean2 vCPU / 4GB RAM$24/월트래픽: 4TB 포함초과분 과금SLA: 99.99%
항목 DigitalOcean Hetzner AWS
동급 VM 가격 $24/월 ~$9.5/월 ~$30/월
트래픽 포함량 4TB 20TB 소량만 포함
데이터센터 위치 글로벌 다수 독일·핀란드·미국 글로벌 다수
관리형 서비스 생태계 중간 제한적 최대
SLA 99.99% 99.9% 99.99%
GDPR 데이터 주권 부분적 유럽 기반 유리 지역 선택 가능

가격만 보면 Hetzner가 압도적이지만, SLA는 99.9%로 DigitalOcean·AWS의 99.99%보다 한 단계 낮고 DBaaS·CDN 통합·AI API 같은 관리형 서비스 생태계도 얇다. 자체 운영 능력이 있는 팀에게는 이 트레이드오프가 문제가 안 되지만, 관리형 서비스 의존도가 높은 팀에게는 운영 오버헤드가 그대로 넘어온다.

24시간 무중단 전환 절차

이 사례에서 가장 눈여겨볼 부분은 비용 절감 자체보다 전환 과정에서 다운타임이 없었다는 점이다.

YesNo(1) 사전 준비Terraform IaC 작성Hetzner 환경 구성(2) 데이터 동기화실시간 DB 복제 설정(스트리밍 복제)(3) 병렬 운영구·신 환경 동시 서비스트래픽 10% 신환경(4) 검증신환경 오류율·성능기준치 충족?(5) DNS 전환TTL 낮춤 DNS 변경구환경 대기(6) 롤백트래픽 전량 구환경 복귀원인 분석(7) 최종 동기화DNS 전파마지막 DB 동기화(8) 구환경 종료청구 중단모니터링 안정화

핵심은 세 가지 기법의 조합이다. 먼저 PostgreSQL은 스트리밍 복제로 실시간 동기화를 걸어두고, 최종 전환 시점에만 짧은 읽기 전용 유지보수 창(수분 이내)을 둔다. Redis 같은 인메모리 스토어는 RDB 스냅샷으로 옮긴다. DNS는 TTL을 300초에서 60초로 낮춰 캐시 전파 시간을 줄이고, Floating IP나 Cloudflare로 IP 레벨 즉시 전환을 준비한 뒤 트래픽을 1%→10%→50%→100% 순으로 점진적으로 옮긴다. 이 과정 전체를 블루-그린 배포로 감싸, 신환경 검증이 끝나기 전까지는 구환경(Blue)을 그대로 살려두고 문제가 생기면 즉시 롤백한다.

Terraform으로 인프라 이식성 확보하기

Terraform으로 관리된 인프라는 terraform apply 한 번으로 전체 환경을 20분 내에 재현할 수 있다. 이 재현성이 마이그레이션의 리스크를 크게 낮추는 요인이다. Hetzner Terraform Provider 구성은 다음과 같은 형태다.

terraform {
  required_providers {
    hcloud = {
      source  = "hetznercloud/hcloud"
      version = "~> 1.45"
    }
  }
}

provider "hcloud" {
  token = var.hcloud_token
}

resource "hcloud_server" "web" {
  name        = "web-prod"
  server_type = "cx22"
  image       = "ubuntu-24.04"
  location    = "fsn1"

  ssh_keys = [hcloud_ssh_key.default.id]
}

다만 Terraform이 클라우드 중립적이라는 말은 절반만 맞다. Provider마다 리소스 타입이 다르기 때문에 완전한 이식성은 현실적으로 어렵다. 실무에서 통하는 절충안은 공통 인터페이스 뒤에 Provider별 구현을 감추는 추상화 모듈을 두고, Docker·Kubernetes로 애플리케이션 레이어를 인프라와 분리하며, 클라우드 독점 DB 서비스 대신 표준 오픈소스 DB를 쓰고, HashiCorp Vault 같은 클라우드 중립 도구로 시크릿을 관리하는 것이다.

FinOps 체크리스트와 절감액의 방향

마이그레이션을 FinOps 관점에서 보면 단계별로 챙길 항목이 갈린다.

단계 활동 효과
사전 분석 현재 지출 항목별 분류·태깅 불필요 지출 식별
마이그레이션 중 구환경 조기 종료 시점 관리 중복 지출 최소화
완료 후 신환경 리소스 우측 규모 조정 과잉 프로비저닝 제거
지속 운영 월별 비용 리뷰·이상 탐지 비용 드리프트 방지

절감된 월 $1,199를 그대로 손익에 반영하기보다 모니터링·관찰 가능성(Grafana, Prometheus) 강화, 보안 도구(WAF, SIEM) 도입, 개발 환경 확장과 CI/CD 파이프라인 개선, 팀 역량 강화 교육에 재투자하는 쪽이 FinOps가 성숙한 조직의 접근이다.

어떤 팀에 맞는가

자체 운영 역량이 있고, 유럽 데이터 주권 요건이 있거나, 트래픽이 많아 egress 비용이 부담이고, 워크로드가 예측 가능하고 안정적인 팀이라면 Hetzner 전환이 남는 장사다. 반대로 관리형 Kubernetes(EKS, GKE, AKS)에 깊이 의존하거나, AWS·GCP 네이티브 AI·ML 서비스가 핵심 워크플로우에 들어가 있거나, 글로벌 멀티 리전 Active-Active 아키텍처가 필요하거나, 계약상 99.99% SLA가 필수인 경우라면 가격만 보고 옮기기 전에 한 번 더 따져봐야 한다.

Sources

클라우드마이그레이션HetznerFinOpsTerraform무중단배포