Skip to main content
공개 노트

Cloudflare Python Workers 정식 출시: 이제 파이썬으로 엣지에서 데이터와 AI를 직접 다룬다

Views 10약 7분생성형 AI 활용
Summary

Cloudflare는 2026년 9월 21일 자사의 서버리스 컴퓨팅 플랫폼에서 파이썬을 실행할 수 있는 Cloudflare Python Workers를 정식 출시(Generally Available, GA) 단계로 전환했다고 발표했습니다.12 2년간의 프리뷰를 거쳐 안정화 단계에 접어든 이번 조치로, 파이썬은 Cloudflare 개발자 플랫폼에서 완전한 1등 시민 언어로 지원됩니다.12

서버리스 엣지 환경은 그동안 빠른 초기 구동 속도와 가벼운 런타임 특성 때문에 자바스크립트나 러스트 중심이었습니다. 반면 파이썬은 풍부한 AI 및 데이터 라이브러리 생태계에도 불구하고 인터프리터 자체의 구동 비용 때문에 분산 엣지 환경 적용이 까다로웠습니다. 이번 GA 전환은 CPython 기반 런타임을 WebAssembly로 패키징하고, 개발 도구와 플랫폼 바인딩을 파이썬 친화적으로 통합하여 엣지 서버리스의 진입 장벽을 낮춘 데 의의가 있습니다.

Pyodide와 메모리 스냅샷 기반의 엣지 실행 아키텍처

Cloudflare Python Workers는 Cloudflare의 V8 기반 오픈소스 런타임인 workerd 위에서 동작합니다.1 런타임의 핵심 엔진은 CPython 표준 구현체를 WebAssembly로 컴파일한 Pyodide입니다.13 개발자가 작성한 파이썬 코드는 V8 격리 환경(Isolate) 내부에서 Pyodide 인터프리터를 통해 직접 해석되고 실행됩니다.3

서버리스 인프라에서 인터프리터 언어를 도입할 때 가장 큰 문제는 콜드 스타트(초기 기동 지연)입니다. Cloudflare는 이 지연을 줄이기 위해 배포 시점(uv run pywrangler deploy)에 초기화 작업을 선제적으로 수행하는 아키텍처를 도입했습니다.3 배포 명령이 실행되면 런타임이 파이썬 진입점 모듈과 최상위 수준(top-level)에서 임포트된 모든 의존성을 먼저 실행한 뒤, 해당 시점의 WebAssembly 선형 메모리(linear memory) 상태를 스냅샷으로 캡처합니다.3 이후 사용자 요청이 들어오면 전체 파이썬 환경을 처음부터 다시 부팅하지 않고, 미리 생성된 메모리 스냅샷을 Isolate에 로드해 즉각 실행 환경을 부트스트랩합니다.3

다만 WebAssembly 가상 머신(VM)의 샌드박스 구조상 명확한 제약이 존재합니다. 파이썬 표준 라이브러리의 multiprocessing과 threading 모듈은 WebAssembly VM 내부에서 작동하지 않습니다.1 따라서 단일 Isolate 안에서 멀티스레드나 멀티프로세스를 생성해 CPU 작업을 병렬화하는 패턴은 불가능하며, 병렬성이 필요한 연산은 글로벌 네트워크상에서 요청 단위로 독립된 Worker 인스턴스를 확장하는 아키텍처로 설계해야 합니다.

자바스크립트 변환 코드 제거와 ASGI, 소켓 계층 통합

베타 기간과 비교해 GA 버전에서 크게 달라진 점은 Cloudflare 플랫폼 바인딩과의 연동 방식입니다. 이전에는 KV나 D1, Cloudflare Queues 같은 인프라 서비스를 호출할 때 원격 프로시저 호출(RPC) 경계에서 to_js와 같은 함수를 써서 파이썬 딕셔너리를 자바스크립트 객체로 명시적 변환해야 했습니다.2 GA 버전에서는 이 유형 변환 로직이 런타임과 Python SDK 내부로 캡슐화되어, 추가적인 글루(glue) 코드나 자바스크립트 작성 없이 순수 파이썬 객체를 그대로 바인딩에 전달할 수 있습니다.2

웹 프레임워크 지원 방식도 서버리스 구조에 맞게 최적화되었습니다. 기존 파이썬 웹 개발에서는 Uvicorn이나 Gunicorn 같은 애플리케이션 서버 프로세스를 상시 구동하여 트래픽을 처리했습니다. 반면 Cloudflare Python Workers에서는 플랫폼 자체가 로드 밸런싱과 트래픽 확장을 담당하므로 컨테이너 내부에서 웹 서버를 띄울 필요가 없습니다.2 대신 workers.asgi 및 workers.wsgi 커넥터가 수신된 자바스크립트 HTTP 요청을 표준 ASGI 및 WSGI 구조로 직접 변환해 FastAPI, Django, Flask 등의 앱에 전달합니다.2

