Cloudflare는 Python 애플리케이션을 Cloudflare Workers 환경에서 실행하는 방법으로 처음 선보인 지 2년 만에 Python Workers를 정식 공개(GA)한다고 발표했다. 이번 조치에 따라 Python은 Cloudflare Developer Platform에서 공식 지원 언어가 되었으며, JavaScript로 연결 계층을 작성하지 않고도 잘 알려진 라이브러리와 프레임워크를 사용하고 Cloudflare 서비스에 연결할 수 있게 됐다.
새로운 환경에서는 FastAPI, Django, Flask 프레임워크와 함께 WSGI 또는 ASGI와 호환되는 다른 프레임워크도 실행할 수 있다. Cloudflare는 workers.asgi 및 workers.wsgi와 같은 커넥터를 제공해 Workers 요청을 Python 애플리케이션이 기대하는 구조로 변환하며, Workers 플랫폼은 요청 수신, 확장 및 부하 분산을 담당한다.
Cloudflare 서비스와의 직접 통합
주요한 실질적 변화 중 하나는 Python에서 Cloudflare 바인딩을 직접 지원한다는 점이다. 이전에는 Queues와 같은 서비스에 Python 객체를 전달하려면 Pyodide와 JavaScript API를 사용해 수동으로 JavaScript 객체로 변환해야 했다. 이제는 Workers 환경과 Python 패키지가 형 변환을 처리하므로 일반적인 Python 문법으로 호출을 사용할 수 있다.
여기에는 Workers AI, R2, D1, Hyperdrive, Durable Objects, Queues 및 Workflows가 포함된다. 또한 Cloudflare는 Dynamic Workers를 사용해 다른 Worker 내부에서 Python Worker를 생성할 수 있도록 한다.
데이터베이스 및 네트워크 연결
Python 애플리케이션은 이제 Hyperdrive를 사용해 PostgreSQL 및 MySQL 데이터베이스에 연결할 수 있다. TCP 소켓 지원이 없었던 것은 WebAssembly 내부에서 데이터베이스 드라이버를 실행하는 데 장애물이었다. 이러한 드라이버는 일반적으로 네트워크를 위한 POSIX 시스템 호출에 의존하기 때문이다. Cloudflare에 따르면 회사는 Workers connect API를 사용해 소켓 호출을 구현하는 방식으로 이 문제를 해결했으며, 이에 따라 aiomysql 및 asyncpg와 같은 드라이버는 기본 환경의 세부 사항을 알기 위한 수정 없이 작동한다.
인공지능 개발자에게 무엇이 달라지는가?
이제 openai, langchain, mcp와 같은 라이브러리를 Python Workers에서 실행할 수 있다. 또한 Cloudflare는 requests 및 httpx와 같은 HTTP 클라이언트가 WebAssembly 환경에서 JavaScript fetch를 통해 요청을 전달할 수 있도록 지원했다. 개발자는 이러한 라이브러리를 Workers AI와 결합해 Cloudflare 네트워크의 GPU에서 추론을 수행하거나, Cloudflare AI Gateway를 통해 요청을 전달할 수 있다.
회사는 Queues, Workflows, Workers AI 및 R2를 사용한 인공지능 작업 조정, Bluesky Jetstream 및 Durable Objects를 통한 실시간 이벤트 스트림 처리, 그리고 Vectorize를 활용한 MCP 서버 및 RAG 시스템을 포함하는 애플리케이션 예시를 제시한다.
제한 사항과 남은 질문
Python Workers는 Pyodide를 사용해 WebAssembly로 컴파일된 Python 인터프리터에 의존한다. 따라서 C, C++ 또는 Rust로 작성된 네이티브 확장 기능을 포함하는 패키지는 WebAssembly 플랫폼을 위한 맞춤형 빌드가 필요하다. Cloudflare는 PEP 783 제안과 관련된 PyEmscripten 표준 및 업데이트된 빌드 도구가 패키지 생태계 확장에 도움이 될 것이라고 말하지만, 회사는 이 표준의 도입이 아직 진행 중이며 일부 패키지는 아직 지원되지 않을 수 있음을 인정한다.
certi.news의 분석: 이번 변화는 단순히 새로운 프로그래밍 형식을 추가하는 데 그치지 않고, 엣지에 분산된 Python 서비스를 구축할 때 JavaScript에 대한 의존도를 줄이는 데 있다. 이는 Python 애플리케이션이나 라이브러리를 보유하고 이를 Cloudflare 서비스와 연결하려는 개발팀에 중요하지만, 기존 애플리케이션을 프로덕션으로 이전하기 전에 패키지 호환성과 WebAssembly의 제약을 검토해야 할 필요성을 없애지는 않는다. 또한 성능과 메모리 효율을 개선하고 더 많은 패키지를 지원하겠다는 Cloudflare의 향후 약속은 정식 공개가 플랫폼 작업의 끝이 아니라 중요한 성숙 단계임을 보여준다.