Heroku 월 3,000달러 요금을 월 55달러 서버로 대체하기

2 weeks ago 8

  • Idealist.org는 높은 Heroku 비용을 줄이기 위해 저렴한 전용 서버로 일부 스테이징 환경을 이전함
  • Hetzner 서버 한 대에서 여러 개의 스테이징 환경을 효율적으로 운영하면서 비용 절감과 개발 편의성을 모두 달성함
  • Disco 도구를 통해 Heroku와 유사한 git push 배포 및 자동화, 간편 환경 관리 기능을 제공함
  • 운영 이전으로 인해 인프라 관리 및 보안, DNS, CDN 설정 등 일부 운영 부담이 증가함
  • 장기적으로 스테이징 환경이 저비용의 자유로운 리소스로 변모하여 팀의 개발 문화와 생산성에 긍정적 변화가 생김

실용적인 Heroku 비용 절감 전략 경험기

문제: 월 500달러 스테이징 환경

  • Idealist.org처럼 트래픽이 많은 사이트는 실제 운영 환경과 거의 동일한 스테이징 환경이 필수적임
  • Heroku에서는 한 개의 스테이징 환경을 구성할 때, 웹과 워커 다이노 및 여러 필수 애드온까지 합치면 매월 약 500달러가 소요됨
  • 개발 및 메인 등 두 개의 환경만 항상 운영해도 기본적으로 월 1,000달러 구조임
  • Heroku의 가격책정 방식은 환경당 과금이며, 애플리케이션이 많아질수록 비용이 급증함

실험: 단일 서버로 이전

  • 이상적인 비용절감을 위해 단일 Hetzner CCX33 서버(월 55달러) 를 임대하여 실험 시작함
  • Disco 솔루션을 활용해 기존 Heroku의 git push 배포 방식을 서버에 그대로 적용함
  • 모든 스테이징 환경에서 동일 서버의 공용 Postgres 인스턴스를 활용하여, 관리형 데이터베이스 비용 부담을 대폭 낮춤
  • 테스트 관점에서는 개발자별로 분리된 데이터베이스를 쉽게 초기화할 수 있어 적합함

Disco를 쓰는 이유: Docker Compose와의 차별점

  • 단순히 서버에서 docker-compose up만으로는 개발자 경험이 충분하지 않음
  • Disco는 다음과 같은 이점을 제공함
    • Heroku와 동일한 git push 배포 프로세스
    • 모든 배포를 대상으로 자동 무중단 배포 지원
    • 브랜치별 URL에 대한 자동 SSL 인증서 발급 및 갱신
    • 로그 및 환경 관리를 위한 직관적인 웹 UI
  • 자체 배포 관리 자동화를 구축/유지할 필요 없이, 개발 편의를 그대로 누릴 수 있음

스테이징 환경 폭발 및 서버 자원 효율

  • Disco 활용으로 스테이징 환경 확장이 매우 간편해짐
  • 한 대의 서버에서 다음과 같은 환경을 동시에 운영함
    • 메인 브랜치
    • feature-freeze 브랜치
    • 임시 PR용 throwaway 환경
    • 대규모 기능 개발용 장기 환경 등
  • 6개의 독립 스테이징 환경을 무리 없이 기동 중임
  • Heroku에서라면 월 3,000달러가 필요하지만, Hetzner에서는 CPU 2%, 메모리 14GB(32GB 중) 만 소모하는 저비용 구조임

트레이드오프 및 현실적 고려사항

  • 신규 환경별 DNS, CDN 설정 등의 인프라 작업은 자동화되어 있지 않음
  • 서버 모니터링, 보안 업데이트, 장애시 대응 등 운영 책임이 발생함
  • Hetzner의 미국 내 데이터센터 부족은 스테이징에는 문제 없으나, 미국 유저 대상 프로덕션 환경에는 고려 필요함
  • 서버 장애시 재설치를 감수한다는 가용성 트레이드오프가 있음
  • Docker 네트워킹에 애플리케이션을 맞추는 작업에 엔지니어 하루 정도가 필요했음

얻은 인사이트 및 변화

  • 6개월 이상 운영하며 해당 인프라가 상시 구조로 자리잡음
  • 가장 큰 변화는 비용 절감만이 아니라, 스테이징 환경 자체가 풍부하고 자유로운 자원으로 인식이 바뀐 점임
  • 개발자는 동의나 비용 걱정 없이, 필요할 때마다 자유롭게 pull request별 환경을 생성할 수 있게 됨
  • 팀 내에서는 비용 부담뿐 아니라, 사용 주저함 자체가 진정한 손해였다는 교훈을 얻음

Read Entire Article