Для некоторых это может стать неожиданностью, но когда команда Deno выпустила celld в августе, мы были в восторге.
Почему неожиданность? Что ж, так получилось, что существует популярная теория, согласно которой мы не должны радоваться.
Видите ли, в интернете часто утверждают, что мы заставили Cloudflare Workers работать иначе, чем другие облачные платформы, чтобы создать «привязку к поставщику». Утверждается, что ПО, созданное на базе Workers, трудно перенести на другие хостинги, поэтому, если вы пишите свое приложение на Workers, вы навсегда «заперты» на Cloudflare. Особенно это касается приложений, использующих Durable Objects: они не просто написаны иначе, но и имеют другую архитектуру. Все это, предположительно, является хитроумной ловушкой: как только вы зайдете слишком далеко и не сможете переключиться, почву у вас из-под ног тем или иным образом выбьют.
Согласно этой теории, celld представляет собой угрозу: будучи реализацией Workers и Durable Objects с открытым исходным кодом, она позволяет приложениям, созданным на Workers, легко мигрировать к другим провайдерам. Никакой ловушки больше нет!
Эта теория неверна.
Мы создали Workers по-другому, потому что считаем это лучшим способом создания веб-приложений.
- Дизайн Workers делает предельно простым и дешево стоящим управление приложением, работающим в сотнях точек по всему миру — достижение, которого не добилась ни одна другая популярная хостинг-платформа. Ценообразование — это не трюк: мы действительно создали новую архитектуру, которая эффективнее конкурентов, и поделились этой экономией с вами.
- Дизайн живой среды Workers (также известной как «bindings») одновременно делает настройку доступа к внешним ресурсам проще и безопаснее. Обычно эти две вещи не сочетаются!
- Durable Objects позволяют легко создавать системы реального времени для совместной работы и распределенные системы, что сложно или невозможно в классической трехзвенной веб-архитектуре.
Кратко говоря, мы считаем, что просто создали лучшую модель программирования для облачного ПО. Но чтобы быть лучше, нужно отличаться: мы не смогли бы достичь этих преимуществ, оставаясь полностью совместимыми с существующими платформами.
Если бы мы могли предложить эти преимущества и быть полностью совместимыми с традиционными облачными платформами, мы бы обязательно сделали это! Для нашего бизнеса было бы огромным плюсом, если бы любую рабочую нагрузку вычислений можно было просто перенести на Workers. Но реальность такова, что инновации иногда требуют делать вещи иначе. Мы считаем, что в долгосрочной перспективе лучше отличаться и быть лучше, чем быть такими же, как все остальные.
Если бы из Workers действительно не было выхода, некоторые из наших крупнейших клиентов никогда бы не подписали с нами контракт в первую очередь.
Когда мы изначально предлагали Workers for Platforms таким клиентам, как Shopify в 2022 году, отзывы были однозначными: они никак не могли создавать продукты на нашей базе, если бы среда выполнения Workers не была открытой.
И поэтому мы открыли ее исходный код. Верно: похоже, мало кто об этом знает, но среда выполнения Cloudflare Workers, workerd, имеет открытый исходный код. Это не параллельная реализация, это тот же код, который мы запускаем в продакшене.
На самом деле, у нас есть бывшие клиенты, которые мигрировали от нас с помощью workerd. И это нормально! Эти клиенты никогда бы не подписали с нами контракт в первую очередь, если бы мы не были открытым исходным кодом, и на каждого ушедшего приходится множество других, которые остались.
Оказывается, быть с открытым исходным кодом и давать людям возможность уйти — это хороший бизнес.
Но мы могли бы сделать лучше — и с помощью Deno мы это сделаем.
Мы выпустили workerd искренне надеясь, что люди будут использовать ее в продакшене. Несколько человек использовали, но пока не так много. Большинство людей, похоже, вообще не подозревают, что это возможно.
Почему нет?
Откровенно говоря, мы проделали не лучшую работу по созданию экосистемы смежных сервисов и инструментов, чтобы заставить ее по-настоящему работать. Мы выпустили среду выполнения, а затем просто надеялись, что сообщество подключится и начнет адаптировать ее под любую возможную среду. Этого не произошло. Возможно, мы были наивны.
Ради прозрачности я должен признать, что у workerd всегда был один большой пробел в готовности к продакшену: Durable Objects. Workerd реализует их, но только в одноэкземплярном варианте — этого достаточно для локального тестирования, но недостаточно для масштабирования. Мы всегда хотели это исправить. В коде есть комментарии TODO, восходящие к самому первому релизу. Проблема в том, что наша продакшен-реализация маршрутизации Durable Objects — это совсем не та реализация, которую хотел бы любой сторонник хостинга на собственных серверах. Это настоящий монстр, созданный для работы в сотнях точек, с многочисленными зависимостями от внешних сервисов, управляемых командой инженеров по надежности сайта (SRE). Мы знали, что для сценария самостоятельного хостинга нам нужно что-то другое, но так и не нашли времени это построить. (На самом деле я сделал попытку прошлой весной, но, к моему стыду, она не сработала).
Так что теперь, надеюсь, понятно, почему мы были рады 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 уже сегодня.











