Cloudflare에서 Bunny.net으로 전환
(jola.dev)- 중앙집중화된 Cloudflare 의존성을 줄이기 위해 개인 블로그를 bunny.net으로 이전한 사례
- bunny.net은 슬로베니아 기반의 유럽 CDN 서비스로, 전 세계적으로 빠른 성능과 효율적인 PoP 네트워크를 제공
- 도메인 등록은 Porkbun을 사용하고, Cloudflare의 “Orange Cloud” 기능을 bunny.net 환경으로 이전
- Pull Zone, 캐싱 정책, SSL 인증, Edge Rule 등 단계별 설정을 통해 CDN을 완전하게 구성
- DDoS 보호, Origin Shield, Stale Cache 등 기본 기능만으로도 안정적이며, 개인 사용자에게 Cloudflare의 실질적 대안이 될 수 있음
Cloudflare에서 bunny.net으로 이전
-
Cloudflare 의존성과 중앙집중화 문제를 줄이기 위해 개인 블로그를 bunny.net으로 이전한 과정과 설정 방법을 정리
- Cloudflare는 무료로 강력한 기능을 제공하지만, 단일 기업에 대한 의존이 커지고 장애 시 인터넷 전반에 영향을 미치는 구조임
- 미국 기업 중심의 인터넷 집중화에 대한 불편함과 여러 논란으로 인해 대안을 모색함
Bunny.net 개요
-
bunny.net은 슬로베니아 기반의 유럽 기업으로, Cloudflare와 경쟁 가능한 CDN 서비스를 제공
- 전 세계적으로 높은 성능과 속도를 보이며, PoP 네트워크 규모는 작지만 효율적임
- 유럽 기술 생태계 성장을 지원한다는 점에서 긍정적으로 평가됨
Cloudflare에서 벗어나기
- 블로그 도메인 등록기관으로 Cloudflare를 사용했으나, 유럽 내 대안을 찾기 어려웠음
- INWX는 무료 WHOIS 프라이버시가 없어 제외하고, 대신 Porkbun을 선택
- Porkbun은 Cloudflare 인프라를 사용하지만 지원 품질이 우수함
- Cloudflare의 “Orange Cloud” 기능(자동 캐싱, 오리진 숨김, 보호 기능)을 bunny.net으로 이전
Bunny.net 설정 단계
-
계정 생성
- 가입 시 14일간 20달러 크레딧 제공, 신용카드 등록 시 추가 30달러 제공
- 이메일 인증 후 설정 가능하며, 사용량 기반 과금제(최소 월 1달러) 적용
- “사용자가 제품이 아닌 고객이 되는” 구조로 전환
-
Pull Zone 생성
- CDN 활성화를 위한 핵심 구성 요소로, Origin URL을 지정해 서버를 연결
- 여러 앱을 운영 중이라면 Host 헤더에 도메인을 지정
- Standard 티어 선택 후 지역별 가격대가 다른 Zone을 설정 가능
- 비활성화한 지역의 사용자는 가장 가까운 활성 Zone으로 리디렉션됨
-
Pull Zone 연결
- “Add a custom hostname”에 웹사이트 도메인을 입력
- 안내에 따라 CNAME 레코드를 추가해 CDN 경로를 연결 (
website.b-cdn.net형태) - DNS 전파 후 “Verify & Activate SSL” 클릭으로 SSL 인증 완료
- 성공 시 웹사이트가 bunny.net CDN을 통해 서비스됨
캐싱 설정
- 웹사이트가 적절한 Cache-Control 헤더를 반환하면 bunny.net이 이를 존중
- “Caching → General”에서 “Respect origin Cache-Control” 설정 확인
-
no-cache가 설정된 경우 캐싱하지 않음
- 캐시 헤더가 없는 경우 Smart Cache 기능으로 이미지, CSS, JS 등만 자동 캐싱
- Elixir Phoenix 기반 블로그에서는
public파이프라인에 커스텀 캐시 헤더 미들웨어 추가-
cache-control: public, s-maxage=86400, max-age=0설정으로 HTML 페이지까지 캐싱 - 새 글 게시 시 Pull Zone 캐시를 수동으로 초기화해야 최신 HTML 반영
-
- Larm 도구로 측정한 결과, 전 세계 여러 위치에서 응답 속도 향상 확인
권장 기본 설정
- “Force SSL” 활성화로 모든 요청을 HTTPS로 강제
-
DDoS 보호 기본 제공, 추가로 Origin Shield 활성화 시 서버 부하 감소
- 오리진 근처 위치를 선택해 캐시를 중앙화하고, 엣지 서버는 먼저 Origin Shield를 조회
- “Stale Cache: While Origin Offline / While Updating” 옵션으로
- 오리진 장애 시에도 캐시된 콘텐츠 지속 제공
- 업데이트 중에도 이전 캐시를 임시로 제공
-
Edge Rule을 추가해 자동 생성된 pull zone 도메인을 실제 도메인으로 리디렉션
- 규칙 이름: “Default domain redirect”
- 동작: Redirect, 상태 코드 301
- 조건:
*://<slug>.b-cdn.net/*요청 시https://jola.dev{{path}}로 이동
마무리 및 평가
- 본 설정은 bunny.net의 기본 기능만 다루며, Edge Rules, 고급 캐시 구성, 보안 Shield, 비디오 스트리밍, Edge Scripting, Edge Containers 등은 아직 다루지 않음
- 대시보드의 통계·로그·메트릭이 매우 상세하며, 요청 단위로 캐시 여부와 문제를 추적 가능
- 향후 모든 서비스를 bunny.net으로 이전 중이며, S3 호환 스토리지 출시를 기대
- 개인 사용자에게도 Cloudflare 대안으로 충분히 경쟁력 있는 선택지임
Hacker News 의견들
-
긍정적인 블로그 글이라면 투명한 공개를 위해 페이지의 모든 링크가 Bunny Affiliate Program으로 연결되어 있음을 명시하는 게 좋을 것 같음
- 내가 링크를 너무 많이 넣은 걸 깨닫고 일부를 제거했음. 단지 Bunny에 제휴 프로그램이 있다는 게 흥미로워서 추가했을 뿐, 의도적으로 숨긴 건 아님
- 법률 전문가는 아니지만, 보상이 있는 추천을 공개하지 않으면 FTC 가이드라인 위반이 될 수 있음. 미국뿐 아니라 영국에도 비슷한 규정이 있는 것으로 보임
-
나는 bunny.net을 CDN과 DNS 용도로 사용 중임
무료 서비스는 언젠가 유료로 바뀔 수 있다는 불안이 있어서, 처음부터 소액이라도 내는 게 낫다고 생각함. $2에서 $3로 오르는 건 괜찮지만, 무료에서 $20로 바뀌는 건 위험함
게다가 개발자를 신경 써주는 작고 독립적인 회사들을 선호함. 그래서 bunny.net, transistor.fm, Plausible Analytics를 사용함- 그럴 때는 그냥 다른 제공자로 옮기면 됨. CDN과 DNS는 벤더 종속성이 거의 없어서, 설정을 내보내고 다른 곳에 가져오면 됨
- 논리적으로 보면 Cloudflare가 무료 사용량을 줄이는 정도의 조정만 할 가능성이 큼. 현실적으로는 서로 파괴적인 가격 정책을 피하려 하기 때문임. 작은 회사를 쓰는 건 여전히 좋은 선택임
- 무료 서비스는 결국 공급자를 돕는 형태라 사용자가 ‘상품’ 이 되기 쉬움. 돈을 내면 가치 교환이 명확해짐
- 하지만 유료 서비스도 갑작스러운 가격 인상이나 조건 변경이 있을 수 있음
- 나도 같은 이유로 bunny.net을 사용함. 인터넷 생태계의 다양성 유지를 위해서이기도 함
-
나는 Cloudflare Workers + Pages로 SaaS를 운영 중임. 서버리스 함수와 정적 사이트를 같은 저장소에서 배포할 수 있어 개발 경험이 매우 좋음
하지만 최근 CDN 엣지 캐시가 배포 후에도 오래된 HTML을 제공하는 문제를 겪었음. 디버깅이 어렵고, 어느 캐시 계층이 문제인지 추측해야 함
그래도 무료 티어로 시작하기엔 최고임. Workers, Pages, KV, R2로 거의 무료에 가까운 프로덕션 앱을 운영 가능함- Cloudflare의 가장 큰 장점은 wrangler CLI임. Claude Code와 함께 쓰면 설정과 디버깅을 완전히 자동화할 수 있음
- Bunny도 비슷한 기능이 있음. SQLite 호환 API와 엣지 함수도 제공함. 나는 지역별 디버깅 문제 때문에 dnsisbeautiful.com/global-http-availability라는 무료 툴을 만들었음
- 나도 같은 캐시 문제를 겪었고, 이를 해결하기 위한 스크립트를 공유한 사람도 있었음
- Bunny는 무료 티어는 없지만 선불 결제 방식이라 갑작스러운 과금 위험이 없음. 트래픽 폭증으로 수십만 달러가 청구되는 일은 없다는 점이 마음에 듦
- 우리는 배포 후 CI에서 캐시를 자동으로 비우도록 설정했음. 다만 캐시 전파 지연으로 인해 stale 콘텐츠가 다시 캐시될 수 있음
-
Cloudflare는 이제 단순한 CDN이 아니라 엣지 플랫폼임. 만약 Bunny로 쉽게 옮길 수 있다면, Cloudflare의 진짜 기능을 쓰고 있던 건 아님
WinterTC 같은 표준을 제대로 지원하지 않는 건 아쉬움. BunnySDK처럼 전용 serve 함수를 쓰는 건 오히려 더 심한 독점 종속임- 참고로 Cloudflare의 엣지 플랫폼도 꽤 폐쇄적임
- WinterTC는 HTTP 서버 시작 방식을 명시하지 않음. 최소한 Fetch API의 Request/Response 인터페이스만 요구함
-
우리는 Bunny를 여러 용도로 쓰고 있고 매우 만족 중임. 특히 지원 품질이 뛰어남. Cloudflare는 좋지만, 유료 엔터프라이즈 지원을 받지 않으면 한계가 있음. UpCloud도 지원이 훌륭함
-
“Cloudflare는 인터넷의 단일 실패 지점이다”라는 말은 자주 듣지만, 실제로는 더 복잡함
작은 서비스들이 다양하게 쓰이면 장애 분포가 달라질 수 있음. 대신 더 자주, 작은 규모의 장애가 생길 수도 있음
또한 Cloudflare의 인프라는 완전히 중앙집중적이지 않음. 일부 서비스는 지역별로 독립적임- 하지만 단일 제공자를 쓰는 건 여전히 단일 실패 지점임. 진짜 복원력을 원한다면 여러 제공자를 병행해야 함. 즉, 자체 오리진 서버를 운영하고 CDN은 최소한으로 써야 함
-
나는 1년 전에 Bunny로 옮겼고 매우 만족 중임. EU 기반 CDN을 지원할 수 있다는 점도 좋고, Magic Containers 덕분에 전 세계적으로 확장 가능한 API를 월 $1 수준으로 운영 가능함
- Magic Containers는 특히 소규모 프로젝트에 적합함. Cloudflare Durable Objects와 비슷한 기능을 훨씬 저렴하게 제공함
-
이 글이 광고처럼 보일 수도 있겠지만 실제로는 단순한 경험 공유였음. 제휴 링크는 명시했고, 숨긴 의도는 없음
- “단일 실패 지점에서 또 다른 단일 실패 지점으로 옮겼다”는 비판은 오해임. 작성자는 자신의 사이트가 아니라 인터넷 전체의 중앙화를 우려한 것임. Bunny는 미국 중심 구조에 대한 대안임
- 일부는 이 스레드를 스팸으로 신고했음
-
한 가지 주의할 점은, 교육기관 등에서
*.b-cdn.net도메인을 차단하는 경우가 많다는 것임- 우리도 Cloudflare R2를 CDN으로 썼다가 유럽 정부 기관 일부에서 자산이 차단되는 문제를 겪었음. Bunny로 옮기니 모두 해결됨
-
아쉬운 점은 무료 호스팅이 없음임. 트래픽이 적어도 월 1유로(VAT 별도)는 내야 함
또한 CNAME flattening을 지원하는 DNS 제공자가 많지 않음. 캐시 무효화도 두 번 해야 제대로 반영됨- 가격을 놀리는 사람도 있지만, 핵심은 금액이 아니라 진입 장벽임. 신용카드를 입력해야 한다는 점이 문제임
- “1유로가 너무 비싸다니”라며 비꼬는 반응도 있었음
- 사실 무료 티어가 없는 건 버그가 아니라 기능임. 예측 가능한 비용 구조를 위한 선택임
- GitHub Pages처럼 무료지만 자주 다운되는 서비스와 비교하면, 1유로는 충분히 낼 만한 금액임
- 결국 월 1.20유로면 되는 일임