Cloudflare가 Workers RPC 시스템을 확장해 Python과 JavaScript Workers 간 직접 메서드 호출을 지원한다. API 정의, 스키마, 직렬화 코드 없이 두 언어 사이에서 객체와 메서드를 투명하게 교환할 수 있게 됐다.
핵심 포인트- Python Worker에서 정의한 메서드를 JavaScript에서 직접 호출하고, 그 반대도 가능 — Service Binding이 두 언어를 RPC 브리지로 연결한다.
- Pyodide FFI와 커스텀 타입 변환 레이어를 결합해 Python ↔ JavaScript 기본 타입 자동 변환을 구현했다.
- int/float → Number, bool → Boolean, dict → Object, list → Array 매핑이 자동으로 처리된다.
- Request, Response, Blob 같은 Web API 객체는 runtime SDK가 RPC stub으로 래핑해 Python 네이티브 형으로 변환한다.
- Worker 간 RPC 호출은 네트워크를 거치지 않아 지연이 거의 없다.
상세 정리- 배경: 기존 Workers RPC는 동일 언어 Worker 간에만 동작해, Python 생태계(Pygments 등)를 JavaScript 워크플로우에 통합하려면 별도 HTTP API 레이어가 필요했다.
- 핵심 구현: workers-runtime-sdk Python 패키지 안에 Pyodide FFI와 타입 변환 레이어를 추가해, RPC 경계에서 언어별 타입 변환을 자동화했다.
- 타입 매핑: Python int/float → JS Number, bool → Boolean, dict → Object, list → Array. 역방향도 동일하게 처리된다.
- Web API 객체 처리: Request, Response, Blob처럼 Web 표준 타입은 runtime SDK가 RPC stub을 Python 네이티브 equivalent로 래핑해 개발자가 따로 변환할 필요가 없다.
- 실용 예시: JavaScript Worker가 Pygments(Python 라이브러리)를 사용해 문법 강조를 처리할 때, 커스텀 HTTP API 없이 Python Worker 메서드를 직접 호출하면 된다.
- 성능: RPC 호출은 같은 데이터센터 내 Worker 간 통신으로, 네트워크 경유 없이 처리돼 오버헤드가 최소화된다.
왜 읽나Python 라이브러리를 Workers 서버리스 환경에 통합하거나, 다언어 마이크로서비스 간 경계 없는 RPC를 구현하려는 엔지니어에게 유용하다.