RSS듀오랩스
웹 인프라

Cloudflare Workers와 Pages: 정적·동적으로 나누면 틀리는 이유

작성자
듀오랩스 대표·10분 읽기

Workers 설정 파일에는 정적 자산 디렉터리를 가리키는 항목이 있습니다.

"assets": {
  "directory": "dist/client",
  "binding": "ASSETS"
}

Pages에는 서버 코드를 놓는 functions/ 디렉터리가 있습니다. 이름만 보면 둘이 서로 남의 일을 하고 있습니다. 정적 사이트 호스팅이라는 Pages가 서버 코드를 돌리고, 엣지 함수 실행 플랫폼이라는 Workers가 CSS 파일을 서빙합니다.

이 어긋남이 두 제품을 고를 때 사람들이 헤매는 이유의 대부분이라고 저는 봅니다.

Pages Functions는 처음부터 Workers였습니다

흔히 이렇게 나눕니다. Pages는 정적 사이트용이고 Workers는 동적 코드용입니다. 이름에서 자연스럽게 나오는 구분이고, 한때는 맞았습니다.

지금은 두 방향 모두에서 깨집니다. Workers는 정적 자산을 서빙하고, Pages는 서버 사이드 렌더링을 돌립니다. 그런데 더 근본적인 문제가 있습니다. 런타임 차원에서 이 구분은 애초에 존재한 적이 없습니다.

Cloudflare가 Pages Functions의 정식 출시를 알리며 쓴 문장이 이렇습니다.

Though called "Functions" in the context of Pages, these functions running on our Cloudflare network are Cloudflare Workers in "disguise".

(Spice up your sites on Cloudflare Pages with Pages Functions General Availability, 2022년 11월 17일)

Pages에서 함수를 하나 배포하면 그건 Workers입니다. 이름표만 다릅니다. 같은 런타임에 껍데기가 둘 있었던 것이지, 성능이나 실행 모델이 다른 두 엔진이 있었던 적은 없습니다.

그래서 "어느 쪽이 더 빠른가", "어느 쪽이 더 무거운가" 같은 질문은 대부분 답이 없습니다. 질문 자체가 성립하지 않습니다.

두 제품은 서로의 결핍을 메우며 수렴했습니다

그럼 왜 둘이 생겼는가. 출발점이 반대였기 때문입니다.

시점 사건
2017년 9월 Workers 발표. 엣지에서 코드를 실행하는 것이 전부였고 정적 파일을 올릴 방법이 없었습니다
2020년 12월 17일 Pages 오픈 베타. Netlify, Vercel과 같은 자리를 노린 정적 사이트 호스팅이었습니다
2021년 4월 12일 Pages 정식 출시
2021년 11월 Pages Functions 오픈 베타. 정적 호스팅에 서버 로직이 붙습니다
2022년 11월 17일 Pages Functions 정식 출시
2025년 4월 8일 Workers Static Assets. 함수 플랫폼에 정적 자산이 붙습니다

Workers는 코드에서 시작해 정적 파일 쪽으로 걸어왔고, Pages는 정적 파일에서 시작해 코드 쪽으로 걸어왔습니다. 2025년 4월에 두 경로가 만났고, 그 시점에 Cloudflare가 한쪽을 골랐습니다.

Now that Workers supports both serving static assets and server-side rendering, you should start with Workers. Cloudflare Pages will continue to be supported, but, going forward, all of our investment, optimizations, and feature work will be dedicated to improving Workers.

"계속 지원한다"와 "앞으로의 모든 투자는 Workers에"가 한 문장에 같이 있습니다. 종료 선언은 아니지만 방향은 분명합니다.

실제로 갈리는 것은 배포 단위입니다

기능표를 보기 전에 이걸 먼저 잡아야 나머지가 설명됩니다. 두 제품은 무엇을 배포의 주인공으로 두는가가 다릅니다.

Pages에서 주인공은 빌드 산출물 디렉터리입니다. dist/를 통째로 올리면 사이트가 됩니다. 서버 로직이 필요하면 functions/ 폴더에 파일을 놓고, 파일 경로가 곧 URL 경로가 됩니다. 함수는 사이트에 얹히는 부속입니다.

Workers에서 주인공은 스크립트 하나입니다. fetch 핸들러가 진입점이고, 모든 요청이 일단 그리로 들어옵니다. 정적 자산은 설정 파일의 assets 항목으로 붙이는 것이고, 라우팅은 코드나 프레임워크가 합니다. 파일 기반 라우팅이 네이티브로 없어서, 마이그레이션 문서도 Workers에서는 "프레임워크나 컴파일이 필요하다"고 적습니다.

