CoWithMe

Cloudflare Workers에서 Python 지원: Pyodide와 WebAssembly로 서버리스 컴퓨팅 혁신

이영훈닷컴 2024. 7. 12. 09:29
728x90

Cloudflare Workers에서 이제 Python을 사용할 수 있게 되었습니다. Pyodide와 WebAssembly를 통해 통합된 이 기능은 다양한 장점을 제공합니다.

 

직접 통합된 Python 구현체:

Pyodide가 Cloudflare의 workerd 런타임에 내장되어 있어 별도의 빌드 단계나 외부 툴체인 없이 Python 코드를 실행할 수 있습니다.

 

광범위한 바인딩 지원:
Vectorize, Workers AI, R2, Durable Objects 등의 바인딩을 지원합니다.
FastAPI, Langchain, Numpy 등 인기 있는 Python 패키지를 사용할 수 있습니다.

 

WebAssembly와의 통합:
Cloudflare Workers는 2018년부터 WebAssembly를 지원해왔으며, Pyodide는 CPython을 WebAssembly로 포팅한 것입니다. Pyodide는 대부분의 Python 표준 라이브러리를 제공하며, JavaScript API를 호출할 수 있는 FFI를 제공합니다.

 

동적 링킹 지원:
많은 Python 패키지가 네이티브 라이브러리를 사용하는 C FFI를 필요로 합니다.
Pyodide는 동적 링킹을 통해 이러한 패키지들을 지원합니다.

 

서버 및 클라이언트 라이브러리:
비동기 클라이언트 라이브러리는 Fetch API를 사용하여 요청을 수행할 수 있습니다.
HTTP 클라이언트 라이브러리(httpx, urllib3, requests 등)는 기본적으로 작동하지 않지만, 비동기 클라이언트를 사용할 수 있습니다.

 

패키지 관리:
requirements.txt 파일에 패키지를 추가하여 Pyodide에서 직접 제공하는 Python 패키지의 부분 집합을 사용할 수 있습니다.

 

메모리 스냅샷:
Pyodide를 Worker에 주입하고 Cloudflare에 업로드하는 과정에서 메모리 스냅샷을 생성하여 냉동 시작 시간을 단축할 수 있습니다.

 

호환성 관리:
호환성 날짜와 플래그를 사용하여 새로운 동작과 하위 호환성이 없는 변경 사항을 명시적으로 선택할 수 있습니다.

 

Python 코드 작성:
Wrangler.toml 파일을 통해 .py 파일을 지정하고, npx wrangler@latest dev 명령을 실행하면 Pyodide가 자동으로 주입되어 Python 코드를 실행할 수 있습니다.

 

JavaScript와의 상호 작용:
Pyodide는 JavaScript에 대한 FFI를 제공하여 Python 코드에서 JavaScript 객체, 메소드, 함수 등을 직접 사용할 수 있습니다.

 

Cloudflare의 Python Workers 지원은 서버리스 아키텍처에서 Python의 사용을 확장하는 중요한 발전입니다. 이는 다음과 같은 영향을 미칠 수 있습니다:

개발자 유연성 확대:
Python 개발자들에게 더 많은 유연성과 선택권을 제공하며, 클라우드 기반의 애플리케이션을 JavaScript 없이도 구축할 수 있는 기회를 제공합니다.

 

데이터 과학과 머신 러닝:
Python은 데이터 과학과 머신 러닝 분야에서 널리 사용되며, Pyodide를 통한 WebAssembly 통합은 브라우저와 서버리스 환경에서 Python 코드를 실행할 수 있는 새로운 가능성을 열어줍니다.

 

성능 개선:
동적 링킹과 메모리 스냅샷 기술은 초기 로딩 시간을 단축시키고, 리소스를 효율적으로 공유할 수 있게 합니다. 이는 대규모 분산 시스템에서 중요한 성능 개선을 의미합니다.

 

호환성 관리:
호환성 날짜와 플래그를 통해 기존 코드의 안정성을 유지하면서도 새로운 기능과 업데이트를 수용할 수 있는 유연한 방법을 제공합니다.

 

Cloudflare의 Python Workers 지원은 서버리스 컴퓨팅 분야에서 Python이 중요한 역할을 할 수 있음을 보여줍니다. 이는 Python 개발자들에게 클라우드 서비스 통합 및 새로운 서비스 개발 시 더 많은 옵션을 제공할 것입니다.

 

 

 

FastAPI 클라우드 플레이어 적용 하는 순서

  • npm create cloudflear
  • 프로젝트 명 입력 한후 fastapi  로 2번 선택
  • 소스코드 변경
  • npm run deploy

다음주에는 aws 람다를 활용한 fastapi 자료 찾아가면서 공부 해볼 생각이다.

그리고 오늘 서버 부분만 테스트 해본거라 클라우드플레어서 제공하는것들을 하나 하나 공부삼아 적용 해볼 생각이다.

 

공부 참고 문서 :

Cloudflare Workers · Cloudflare Workers docs

 

Cloudflare Workers · Cloudflare Workers docs

Cloudflare Workers provides a serverless execution environment that allows you to create new applications or augment existing ones without configuring …

developers.cloudflare.com

Write Cloudflare Workers in Python · Cloudflare Workers docs

 

Write Cloudflare Workers in Python · Cloudflare Workers docs

Write Workers in 100% Python

developers.cloudflare.com

 

728x90