내 서버에서도 Cloudflare Durable Objects처럼: 셀프호스팅 분산 런타임 'celld' 등장

한눈에 보는 핵심 요약
Deno 팀이 celld라는 오픈소스 런타임을 공개했습니다. 한 줄로 요약하면 "Cloudflare Workers와 Durable Objects의 프로그래밍 모델을, 내가 소유한 서버와 스토리지 위에서 그대로 돌린다"는 프로젝트입니다.
celld가 해결하려는 문제
Cloudflare의 Durable Objects는 '이름을 가진 작은 서버 + 전용 상태 저장소'라는 아주 매력적인 모델을 제공합니다. 사용자별, 문서별, 채팅방별, 심지어 AI 에이전트별로 독립된 인스턴스를 만들 수 있어서 대규모 실시간 서비스를 만들 때 특히 강력하죠.
문제는 이 모델이 Cloudflare 플랫폼에 강하게 묶여 있다는 점이었습니다. celld는 바로 이 지점을 겨냥합니다.
- 기존 Wrangler 프로젝트의 Module Worker, fetch, Service Binding, Durable Object, Static Assets 등을 거의 그대로 지원해, 코드를 크게 뜯어고치지 않고도 셀프호스팅 환경으로 옮길 수 있습니다.
어떻게 동작하나요?
1. Durable Object = 하나의 "cell"
celld는 Durable Object 하나하나를 이름을 가진 작은 서버 + 전용 SQLite DB, 즉 cell로 취급합니다. 사용자, 문서, 채팅방, AI 에이전트 단위로 잘게 쪼개 사용할 수 있어서 하나의 거대한 공유 DB에서 벌어지는 경합(contention)과 장애 범위를 구조적으로 분리합니다. 애플리케이션이 설계 단계부터 자연스럽게 샤딩되는 셈입니다.
2. 안 쓰는 cell은 사실상 공짜
사용하지 않는 cell은 메모리에서 내려가고 Object Storage에만 데이터가 남습니다. 그래서 비활성 상태의 비용이 거의 들지 않고, 필요할 때 다시 자동으로 활성화됩니다.
3. 데이터는 내가 소유한 스토리지에
S3 호환 스토리지나 Google Cloud Storage에 데이터와 배포 상태를 저장하기 때문에, 특정 Cloudflare 계정이나 관리형 데이터베이스에 종속되지 않습니다.
4. 별도의 클러스터 관리 서버가 없다
Control Plane이나 Consensus 서버, 고정된 클러스터 멤버십 같은 게 따로 없습니다. 같은 버킷을 바라보는 노드를 실행하기만 하면 그대로 fleet에 합류합니다. 운영 부담을 크게 줄여주는 설계입니다.
5. 실시간 워크로드까지 커버
HTTP뿐 아니라 Durable Object의 Alarm, WebSocket, RPC도 지원해서, 상태를 오래 유지해야 하는 실시간 서비스나 AI 에이전트 같은 워크로드도 문제없이 돌릴 수 있습니다.
앞으로의 방향과 한계
- Cloudflare가 Durable Objects 위에 쌓아 올린 D1, Workflows 지원도 계획 중이라, 향후에는 Workers + D1 조합의 애플리케이션까지 셀프호스팅 범위가 넓어질 전망입니다.
- 반대로 KV, R2, Workers AI, Vectorize, Hyperdrive 등 Cloudflare의 개별 관리형 서비스는 범위 밖입니다. celld는 Cloudflare 플랫폼 전체를 복제하려는 프로젝트가 아니라, Durable Objects의 프로그래밍 모델 자체를 이식하는 데 집중합니다.
- 아직 Alpha 단계라서 TLS, Ingress, 사용자 인증 같은 실제 운영에 필요한 부분은 직접 구성해야 합니다. 프로덕션 투입 전에는 이 점을 꼭 감안해야겠습니다.
왜 주목할 만한가
Cloudflare Durable Objects가 제시한 "상태를 가진 작은 서버를 수평으로 잔뜩 만든다"는 프로그래밍 모델은 그대로 가져오면서, 실행 머신과 데이터 저장소의 소유권을 직접 가질 수 있게 한다는 게 celld의 핵심 가치입니다. 벤더 종속을 걱정하던 팀이나, 자체 인프라에서 유사한 아키텍처를 실험해보고 싶은 개발자에게 흥미로운 선택지가 될 것 같습니다.