데이터베이스 연결 문제도 커스텀 시스템 콜을 통해 해결했습니다. 본래 WebAssembly 샌드박스는 운영체제의 POSIX 네트워킹 시스템 콜을 지원하지 않기 때문에 일반적인 파이썬 DB 드라이버가 TCP 소켓을 열지 못하고 실패했습니다.2 Cloudflare는 런타임의 Workers connect API를 기반으로 소켓 시스템 콜 브리지를 구현했습니다.2 그 결과 aiomysql이나 asyncpg 같은 표준 비동기 데이터베이스 드라이버가 코드 수정 없이 동작하며, Hyperdrive 바인딩을 통해 분산 환경에서도 PostgreSQL 및 MySQL 연결 풀링을 직접 활용할 수 있게 되었습니다.2

로컬 개발 환경과 5년 수명주기 관리 정책

Cloudflare Python Workers 프로젝트를 구성하는 진입점은 workers SDK 모듈의 WorkerEntrypoint 클래스를 상속받는 Default 클래스이며, 들어오는 요청은 async def fetch(self, request) 핸들러를 통해 처리됩니다.4 로컬 개발 환경을 구성하려면 개발 머신에 Python 3.12 이상과 패키지 관리자 uv, 그리고 Node가 설치되어 있어야 합니다.45

uvx --from workers-py pywrangler init 명령을 실행하면 CLI 개발 도구인 pywrangler가 workers-py라는 패키지명으로 개발 의존성에 추가된 pyproject.toml과 Wrangler 설정 파일이 생성됩니다.4 pywrangler는 로컬 개발 시 실제 클라우드와 동일한 환경을 재현하기 위해 123MB 크기의 workerd 바이너리를 사용하여 WebAssembly 상의 Pyodide 실행 과정을 완전히 시뮬레이션합니다.1 오픈소스 레포지토리(cloudflare/workers-py)는 도구 모음인 workers-py, 런타임 인터페이스인 workers-runtime-sdk, 그리고 Cloudflare D1·Durable Objects·R2·Access 연동을 지원하는 django-cf 모듈을 모노레포 구조로 관리하며, python-semantic-release와 규격화된 커밋(Conventional Commits)을 통해 패키지별로 버전을 독립 배포합니다.5

런타임의 하위 호환성과 수명 주기는 다음과 같은 규칙에 따라 관리됩니다:

  • 버전 도입과 호환성 날짜: CPython 신규 버전은 매년 8월 출시되며, 이에 대응하는 신규 Pyodide 버전은 6개월 뒤 발표됩니다.3 새로운 런타임은 설정 파일의 호환성 플래그(Compatibility Flag) 뒤에 격리되며, 개발자가 명시적으로 프로젝트의 '호환성 날짜(Compatibility Date)'를 갱신해야만 적용됩니다. 따라서 플랫폼 측의 업데이트로 인해 기존 운영 중인 서비스가 예기치 않게 중단되지 않습니다.3

  • 5년 지원 기간: 각 파이썬 버전은 출시 시점부터 5년의 공식 지원 기간(support window)을 갖습니다.3 Cloudflare의 하위 호환성 원칙에 따라 기간이 만료된 버전이라도 배포된 Worker의 작동 자체는 중단되지 않지만, 보안 패치 제공이 중단되며 지연 시간(latency)이나 CPU 사용량 측면의 성능 유지가 보장되지 않으므로 신규 프로젝트 도입은 제한됩니다.3

도입 전 고려해야 할 장점과 제약 조건

Cloudflare Python Workers는 파이썬 생태계의 소프트웨어 자산을 인프라 관리 부담 없이 글로벌 분산 네트워크에 배포할 수 있는 선택지를 제공합니다. FastAPI를 이용한 초소형 API 구축, Pydantic을 활용한 입력 데이터 유효성 검증, Langchain 및 Workers AI 기반의 경량 엣지 인퍼런스 파이프라인 구성에서 개발 속도를 높일 수 있습니다.24

그러나 도입 전에 프로젝트의 기술적 요건을 확인해야 합니다. 첫째, CPU 스레딩이나 멀티프로세싱에 의존하는 대용량 병렬 데이터 분석이나 연산 집약적인 작업에는 적합하지 않습니다. 해당 라이브러리는 WebAssembly 런타임 제약으로 인해 실행 중단 에러가 발생합니다.1 둘째, 로컬 소켓 시스템 콜 브리지가 구현되어 PostgreSQL 및 MySQL용 표준 드라이버는 작동하지만, 순수 C 확장에 깊게 의존하거나 저수준 OS 호출을 필요로 하는 라이브러리는 여전히 Pyodide 호환 여부를 사전에 테스트해야 합니다.2 셋째, 배포 시점의 메모리 스냅샷이 초기 구동 속도를 크게 보완하더라도 WebAssembly 인터프리터 특유의 연산 오버헤드는 남아 있으므로, 극도로 엄격한 마이크로초 단위 응답이 필요한 시스템은 자바스크립트나 러스트 기반 구현과의 레이턴시 벤치마크 비교가 선행되어야 합니다.

참고

1Cloudflare Python Workers are now generally available

2Python Workers are now generally available

3How Python Workers Work · Cloudflare Workers docs

4Write Cloudflare Workers in Python · Cloudflare Workers docs

5GitHub - cloudflare/workers-py: Write Cloudflare Workers in 100% Python via Pyodide.

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기