Что такое 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-агентов — каждый агент может жить в своём изолированном объекте.
ℹ Контекст
Durable Objects (DO) — это концепция Cloudflare: stateful «акторы», каждый из которых работает в одном потоке и имеет собственное хранилище. celld реализует ту же модель, но без привязки к Cloudflare.

Архитектура и принцип работы

Каждый объект — это отдельная база 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 и статические ассеты.

💡 Локальная разработка
Для локальной разработки достаточно указать S3-совместимый бакет (например, MinIO) и запустить celld без дополнительных параметров. Никаких внешних сервисов не требуется.

Стек технологий

celld = V8 + S3 + SQLite + LTX + Tokio

КомпонентРоль
V8Выполнение JavaScript/Workers
SQLiteЛокальное хранилище каждой ячейки
S3 (совместимый)Координация узлов и репликация
LTXРепликация SQLite (Litestream-протокол)
TokioAsync runtime (Rust)

Лицензия и цены

celld выпущен под лицензией Apache 2.0. Сам инструмент полностью бесплатен. Расходы сводятся исключительно к стоимости вашей инфраструктуры:

  • Серверы/VPS — любые, где запускается celld;
  • S3-совместимое хранилище — AWS S3, Cloudflare R2, MinIO, Garage и т.д.

Для сравнения: Workers Paid plan на Cloudflare включает использование Durable Objects за минимальный сбор $5 USD/месяц за аккаунт, и стоимость растёт с нагрузкой.

📝 Экономия на масштабе
При высоких нагрузках (миллионы запросов в день) celld на собственных серверах может быть значительно дешевле Cloudflare Durable Objects. Авторы заявляют о «порядке величины» в разнице стоимости.

Плюсы и минусы

✅ Плюсы❌ Минусы
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

Сравнение с альтернативами

ПараметрcelldCloudflare Durable ObjectsVorker
ТипSelf-hosted, OSSManaged SaaSSelf-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🔶 Экспериментальная
⚠ Важно про Vorker
Vorker в настоящее время поддерживает конфигурацию Durable Objects в workerd, однако workerd не готов к хранению на диске, поэтому persistence не реализован: при перезапуске или миграции воркера Durable Objects теряются. celld решает эту проблему через репликацию в S3.

Вердикт

celld подойдёт:

  • Backend-командам, уже использующим Cloudflare Workers, но желающим уйти от vendor lock-in;
  • Проектам с требованиями к суверенитету данных (GDPR, внутренние compliance-политики);
  • Разработчикам AI-агентов и real-time приложений (чаты, документы, коллаборация);
  • Командам, работающим при высоких нагрузках, где managed DO становится дорогим.

Не подойдёт:

  • Проектам, которым критически нужен глобальный edge с минимальной латентностью;
  • Командам без DevOps-экспертизы;
  • Production-проектам, требующим корпоративной поддержки и SLA прямо сейчас.

Рейтинг: 7.5 / 10

Технически элегантное решение с сильной архитектурой, но пока молодое. Следить обязательно — потенциал огромный.