
목차
Cloudflare의 무료 플랜은 개인 프로젝트나 소규모 비즈니스에 강력한 성능과 보안을 제공합니다. 하지만 "무료"라는 말 뒤에는 숨겨진 제한들이 존재하며, 이를 모르고 사용하다가는 예기치 않은 서비스 중단을 겪을 수 있습니다.
이 글에서는 Cloudflare Workers, Pages, KV, Durable Objects 등 주요 서비스의 무료 플랜 제한을 총정리하고, 안정적인 서비스 운영을 위한 실용적인 팁까지 공유합니다.
핵심 요약 (TL;DR)
- 요청 한도: Workers와 Pages Functions를 합산하여 하루 10만 건, 분당 1,000건의 버스트 요청이 허용됩니다. 매일 오전 9시(UTC 00:00)에 초기화되며, 한도 초과 시 요청을 우회(Fail open)하거나 에러를 반환(Fail closed)하도록 선택할 수 있습니다.
- 스토리지 한도:
- KV: 일일 읽기 10만, 쓰기/리스트/삭제 각 1,000건, 총 저장 공간 1GB가 제공됩니다.
- Durable Objects (DO): 일일 요청 10만 건, 연산 시간 13,000 GB-초, 총 저장 공간 5GB가 제공됩니다.
- 데이터베이스 및 캐시:
- Hyperdrive: 데이터베이스 쿼리는 하루 10만 건까지 가능합니다.
- Cache API: 요청당 50회 사용, 객체당 최대 512MB까지 캐시할 수 있습니다.
- 빌드 한도:
- Pages: 월 500회 빌드가 가능하며, 빌드 시간은 20분으로 제한됩니다.
- Workers: 월 3,000분의 빌드 시간이 제공되며, 동시 빌드는 1개만 가능합니다.
- 한국 사용자 주의사항: 모든 일일 한도는 한국 시간(KST) 기준 매일 오전 9시에 초기화됩니다. 원본 서버의 트래픽 비용(Egress)과 봇 제어, 캐시 전략을 반드시 함께 고려해야 합니다.
1. 요청 한도: 하루 10만 건, 그 이상은?
가장 먼저 부딪히는 한계는 바로 요청(Request) 제한입니다. Workers와 Pages Functions는 계정 단위로 사용량이 합산되므로 주의가 필요합니다.
- Workers/Pages Functions
- 일일 한도: 계정당 하루 10만 건의 요청을 처리할 수 있습니다. 이 한도는 매일 오전 9시(UTC 00:00)에 초기화됩니다.
- 버스트 한도: 트래픽이 일시적으로 몰릴 경우를 대비해 분당 1,000건까지 처리할 수 있습니다.
- 합산 기준: Pages Functions와 Workers 요청은 합산됩니다. 예를 들어, Pages Functions에서 5만 건, Workers에서 5만 건을 사용하면 일일 한도 10만 건을 모두 소진하게 됩니다.
- 한도 초과 시 대처법:
- Fail open (기본값): 워커 실행을 건너뛰고 원본 서버로 요청을 바로 전달합니다. 마치 워커가 없는 것처럼 동작합니다.
- Fail closed: 방문자에게 1027 에러 페이지를 표시합니다. 봇 차단이나 보안 관련 워커는 이 옵션을 사용하는 것이 안전합니다.
- 오류 확인: 버스트 한도를 초과하면
429
또는1015
오류가 발생할 수 있습니다. Cloudflare 대시보드의Security > Events
메뉴에서ruleID=worker
로 필터링하여 확인할 수 있습니다.
- 로그 및 분석
- 무료 플랜에서는 하루 20만 건의 로그 이벤트를 수집하며, 3일간 보관됩니다. Fail open으로 인해 워커가 실행되지 않은 요청은 로그에 남지 않을 수 있으므로, 외부 모니터링 도구를 함께 사용하는 것이 좋습니다. (참고: Slack 무료 플랜의 90일 메시지 보관 정책)
요청 한도 요약표
항목 | 무료 한도 | 초기화 | 초과 시 동작 |
---|---|---|---|
Workers + Pages Functions | 100,000건/일 (계정 단위) 1,000건/분 (버스트) |
매일 오전 9시 (UTC 00:00) | Fail open/closed 선택 |
Subrequests (워커 내부 호출) | 50회/요청 | 즉시 | 요청 실패 |
동시 외부 연결 | 6개/요청 | 즉시 | 추가 연결 제한 |
2. 스토리지 및 데이터 제한: KV, Durable Objects, Cache API
동적 데이터를 처리하기 위한 스토리지 역시 제한이 존재합니다. 각 서비스의 특성과 한도를 파악하고 용도에 맞게 사용해야 합니다.
자원별 제한 요약표
자원 | 단위 | 무료 한도 | 초기화 | 초과 시 동작 |
---|---|---|---|---|
KV | 읽기/쓰기/삭제 | 읽기 10만/일 쓰기/리스트/삭제 각 1천/일 저장 공간 1GB |
매일 오전 9시 (UTC 00:00) | 해당 연산 실패 |
키(Key)당 쓰기 | 초당 1회 권장 (즉시 일관성 아님) | - | 잦은 쓰기 시 지연/충돌 발생 | |
Durable Objects (SQLite) | 요청 | 100,000건/일 | 매일 오전 9시 (UTC 00:00) | 요청 실패 |
연산 시간 | 13,000 GB-s/일 | 매일 오전 9시 (UTC 00:00) | 연산 실패 | |
저장 공간 | 총 5GB | 월 과금 주기 | 저장 불가 | |
Cache API | 사용 횟수 | 50회/요청 | 즉시 | 요청 실패 |
객체 크기 | 512MB | - | 캐시 불가 | |
Hyperdrive | DB 쿼리 | 100,000건/일 | 매일 오전 9시 (UTC 00:00) | 쿼리 실패 |
💡 보너스 팁: Cloudflare D1
SQLite 기반의 관계형 데이터베이스인 D1 역시 무료 플랜으로 일일 읽기 500만 건, 쓰기 10만 건, 저장 공간 5GB를 제공합니다. Durable Objects와 함께 사용하면 강력한 데이터 처리 환경을 구축할 수 있습니다.
3. 빌드 및 배포 제한: Pages와 Workers
CI/CD를 통해 코드를 배포할 때도 월간 빌드 횟수와 동시성 제한이 적용됩니다.
- Cloudflare Pages
- 월 500회의 빌드가 가능하며, 각 빌드는 20분 내에 완료되어야 합니다.
- 단일 파일의 최대 크기는 25MiB로 제한됩니다.
- 동시 빌드 수는 계정 플랜에 따라 결정됩니다.
- Workers Builds (CI/CD 연동)
- 무료 플랜에서는 월 3,000분의 빌드 시간이 제공됩니다.
- 동시 빌드는 1개로 제한되어, 이전 빌드가 끝나야 다음 빌드가 시작됩니다.
- Git이 아닌 외부 CI/CD 도구를 사용한다면 Direct Upload 방식을 활용하여 Pages의 빌드 횟수를 아낄 수 있습니다.
빌드 제한 요약표
대상 | 무료 한도 | 동시성 | 타임아웃 |
---|---|---|---|
Pages 빌드 | 500회/월 | 계정 기준 | 20분 |
Workers Builds | 3,000분/월 | 1개 | 20분 |
4. 한국 사용자를 위한 실용 팁
한국에서 Cloudflare를 사용할 때 특히 유의해야 할 점들을 정리했습니다.
- 리셋 시간 확인하기: 모든 일일 한도는 UTC 00:00 기준으로 초기화됩니다. 한국 시간으로는 매일 오전 9시에 해당합니다. 데이터 리포트나 크론 잡(Cron Job)은 오전 9시 10분 이후에 실행하도록 설정하는 것이 안전합니다.
- 캐시 적중률 높이기: 정적 파일(CSS, JS, 이미지)은 Workers가 아닌 Pages의 정적 자산으로 분리하세요. 정적 자산 요청은 무료이며 무제한입니다. 25MiB를 초과하는 대용량 파일은 R2와 퍼블릭 버킷을 조합하는 것이 효율적입니다.
- 트래픽 스파이크 방어하기: 분당 1,000건의 버스트 한계는 생각보다 낮을 수 있습니다. Early Hints나 캐시 키 최적화를 통해 불필요한 워커 호출을 최소화하여 스파이크 트래픽에 대비하세요.
- 기본적인 봇 차단하기: 무료 플랜에서도 Bot Fight Mode를 활성화하여 단순 봇의 접근을 막을 수 있습니다. 구글봇과 같은 주요 검색 엔진 크롤러는 자동으로 허용되니 안심하고 사용하세요.
- 국내 응답 속도: Cloudflare는 전 세계에 분산된 에지 네트워크를 사용합니다. 한국 사용자의 요청은 서울 데이터센터에서 처리되어 빠른 응답 속도를 보장합니다.
- 원본 서버 비용 절약하기: 워커가 원본 서버(예: NCP, AWS)의 데이터를 자주 호출한다면, 해당 클라우드 서비스의 아웃바운드 트래픽 비용(Egress Cost)이 발생합니다. 이미지나 다운로드 파일이 많을수록 이 비용이 커지므로, R2나 캐시를 적극 활용하여 원본 서버 호출을 줄여야 합니다. (참고: NCP 아웃바운드 요금 계산 방법)
5. 언제 유료 플랜으로 업그레이드해야 할까?
다음과 같은 신호가 보인다면 유료 플랜(Pro/Business 또는 Workers Paid) 전환을 고려해볼 시점입니다.
- 요청량이 한계에 가까워질 때: 일일 요청량이 주 3회 이상 8만 건을 넘거나, 대시보드에서 429/1015 에러가 관찰될 때.
- CPU 실행 시간이 부족할 때: 무료 플랜의 CPU 실행 시간(10ms)으로는 무거운 작업(긴 서버 사이드 렌더링, AI 추론 등)을 처리하기 어렵습니다. 유료 플랜은 최대 5분까지 허용됩니다.
- Subrequest 한계에 도달했을 때: 워커 내부에서 여러 외부 API를 호출하다가 요청당 50회 제한에 가까워졌을 때.
- 스토리지가 부족할 때: KV 저장 공간 1GB, Durable Objects 저장 공간 5GB 또는 일일 연산 시간 한계에 도달했을 때.
- 데이터베이스 쿼리가 많을 때: Hyperdrive의 일일 쿼리 10만 건을 초과할 것으로 예상될 때.
- 빌드 병목 현상이 발생할 때: Pages 빌드(월 500회)나 Workers 동시 빌드(1개) 제한으로 인해 배포 파이프라인이 느려질 때.
- 비용 증빙이 필요할 때: 세금계산서 등 회계 처리를 위한 증빙이 필요하다면 유료 플랜이 필요합니다. (참고: Google Workspace 인보이스 처리 방법)
자주 묻는 질문 (FAQ)
Q. 일일 요청 10만 건을 초과하면 사이트가 바로 중단되나요?
A. 아닙니다. Fail open으로 설정된 경우 워커만 실행되지 않고, 사이트 자체는 원본 서버를 통해 정상적으로 보일 수 있습니다. Fail closed로 설정했다면 방문자는 1027 에러를 보게 됩니다.
Q. Pages Functions와 Workers 요청은 합산되나요?
A. 네, 두 서비스의 요청 수를 합산하여 일일 10만 건 한도를 계산합니다.
Q. 한도는 도메인별인가요, 계정별인가요?
A. 계정 단위입니다. 한 계정에 속한 모든 도메인과 *.workers.dev
주소의 사용량이 모두 합산됩니다.
Q. KV, Durable Objects, Hyperdrive 한도는 각각 별개인가요?
A. 네, 각 제품마다 별도의 일일 한도가 적용됩니다. 워커가 이 서비스들을 호출하면, 워커 요청 한도와 해당 스토리지/DB 한도가 동시에 차감될 수 있으니 사용량 모델링 시 유의해야 합니다.
Q. 정적 파일(이미지, CSS) 요청도 한도에 포함되나요?
A. 아니요. Cloudflare Pages를 통해 제공되는 정적 자산 요청은 무료이며, 횟수 제한이 없습니다. (단, Functions가 실행되지 않는 경우에 한함)
Q. KV 쓰기 속도가 왜 이렇게 느린가요?
A. KV는 전 세계에 데이터를 복제하는 데 시간이 걸리는 최종 일관성(Eventual Consistency) 모델을 사용합니다. 이 때문에 키(Key)당 쓰기 속도가 초당 1회 정도로 제한됩니다. 실시간 카운터나 세션 데이터처럼 즉각적인 쓰기가 필요하다면 Durable Objects나 D1을 사용하는 것이 좋습니다.
Q. 배포가 너무 잦아 CI/CD가 자꾸 막힙니다. 해결책이 있나요?
A. Pages의 월 500회 빌드 또는 Workers의 동시 빌드 1개 제한에 걸린다면, 모노레포(Monorepo) 내 프로젝트별 빌드 설정, PR(Pull Request) 프리뷰 선택적 빌드, Direct Upload 도입 등을 고려해볼 수 있습니다.
본 글은 Cloudflare 공식 문서를 요약 및 비교한 정보성 콘텐츠이며, 법적 또는 회계 자문이 아닙니다. 최신 요금 정책과 한도는 반드시 공식 문서와 대시보드에서 직접 확인하시기 바랍니다.