-
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별 환경을 생성할 수 있게 됨
- 팀 내에서는 비용 부담뿐 아니라, 사용 주저함 자체가 진정한 손해였다는 교훈을 얻음