denoland/celld
Cloudflare Workers를 자체 서버에서 실행하는 오픈소스 celld 공개
원제 denoland/celld
스타 5,430당일 +110Rust
Key Point
자사 Cloudflare Workers 애플리케이션을 클라우드 의존 없이 완전히 자체 통제하는 인프라에서 운영할 수 있게 되므로, 멀티테넌트 워크로드나 온프레미스 배포가 필요한 조직에 중요한 선택지를 제공한다.
핵심 요약
- Deno Land가 Cloudflare Workers 플랫폼을 자체 인프라에서 실행할 수 있게 하는 오픈소스 데몬 celld를 공개했다.
- Workers, Durable Objects, KV, Queues, D1, R2, Workflows, Cron Triggers, 정적 자산 등 Cloudflare의 모든 주요 서비스를 로컬 클러스터에서 동작시킬 수 있다.
- 각 객체는 셀(cell)이라는 자체 SQLite 데이터베이스를 가진 명명된 서버이며, 장기 상태는 S3, Google Cloud Storage, Azure Blob Storage 버킷에 저장된다.
- 별도의 제어 평면이나 합의 서비스 없이 작동하며, 비활성 셀의 운영 비용은 거의 없다.
- 각 머신에서 하나의 celld 프로세스를 실행하고, 같은 버킷을 공유하는 노드들이 함대를 이룬다.
- V8 엔진을 내장하여 Wrangler 번들을 직접 실행하며, 조건부 버킷 쓰기로 정확히 한 노드만 셀을 소유한다.
- 단일 노드에서는 각 쓰기가 버킷을 기다리므로 느리지만, 두 개 이상의 노드에서는 소유자가 다른 노드들로 데이터를 전송하면서 쓰기 지연 시간을 약 25ms로 단축할 수 있다.
- 로컬 개발을 위해 `celld dev` 명령으로 클라우드 버킷 없이 애플리케이션을 실행할 수 있다.
- S3, Google Cloud Storage, Azure 중 하나를 선택하여 배포하며, `celld deploy`로 Wrangler 설정을 그대로 사용해 배포할 수 있다.
- `celld diagnose`로 함대의 모든 노드와 셀 상태를 조회하고, 메모리 압박 시 80% 임계값에서 셀을 언하이버네이션하거나 분리할 수 있다.
- V8 힙 기본 한계는 128MB(Cloudflare Durable Objects와 동일)이며, 기본값에서 약 50,000개의 하이버네이션 가능 WebSocket 클라이언트를 보유할 수 있다.
- v0.4.1 이상에서 업그레이드 시 기존 버킷과 노드 데이터를 보존하며, 모든 노드를 중지한 후 새 바이너리로 시작하면 된다.
- 보안을 위해 모든 공시된 주소를 신뢰할 수 있는 사설 네트워크 또는 WireGuard, Tailscale 같은 암호화된 오버레이에 두어야 하며, 버킷 접근은 함대 관리자 접근으로 취급된다.
저장소 보기 ↗github.com