23P by xguru 2달전 | favorite | 댓글 2개
  • 실제 CloudFlare Workers에서 사용하는 JavaScript/WASM 런타임 코드
    • 다른 환경에 포팅 가능하도록 일부만 변경
    • 이름은 Unix 서버의 -d "daemon" 에서 가져와서 "worker dee"

용도

  • Workers를 셀프호스팅 가능. 단순히 API로 이용가능한 웹서버이기도 함. 어떤 환경에서도 쉽게 적용
  • 로컬 개발 및 테스팅용으로 사용
  • 프로그래밍 가능한 프록시(포워드 & 리버스). JavaScript로 요청/응답을 가로채서 처리 가능

What it is

  • Server-first : 많은 JS/WASM 런타임이 다용도로 사용가능하지만, workerd는 오직 서버에만 집중. 그중에서도 HTTP 서버
  • Web standard APIs : 웹브라우저에서 사용하는 것과 같은 표준 API를 제공(Fetch, URL, WebCrypto 등). 즉 여기서 개발한 코드는 브라우저로 포팅도 가능
  • Nanoservices : 이제 마이크로서비스를 넘어 나노서비스!
    • 나노서비스는 독립적인 배포의 장점과 라이브러리 함수 호출 정도의 오버헤드만 가지는 새로운 모델
    • workerd를 이용하면 많은 Worker들이 같은 프로세스 안에서 설정 가능하고, 각 Worker는 독립되어 실행되지만 서로간에 통신도 가능
  • Homogeneous deployment : 예전엔 특정 컨테이너에서 특정 서비스를 실행해야 했지만, workerd는 모든 머신들이 모든 서비스를 구동 가능
  • Capability bindings: 깔끔한 설정과 SSRF 안전성 보장
  • Always backwards compatible : 항상 하위 호환성 보장

What it's not

  • workerd is not a Secure Sandbox : 악성 코드가 실행될수도 있음. 이걸 방지하기 위해서는 별도의 샌드박싱 레이어가 필요
  • workerd is not an independent project : Cloudflare Workers의 핵심이자 일부. 외부 커밋을 받긴 하지만 보장하기는 어려움.
  • workerd is not an off-the-shelf edge compute platform : Workers 서비스 전체는 아님

Homogeneous deployment : 예전엔 특정 컨테이너에서 특정 서비스를 실행해야 했지만, workerd는 모든 머신들이 모든 서비스를 구동 가능

이게 무슨 의미인가 했더니 바로 앞에서 설명하는 나노서비스(functions) 방식으로 개발을 하게 되면 그냥 모든 나노서비스를 한 머신에 배포하고(오버헤드가 적어서 가능하다고) 필요하면 그냥 똑같은 머신을 늘리면 되니까 복잡한 배포 구성이 필요 없다는 말이었네요.

공개되면 만들어보고싶었던건데 오호