Deno присоединяется к Cloudflare
- Райан Дал и Берт Белдер возглавят совместное направление Cloudflare и Deno.
- Cloudflare планирует перенести код и идеи celld в workerd, чтобы сделать его масштабируемым решением для самостоятельного размещения.
- Подробности обещают рассказать в ближайшие месяцы; celld и workerd уже можно размещать самостоятельно.
Почему это важно: Это позволит создавать и запускать приложения с моделью программирования Workers на собственных серверах.

Для кого-то это может стать неожиданностью, но когда в августе команда Deno выпустила celld, мы были в восторге.
Почему неожиданностью? Дело в том, что существует популярная теория, согласно которой мы не должны были этому радоваться.
В интернете часто утверждают, что мы сделали Cloudflare Workers непохожим на другие облачные платформы, чтобы создать «привязку к поставщику». Суть претензии в том, что программы, созданные на Workers, сложно перенести на другие хостинговые платформы, поэтому, если написать приложение на Workers, вы навсегда «попадёте в ловушку» Cloudflare. Особенно это касается приложений, использующих Durable Objects: их не просто пишут иначе — у них и архитектура другая. Всё это якобы хитроумная ловушка: когда вы зайдёте слишком далеко и уже не сможете перейти на другую платформу, у вас каким-то образом выбьют почву из-под ног.
Согласно этой теории, celld представляет угрозу: будучи реализацией Workers и Durable Objects с открытым исходным кодом, он позволяет без проблем переносить приложения, созданные на Workers, к другим провайдерам. Никакой больше ловушки!
Эта теория неверна
Workers устроен иначе, потому что он лучше
Мы создали Workers иначе, потому что считаем это более удачным способом разработки веб-приложений.
- Благодаря архитектуре Workers управлять приложением, работающим в сотнях точек по всему миру, невероятно просто и дёшево. Ни одна другая популярная хостинговая платформа не добилась такого результата. Низкая цена — не уловка: мы действительно создали новую архитектуру, более эффективную, чем у конкурентов, и передали вам полученную экономию.
- Устройство Workers с динамическим окружением (так называемые «bindings») одновременно упрощает настройку доступа к внешним ресурсам и повышает её безопасность. Обычно совместить эти два преимущества не удаётся!
- Durable Objects упрощают создание систем для совместной работы в реальном времени и распределённых систем, которые трудно или невозможно реализовать в классической трёхуровневой веб-архитектуре.
Короче говоря, мы считаем, что создали более совершенную модель программирования для облачных приложений. Но для этого пришлось пойти другим путём: добиться этих преимуществ и при этом сохранить полную совместимость с существующими платформами было невозможно.
Если бы мы могли предложить эти преимущества и при этом обеспечить полную совместимость с традиционными облачными платформами, мы бы непременно так и поступили! Для нашего бизнеса было бы очень выгодно, если бы любые вычислительные задачи можно было просто перенести на Workers. Но инновации порой требуют нестандартных решений. Мы считаем, что в долгосрочной перспективе лучше отличаться от остальных и быть лучше, чем оставаться такими же, как все.
«Привязка к поставщику» вредит нам — поэтому мы открыли исходный код
Если бы у пользователей Workers действительно не было возможности уйти, некоторые из наших крупнейших клиентов вообще никогда бы не начали с нами работать.
Когда в 2022 году мы впервые представили клиентам вроде Shopify предложение Workers for Platforms, их ответ был однозначным: они не могли строить решения на нашей платформе, пока исходный код среды выполнения Workers не станет открытым.
И мы открыли его. Да-да, мало кто об этом знает, но среда выполнения Cloudflare Workers — workerd — имеет открытый исходный код. Это не сторонняя реализация — это тот же код, который мы используем в рабочей среде.
Более того, среди наших бывших клиентов есть те, кто перешёл от нас на workerd. И это нормально! Если бы мы не открыли исходный код, эти клиенты никогда бы не стали с нами работать. А на каждого ушедшего клиента приходится немало тех, кто остался.
Как выяснилось, открытый исходный код и возможность уйти — это хорошо для бизнеса.
Но мы можем сделать ещё лучше — и с помощью Deno так и поступим
Мы выпустили workerd, искренне рассчитывая, что люди будут использовать его в рабочих средах. Несколько человек так и сделали, но пока их немного. Похоже, большинство даже не подозревает, что это возможно.
Почему?
Честно говоря, мы не слишком преуспели в создании экосистемы сопутствующих сервисов и инструментов, необходимых для полноценной работы. Мы выпустили среду выполнения и просто надеялись, что сообщество подключится и начнёт адаптировать её для любых возможных сред. Но этого не произошло. Возможно, мы были наивны.
Для полноты картины должен признать: у workerd всегда был один серьёзный пробел, мешавший использовать его в рабочей среде, — Durable Objects. Workerd поддерживает их, но только в режиме одного экземпляра: этого достаточно для локального тестирования, но не для масштабирования. Мы всегда хотели это исправить. В коде ещё с момента первоначального выпуска есть комментарии TODO. Проблема в том, что наша реализация маршрутизации Durable Objects в рабочей среде совершенно не подходит тем, кто хочет разместить систему на собственных серверах. Это настоящий монстр, рассчитанный на сотни точек присутствия и зависящий от множества внешних сервисов, которыми управляет команда инженеров по надёжности сайтов. Мы понимали, что для самостоятельного размещения нужно другое решение, но так и не находили времени его создать. (Прошлой весной я действительно попытался это сделать, но, к своему стыду, у меня ничего не вышло.)
Теперь, надеюсь, понятно, почему мы обрадовались появлению celld: перед нами была реализация Workers и Durable Objects, совместимая с нашей, но при этом рассчитанная на самостоятельное размещение и масштабирование. Мы давно хотели создать именно такое решение, а Deno Land уже делала его для нас!
И кто справился бы с этой задачей лучше Райана Дала и его команды? Райан — создатель Node.js. Он придумал использовать JavaScript на сервере — без его работы Workers, возможно, никогда бы не появился. А затем он, Берт Белдер и остальные участники команды Deno Land сделали это снова, создав Deno — ещё одну среду выполнения для JavaScript (и TypeScript), которая подняла планку для всей отрасли. Команда Deno знает, как создать удобную для разработчиков среду вокруг решения, размещаемого на собственных серверах, — добиться этого с workerd нам так и не удалось.
Представьте, как мы обрадовались, когда команда Deno сообщила, что хочет объединить усилия в этом проекте.
План
Райан и Берт возглавят новое направление: workerd станет полноценным поддерживаемым решением для самостоятельного размещения, позволяющим создавать и запускать приложения с использованием модели программирования Workers. Для этого код и идеи из celld будут перенесены обратно в workerd. Я с огромным энтузиазмом жду этой работы — лично я собираюсь использовать её, чтобы запустить у себя дома экземпляр Cloudflare OS.
В ближайшие месяцы мы расскажем об этой работе подробнее. Но если ждать не хочется, уже сегодня можно начать самостоятельно размещать celld или workerd.
