Cloudflare 블로그가 EmDash로 옮겼다: 7,000RPS 시험과 1% 점진 배포
Cloudflare가 사전 1.0 CMS를 Workers에 올리며 부하 시험, 다층 캐시, 서비스 바인딩, 자동 폴백과 점진 배포를 결합한 과정을 공개했다.
Cloudflare가 2026년 8월 24일 자사 블로그를 EmDash로 옮긴 과정을 공개했다. 8월 12일 실제 전환한 이 프로젝트는 사전 1.0 단계의 콘텐츠 관리 시스템을 Cloudflare Workers에서 운영하면서, 순간 5,000RPS를 넘는 트래픽에 대비한 시험과 점진 배포를 함께 수행한 사례다.
무엇이 바뀌었나
새 구성은 Astro 기반 EmDash를 Worker에서 실행하고 Workers Cache, Workers KV 기반 객체 캐시, PlanetScale용 Hyperdrive 통합을 겹쳐 사용한다. Cloudflare는 정적 파일의 99.5%, 전체 요청의 약 70%가 캐시에서 제공된다고 밝혔다. 평상시 약 75RPS인 블로그가 때때로 5,000RPS 이상으로 치솟는 트래픽 특성을 반영한 설계다.
부하 시험은 k6로 세 가지 시나리오를 만들었다. 점진적으로 평상시의 세 배까지 올리는 램프, 10분 동안 100RPS까지 올리며 한계를 찾는 브레이크포인트, 1분 동안 즉시 7,000RPS를 보내는 버스트다. 5xx 비율, p95 500ms와 p99 1,000ms 기준을 배포 판단에 사용했다.
개발자에게 왜 중요한가
이 사례의 가치가 특정 CMS 선택에만 있는 것은 아니다. 새로운 데이터·렌더링 계층과 기존 서비스를 동시에 두고, 실제 트래픽 일부만 새 경로로 보낸 뒤 관측 결과에 따라 비율을 높였다. 1%에서 5%, 15%로 늘려 당일 100% 전환했으며, 새 서비스가 500 오류를 내면 기존 블로그로 되돌리는 프록시 Worker를 유지했다.
두 Worker 사이는 공개 호스트 이름을 거치지 않는 서비스 바인딩1으로 연결했다. Cloudflare 문서에 따르면 호출 대상은 먼저 배포해야 하고, 호출자는 비동기 결과를 기다려야 한다. Cloudflare Access의 인증 문맥도 다음 Worker에 자동 전파되지 않으므로 내부 연결이라는 이유로 사용자 인증을 가정해서는 안 된다.
기존 프로젝트에 미치는 영향
이번 발표는 Workers 런타임의 새 버전이나 보안 취약점 패치 공지가 아니다. 고객 프로젝트가 즉시 마이그레이션해야 할 버전·CVE·지원 종료 변경은 제시되지 않았다. EmDash는 전환 시점에도 1.0 이전이었고, 예약 발행은 0.19.0에서야 동작했다고 Cloudflare가 설명했다. 기능 목록보다 실제 편집·예약·검색·현지화·SEO 흐름을 먼저 검증해야 한다.
서비스 바인딩을 쓰는 프로젝트는 배포 순서와 하위 호환성을 확인해야 한다. 대상 Worker에 새 메서드를 호환 방식으로 먼저 추가하고, 호출자 배포 뒤 사용하지 않는 메서드를 제거하는 순서가 안전하다. 한 요청에서 Worker 호출은 최대 32회이며 각 서비스 바인딩 호출이 이 한도에 포함된다.
적용·업데이트 전 확인 사항
- 평상시, 점진 증가, 최대 순간 부하를 분리하고 오류율과 p95·p99 기준을 미리 정한다.
- 신·구 경로를 동시에 운영하며 자동 폴백 조건과 데이터 쓰기 충돌 가능성을 시험한다.
- 1% 같은 소량 트래픽부터 시작해 관측 지표가 안정될 때만 비율을 높인다.
- 예약 발행, 미디어, 검색, SEO, 현지화와 편집기 기능을 운영자 관점에서 끝까지 실행한다.
- 서비스 바인딩 대상부터 배포하고 인터페이스 변경은 하위 호환 단계로 나눈다.
- 내부 Worker 호출에서도 인증·권한 문맥을 명시적으로 전달하고 검증한다.
Cloudflare의 결과를 모든 사이트의 성능 보장으로 일반화할 수는 없다. 다만 사전 부하 시험, 다층 캐시, 점진 배포, 자동 폴백과 호환 배포 순서를 하나의 전환 계획으로 묶은 점은 플랫폼과 규모가 다른 팀에도 적용할 수 있다.
출처
- Cloudflare — The Cloudflare Blog: Brought to you by EmDash (2026-08-24)
- Cloudflare Docs — Service bindings (updated 2026-08-18)
- EmDash GitHub repository — Releases
- Grafana k6 documentation
1 서비스 바인딩: 공개 URL을 통하지 않고 한 Worker가 다른 Worker의 메서드나 요청 처리기를 호출하도록 연결하는 기능.