기능 차이는 그 선택에서 파생됩니다

Workers에만 있는 것 Pages에만 있는 것
Durable Objects (네이티브) Cloudflare 존 밖의 커스텀 도메인
Cron Triggers 파일 기반 라우팅 (네이티브)
점진적 배포 Pages Plugins
Workers Logs, Logpush, Tail Workers 커스텀 브랜치 별칭
Cloudflare Vite 플러그인
Queue Consumers
Email Workers, Rate Limiting 바인딩

롤백, 프리뷰 URL, 로컬 개발, 커스텀 헤더와 리다이렉트, Smart Placement, 그리고 KV·R2·D1을 포함한 대부분의 바인딩은 양쪽 다 됩니다.

목록이 한쪽으로 기운 것은 우연이 아닙니다. Cron Trigger, Durable Objects, Queue Consumer는 전부 "요청 없이도 코드가 도는" 기능입니다. 배포의 주인공이 스크립트인 쪽에서는 자연스럽게 나오지만, 주인공이 정적 디렉터리인 쪽에서는 얹을 자리가 마땅치 않습니다. 반대로 파일 기반 라우팅은 디렉터리가 주인공일 때 공짜로 나오는 성질입니다.

Pages 쪽 네 항목 중에서 선택을 실제로 뒤집을 만한 것은 하나뿐이라고 저는 봅니다. 도메인을 Cloudflare 존에 넣지 않을 작정이라면 그때는 Pages가 답입니다. 나머지 셋은 대안이 있거나 아쉬운 정도에서 끝납니다.

정적 자산 요청은 과금되지 않습니다

가격은 같은데, 무엇을 세느냐가 다릅니다. 마이그레이션 문서의 문장이 이렇습니다.

Requests for static assets on Workers are free, and Pages Functions invocations are charged at the same rate as Workers.

Workers에서 CSS, JS, 폰트, 이미지를 받아가는 요청은 무료 플랜의 하루 10만 건 한도를 소비하지 않습니다. 한도를 쓰는 것은 Worker 코드가 실제로 도는 요청뿐입니다.

이 구분은 생각보다 크게 작동합니다. 페이지 하나를 여는 데 문서 요청은 한 번이지만 자산 요청은 보통 열 개가 넘습니다. 자산까지 셌다면 무료 한도의 체감이 완전히 달랐을 겁니다.

지금 고를 때 무엇이 달라지는가

정리하면 판단 기준은 두 개로 줄어듭니다.

이미 Pages에서 잘 돌고 있는 사이트라면 옮길 이유가 없습니다. Cloudflare가 계속 지원한다고 명시했고, 마이그레이션은 그 자체로 위험을 만듭니다. 새 기능이 필요해지는 시점이 오면 그때 옮기면 됩니다.

새로 시작한다면 Workers입니다. Cloudflare 자신이 그렇게 쓰라고 적어뒀고, 앞으로 추가될 것들이 그쪽에만 갑니다. 프레임워크 스캐폴딩 도구도 이미 그쪽으로만 안내합니다. 예외는 Cloudflare 존 밖 도메인이 필요한 경우입니다.

여기까지가 확실한 부분

Cloudflare는 Pages를 종료한다고 말하지 않았습니다. 기한도 제시하지 않았습니다. 확실한 것은 신규 기능이 Workers에만 간다는 것 하나뿐이고, 그 이후가 어떻게 될지는 명세가 아니라 회사의 계획이라 바뀔 수 있습니다. 저도 모릅니다.

다만 같은 회사가 비슷한 상황을 처리한 전례가 하나 있습니다. Workers Sites는 KV에 정적 파일을 얹어 서빙하던 예전 방식인데, 지금 문서는 이렇게 정리돼 있습니다.

It has been deprecated in Wrangler v4, and the Cloudflare Vite plugin does not support Workers Sites. ... Do not use Workers Sites for new projects.

(Workers Sites 문서)

투자 중단에서 시작해 신규 사용 금지 권고로 끝난 사례입니다. Pages가 같은 경로를 밟는다는 근거는 없습니다. Pages는 사용자 규모가 다르고 Cloudflare가 지원을 명시했습니다. 그래도 "지원은 계속하되 투자는 안 한다"는 문장을 읽을 때 어느 정도의 무게로 읽어야 하는지에 대한 참고는 됩니다.

마지막 수정:

공유하실 때는 출처(Duolabs)와 원문 주소를 표시해 주세요.