Описание: Райан Даль представил Celld — открытую платформу для запуска распределённых приложений. Новое решение совместимо с Cloudflare Workers и в 8 раз дешевле при постоянной нагрузке.
Знаменитый разработчик Райан Даль, автор Node.js и Deno, создал новую платформу Celld. Это открытое решение позволяет переносить приложения Cloudflare Workers и Durable Objects на собственные серверы без потери функциональности и сохраняя знакомые интерфейсы программирования.
Cloudflare Workers предоставляет возможность выполнять JavaScript-код на серверах в облегченных изолированных окружениях. Сервис Durable Objects расширяет эти возможности, добавляя постоянное хранилище данных: каждый объект имеет уникальный идентификатор, отдельную базу данных SQLite и выделенную область в памяти.
Обработка запросов к каждому объекту происходит последовательно в одном потоке, что исключает одновременное изменение одних и тех же данных несколькими запросами. Это освобождает разработчиков от необходимости вручную разрешать конфликты данных, синхронизировать процессы или использовать системы очередей сообщений. Обработка информации осуществляется в непосредственной близости к данным приложения.
Такая архитектура хорошо подходит для многопользовательских игр, мессенджеров, коллективных редакторов, вспомогательных сервисов и искусственного интеллекта. Каждый объект может поддерживать множество соединений WebSocket и автоматически переходить в режим ожидания при отсутствии использования. Это позволяет приложению не потреблять ресурсы до следующего запроса.
Платформа Celld переносит эту модель на серверы пользователя. Каждый компонент системы, называемый cell (ячейка), работает с собственной базой SQLite. Узлы выполняют код через движок V8, а информация о состоянии, развёртывании и метаданные хранятся в хранилище, совместимом с S3 или Google Cloud Storage.
Платформе не требуется центральный управляющий сервер. Хранилище определяет, какой узел отвечает за каждую ячейку, а Celld постоянно синхронизирует изменения SQLite. При сбое другой сервер принимает ячейку, восстанавливает базу данных и продолжает обработку запросов. По утверждению разработчиков, завершённые операции при переключении не теряются.
Celld поддерживает большинство функций Workers и Durable Objects, позволяя переносить совместимые приложения без полного переписывания кода. Платформа работает с JavaScript и TypeScript, а V8 даёт возможность запускать программы на Rust, C, C++, Go и Zig через WebAssembly. Однако проект пока не является полной копией Cloudflare Workers: некоторые дополнительные сервисы и параметры остаются недоступными.
Главное преимущество Даль видит в стоимости при постоянной нагрузке. По его расчётам, содержание 100 постоянно активных объектов в Cloudflare обойдётся примерно в 415 долларов ежемесячно, тогда как аналогичная конфигурация Celld на сервере с 8 ГБ оперативной памяти потребует около 49 долларов.
Компания Cloudflare оспорила эту оценку. Сумма в 415 долларов появляется только при непрерывной активности всех объектов. Режим ожидания снижает затраты примерно до 20,65 доллара, поскольку тарификация не включает время, когда объекты находятся в режиме гибернации. Фактическая разница зависит от типа нагрузки: постоянно занятые ячейки лучше демонстрируют преимущество Celld, а редко используемые могут быть экономичнее в Cloudflare.
Самостоятельное управление сервером возлагает на владельца ответственность за конфигурацию серверов, сетевого оборудования, защищённых соединений и резервных копий. Celld находится на ранней стадии разработки, не предлагает встроенную систему управления учётными записями и требует отдельного компонента для приёма входящего трафика.
Исходный код размещён на GitHub под лицензией Apache 2.0. Разработчики приветствуют обдуманные исправления от сообщества, но не принимают изменения, автоматически созданные ИИ-инструментами. Авторы объяснили это решение тем, что автоматические правки часто содержат множество крупных изменений без необходимого контекста, анализ которых требует от сопровождающих больше времени, чем даёт экономия.
