celld: self-hosted Durable Objects от Deno
Обзор celld — open-source демона от Deno Land для запуска Cloudflare Workers и Durable Objects на собственных серверах. Без вендор-локина.
Что такое celld и для кого он создан
celld — это open-source демон, который запускает Cloudflare Workers и Durable Objects прямо на ваших собственных машинах. Проект разработан командой Deno Land и анонсирован Райаном Далем (создателем Node.js и Deno).
«Durable Objects model — a single-threaded object with its own storage, addressed by name — is one of the best primitives distributed systems has been handed in years.» — celld.dev
Проект адресован прежде всего:
- Backend-разработчикам, уже знакомым с экосистемой Cloudflare Workers;
- DevOps/платформенным командам, которым важны суверенитет данных и контроль инфраструктуры;
- Стартапам и enterprise, страдающим от vendor lock-in на Cloudflare;
- Разработчикам AI-агентов — каждый агент может жить в своём изолированном объекте.
Архитектура и принцип работы
Каждый объект — это отдельная база SQLite, адресуемая по имени и реплицируемая в S3-совместимый бакет, которым вы владеете; узлы координируются исключительно через этот бакет — без control plane и без консенсусного сервиса.
Каждый узел celld встраивает V8 и выполняет Wrangler-бандлы.
graph LR
A[HTTP-запрос] --> B[celld Node]
B --> C{Cell активна?}
C -- Да --> D[Обработка в V8]
C -- Нет --> E[Пробуждение из S3]
E --> D
D --> F[SQLite — локальное хранилище]
F --> G[Репликация в S3-бакет]
G --> H[Ответ клиенту]
style G fill:#f0a500,color:#000
style F fill:#4a90d9,color:#fff
Object-storage compare-and-swap гарантирует, что ровно один узел владеет ячейкой (cell) в каждый момент времени — без membership-протокола, детектора отказов или консенсусного сервиса.
В терминах Cloudflare, cell — это Durable Object: небольшой сервер с именем и приватной базой SQLite. Вы создаёте по одному cell на каждого пользователя, документ, чат-комнату или AI-агента.
Ключевые возможности
1. Полная совместимость с Cloudflare Workers API
JavaScript API в celld — это тот же API, что поставляют Cloudflare Workers и Durable Objects. Это означает: существующий код для Cloudflare переносится без переписывания.
2. RPO=0 — данные не теряются
Выходной gate RPO=0 включён по умолчанию: HTTP-ответы, исходящие WebSocket-фреймы и броадкасты удерживаются до тех пор, пока записи ячейки не будут durably реплицированы, включая записи из совместно размещённых Durable Objects.
3. Минимальные накладные расходы
Накладные расходы — около 4 МБ памяти на экземпляр ячейки; у «спящих» ячеек затраты практически нулевые — только S3-хранилище.
4. Автошардирование по конструкции
Поскольку каждый объект — это собственная небольшая база данных, приложения шардируются по конструкции: проблема конкуренции за ресурсы и каскадных отказов одной общей базы исключена архитектурно, а не управляется вручную.
5. Поддержка WebSocket, HTTP, алармов
Ячейка обслуживает HTTP, удерживает WebSocket-соединения, устанавливает тревоги (alarms) и совершает исходящие соединения. Каждая ячейка работает в одном потоке, поэтому два запроса к одной ячейке никогда не выполняются одновременно. Второй запрос может чередоваться только пока первый ожидает, а операции хранения синхронны.
6. Деплой через Wrangler
# Клонируем репозиторий
git clone https://github.com/denoland/celld
cd celld/examples/counter
# Деплоим приложение
celld deploy . \
--bucket "$CELLD_BUCKET" \
--endpoint "$S3_ENDPOINT" \
--region "$AWS_REGION"
Команда celld deploy принимает module Workers, привязки Durable Object и статические ассеты.
celld без дополнительных параметров. Никаких внешних сервисов не требуется.Стек технологий
celld = V8 + S3 + SQLite + LTX + Tokio
| Компонент | Роль |
|---|---|
| V8 | Выполнение JavaScript/Workers |
| SQLite | Локальное хранилище каждой ячейки |
| S3 (совместимый) | Координация узлов и репликация |
| LTX | Репликация SQLite (Litestream-протокол) |
| Tokio | Async runtime (Rust) |
Лицензия и цены
celld выпущен под лицензией Apache 2.0. Сам инструмент полностью бесплатен. Расходы сводятся исключительно к стоимости вашей инфраструктуры:
- Серверы/VPS — любые, где запускается celld;
- S3-совместимое хранилище — AWS S3, Cloudflare R2, MinIO, Garage и т.д.
Для сравнения: Workers Paid plan на Cloudflare включает использование Durable Objects за минимальный сбор $5 USD/месяц за аккаунт, и стоимость растёт с нагрузкой.
Плюсы и минусы
| ✅ Плюсы | ❌ Минусы |
|---|---|
| Open source, Apache 2.0 | Нет встроенного CDN/edge-сети |
| Полная совместимость с Cloudflare Workers API | Требует настройки собственной инфраструктуры |
| RPO=0 — данные не теряются | Проект молодой, API ещё эволюционирует |
| ~4 МБ RAM на ячейку, спящие ячейки бесплатны | Pull requests отключены, вклад ограничен |
| Нет vendor lock-in, суверенитет данных | Нет SLA и корпоративной поддержки |
| Только S3 как зависимость — нет сложной инфраструктуры | Нет глобального edge-деплоя из коробки |
| Детерминированное симуляционное тестирование | Документация пока неполная |
| Автошардирование по конструкции | Ограниченная текущая поверхность Workers API |
Сравнение с альтернативами
| Параметр | celld | Cloudflare Durable Objects | Vorker |
|---|---|---|---|
| Тип | Self-hosted, OSS | Managed SaaS | Self-hosted, OSS |
| Лицензия | Apache 2.0 | Проприетарный | MIT |
| Цена | Только инфраструктура | от $5/мес + usage | Бесплатно |
| Совместимость с CF API | ✅ Полная | ✅ Нативная | ⚠️ Частичная |
| Persistence DO | ✅ SQLite + S3 | ✅ SQLite + Cloudflare | ❌ Не реализовано стабильно |
| RPO=0 | ✅ Да | ✅ Да | ❌ Нет |
| Edge-сеть | ❌ Нет | ✅ 300+ PoP | ❌ Нет |
| Vendor lock-in | ❌ Нет | ⚠️ Высокий | ❌ Нет |
| WebSocket-поддержка | ✅ Да | ✅ Да | ⚠️ Частичная |
| Зрелость | 🔶 Ранняя | 🟢 Production-ready | 🔶 Экспериментальная |
Вердикт
celld подойдёт:
- Backend-командам, уже использующим Cloudflare Workers, но желающим уйти от vendor lock-in;
- Проектам с требованиями к суверенитету данных (GDPR, внутренние compliance-политики);
- Разработчикам AI-агентов и real-time приложений (чаты, документы, коллаборация);
- Командам, работающим при высоких нагрузках, где managed DO становится дорогим.
Не подойдёт:
- Проектам, которым критически нужен глобальный edge с минимальной латентностью;
- Командам без DevOps-экспертизы;
- Production-проектам, требующим корпоративной поддержки и SLA прямо сейчас.
Рейтинг: 7.5 / 10
Технически элегантное решение с сильной архитектурой, но пока молодое. Следить обязательно — потенциал огромный.