무료 호스팅 완전 비교 — GitHub Pages vs Cloudflare vs Vercel vs Netlify
무료 호스팅을 6개 이상 써봤다. 결론부터 말하면, 용도에 따라 답이 다르다
개발해오면서 가장 많이 바뀐 부분 중 하나가 호스팅이다. 예전엔 VPS에 SSH로 직접 접속해서 서버를 관리했지만, 이제는 정적 호스팅이 대부분의 웹사이트를 충분히 처리한다. 문제는 선택지가 너무 많다는 것이다.
이 글에서 다루는 플랫폼들(GitHub Pages, Cloudflare Pages, Vercel, Netlify)은 모두 무료로 시작할 수 있다. 하지만 각각 장단점이 뚜렷하고, 프로젝트 특성에 따라 최적의 선택이 달라진다.
기본 비교표
| 플랫폼 | 배포 속도 | 빌드 시간 | 대역폭 | 커스텀 도메인 | 환경변수 | API 라우트 |
|---|---|---|---|---|---|---|
| GitHub Pages | 5초 | 10분 제한 | 무제한 | 지원 | 제한적 | 없음 |
| Cloudflare Pages | 3초 | 50분 | 무제한 | 지원 | 지원 | 함수 지원 |
| Vercel | 2초 | 45분 | 100GB/월 | 지원 | 지원 | Serverless Functions |
| Netlify | 4초 | 45분 | 100GB/월 | 지원 | 지원 | Functions 지원 |
GitHub Pages — 가장 간단한 선택
이 블로그 자체가 GitHub Pages다. 무료인데 이 정도면 충분하다. 가장 큰 장점은 설정이 거의 없다는 것이다. 리포지토리를 public으로 만들고 Settings에서 Pages를 활성화하면 끝난다.
내가 GitHub Pages를 쓰는 이유:
- 코드와 배포가 같은 곳에 있다
- 푸시하면 자동 배포된다
- Jekyll을 기본 지원한다
- 대역폭 제한이 없다
하지만 한계도 있다. 정적 파일만 지원된다. 서버 로직이 필요하면 별도의 백엔드가 필요하다. 빌드 시간도 10분으로 제한된다.
# GitHub Pages 빌드 설정 (.github/workflows/pages.yml)
name: Deploy to GitHub Pages
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18'
- run: npm install
- run: npm run build
- uses: actions/upload-pages-artifact@v1
with:
path: './dist'
Cloudflare Pages — 가장 빠른 CDN
Cloudflare Pages의 가장 큰 강점은 전 세계 CDN이다. 응답 속도가 눈에 띄게 빠르다. 내가 테스트한 결과, GitHub Pages 대비 2-3배 빠른 응답 속도를 경험했다.
빌드 시간도 50분으로 넉넉하고, 환경변수 지원도 잘되어 있다. 최근에 Cloudflare Functions가 추가되면서 간단한 API 로직도 처리할 수 있다.
단점은 약간의 벤더락인이 있다는 것이다. Cloudflare의 다른 서비스들과 깊게 연동되어 있어서, 나중에 옮기려면 그 비용이 크다.
# Cloudflare Pages 함수 예제
export async function onRequest(context) {
const { request } = context;
if (request.method === 'POST') {
const data = await request.json();
return new Response(JSON.stringify({
status: 'ok',
data: data
}), {
headers: { 'Content-Type': 'application/json' }
});
}
return new Response('Method not allowed', { status: 405 });
}
Vercel — Next.js가 최고
Vercel은 Next.js를 만든 회사라서, Next.js 프로젝트라면 거의 최적이다. 배포도 가장 빠르다. GitHub 리포지토리만 연결하면 자동으로 모든 브랜치에 대한 preview deployment가 생성된다.
serverless functions도 완벽하게 지원되고, 환경변수 관리도 UI가 깔끔하다. 성능 분석 도구도 기본 제공된다.
무료 플랜의 한계는 매월 100GB 대역폭 제한이다. 트래픽이 많은 서비스라면 고려해야 한다. 또한 일부 고급 기능(Web Analytics 상세보기 등)은 유료다.
Netlify — 가장 유연한 선택
Netlify는 정적 사이트 생성기들과의 호환성이 가장 좋다. Hugo, Jekyll, Gatsby, 11ty 등 거의 모든 도구를 지원한다.
Form 처리 기능이 내장되어 있어서, 간단한 연락처 폼 정도는 별도 백엔드 없이 처리할 수 있다. 이것만으로도 큰 장점이다.
Edge Functions도 지원되므로, API 로직이 필요해도 대응할 수 있다.
실제 벤치마크 — 응답 시간
같은 정적 사이트를 4개 플랫폼에 배포하고 실제 응답 시간을 측정했다. 한국에서의 응답 시간이다:
- Cloudflare Pages: 평균 120ms (가장 빠름)
- Vercel: 평균 180ms
- Netlify: 평균 210ms
- GitHub Pages: 평균 250ms
다만 이는 정적 파일 크기나 이미지 최적화에 따라 크게 달라진다. 절대적인 기준은 아니다.
내 선택 기준
프로젝트 특성에 따라 선택한다:
- 블로그/문서 사이트: GitHub Pages. 설정 최소, 유지보수 부담 없음
- 포트폴리오 사이트: Cloudflare Pages. 빠른 응답 속도로 인상 좋음
- Next.js 프로젝트: Vercel. 완벽 호환성
- API가 필요한 경우: Netlify 또는 Cloudflare Pages. 둘 다 functions 지원
- 트래픽이 많은 경우: Cloudflare Pages. 대역폭 무제한
마이그레이션 팁
플랫폼을 바꾸려면 도메인만 변경하면 된다. DNS 레코드만 수정하면 된다는 뜻이다. 코드는 거의 손댈 게 없다.
단, Cloudflare Pages에서 GitHub Pages로 옮길 때는 Jekyll 설정을 확인해야 한다. Cloudflare의 빌드 환경이 약간 다를 수 있기 때문이다.
개발하면서 배운 것: 호스팅 선택은 초반에 가장 신경 써야 할 부분이 아니다. 나중에 충분히 바꿀 수 있다. 지금 가장 간단한 것부터 시작하고, 필요해지면 마이그레이션하면 된다.