Cloudflare Workers: DevOps’ы больше не нужны?

в 8:15, , рубрики: cloud, cloud hosting, cloud native, cloud platform, CloudFlare, cloudflare workers, clouds

Представь: вы с друзьями решили сделать пет-проект на NodeJS — типа инсты, но с котиками. Всё начинается классно: вы рисуете интерфейс, пишете код, но потом понимаете, что нужно где-то хранить тонны фото котиков, а ещё нужна бд для лайков и комментариев. И тут понеслось: надо либо локально настраивать какой-то docker-compose, чтобы удобно с этим всем работать, либо искать какой-то облачный сервис с S3 и PostgreSQL. А это только начало.

Теперь нужно задеплоить проект. Вы покупаете VPS, настраиваете Nginx, покупаете домен, прикручиваете SSL-сертификаты, настраиваете Docker и конфигурируете порты. Вы всё это несколько дней настраиваете, хоть и с горем пополам. Проект запущен, вы счастливы.

И тут ваш проект внезапно выстрелил, и один сервер перестает справляться с нагрузкой. Вы понимаете, что нужно масштабироваться и делать какой-то кэш. Теперь вы лезете в дебри Kubernetes, настраиваете кластеры, балансировку нагрузки, мониторинг, и в какой-то момент начинаете завидовать своей кошке, которая просто спит на диване, пока вы страдаете.

И тут на сцену выходит Cloudflare Workers

А теперь представьте, что вместо всего этого кошмара вы просто настроили конфиг за 5 минут, одной командой задеплоили, и всё: никаких Docker, Nginx и Kubernetes. Картинки с котиками? Юзаем R2 (S3-compatible бакет). База данных? Подключаете D1(облачная реляционная бд) в две строки кода. Нужен кэш? Юзаем KV - простое хранилище формата "ключ-значение". Воркеры масштабируются автоматически. А еще логи, мониторинг, защита от DDoS и CDN для быстрой доставки статики.

Все это из коробки дает Cloudflare Workers. Это платформа для cloud-native разработки, которая позволяет запускать код на инфраструктуре Cloudflare, избавляя разработчиков от необходимости выстраивать всю архитектуру с нуля. Она автоматически масштабируется, обеспечивает низкие задержки, дает готовый CI/CD пайплайн и интегрируется с другими сервисами Cloudflare в два клика. Можно поднять приложение с кучей сервисов и функционала не выходя из экосистемы площадки, даже на этапе покупки домена - всё на ней есть(или почти всё). Но есть в этой бочке мёда ложка дёгтя.

Минусы использования Cloudflare Workers

1.Сильная зависимость от инфраструктуры Cloudflare.
Если ты пишешь приложение, используя только сервисы Cloudflare (Workers, R2, D1), то переехать куда-то ещё будет сложно. Это как жениться на Cloudflare: развод возможен, но будет долгим и болезненным. Ты пишешь код под их специфику, и если вдруг захочешь уйти — придётся переписывать код, связанный с сервисами, не говоря о полном переносе инфраструктуры.

2. Если Cloudflare упадёт, упадёшь и ты.
Но тут есть утешение: если он ляжет, то с тобой упадёт добрая половина интернета. Так что ты будешь не один в этой беде.

3. Cloudflare заблокирован в РФ.
Блокировку можно обойти, но это не точно. Для тг ботов это не критично — сервера Telegram спокойно ходят в Cloudflare. Если же ты делаешь сайт и тебе важна его доступность из РФ, то придётся смотреть в сторону других облачных провайдеров.

4. Нефиксированная цена.
Типичная проблема cloud-сервисов: ты платишь за то, что используешь. Если твой проект внезапно взлетит (или кто-то решит зафлудить тебя запросами), счёт может оказаться неприятно большим. Строго указать лимит по расходам нельзя, но, справедливости ради, этим грешат очень многие Cloud провайдеры, например Google. На бесплатном тарифе можно не бояться овербиллинга.

5. Ограниченная гибкость.
В воркерах ты работаешь в рамках инфраструктуры Cloudflare. Хочешь какую-то специфичную настройку инфраструктуры? Скорее всего, не получится.

6. Не все Node.js пакеты работают из коробки
Воркеры используют свою среду выполнения, которая лишь частично совместима с Node.js. Это значит, что твой любимый backend-стек может просто не работать в воркерах. Некоторые библиотеки отдельно добавляют поддержку для воркеров, например Drizzle ORM, но далеко не все.

Как это работает под капотом?

Код в Cloudflare Workers работает внутри V8 движка, который Cloudflare закастомили под себя. Когда к твоему воркеру приходит запрос, он запускается внутри песочницы V8, выполняет свою работу и завершается. Никаких постоянно работающих серверов — только запуск по запросу. Это идеально для задач, которые не требуют постоянной работы, например, обработка HTTP-запросов или модификация ответов на лету. Воркеры могут запускаться "на горячую" внутри уже запущенной песочницы, что экономит нам время ответа.

Воркеры также могут в крон-джобы. Можно, например, настроить ежедневную синхронизацию данных или отправку уведомлений.

Одна из ключевых фишек воркеров— это edge-вычисления. Твой код выполняется в том датацентре, который ближе всего к пользователю, это минимизирует задержки и ускоряет ответ. Если запросов становится много, Cloudflare автоматически запускает сотни или тысячи инстансов твоего кода, тебе не нужно думать о настройке серверов или балансировке нагрузки.

Чтобы работать с воркерами, Cloudflare сделали Wrangler — npm-пакет, с помощью которого мы можем деплоить код, настраивать ресурсы и локально разрабатывать. С её помощью можно легко создавать различные сервисы (например, R2 бакеты для файлов или KV-хранилища для кэша).

Cloudflare добавили совместимость воркеров с Node.js, но она не полная. Например, такие модули, как fs (работа с файлами) или child_process (запуск процессов), не работают. Если ты привык к определённым библиотекам или инструментам, будь готов к тому, что они могут просто не завестись.

Итоги: кому и зачем Cloudflare Workers?

Воркеры могут быть реально полезны для:

  1. Быстрая разработка и деплой MVP
    Хочешь проверить идею, но не хочешь тратить время на настройку серверов? Воркеры позволяют развернуть проект за считанные минуты.

  2. Cloud native backend
    Можно писать как монолит, так и микросервисы. Воркеры могут общаться между собой через RPC.

  3. Различные Telegram-боты
    Воркеры отлично подходят для ботов: они быстрые, масштабируемые и не требуют постоянной работы серверов.

  4. Скрипты по вебхукам
    Например, пересылка уведомлений из GitLab в Telegram или обработка событий из внешних сервисов. Всё это легко реализуется на воркерах.

  5. Пет-проекты
    Если хочешь что-то попробовать, поэкспериментировать или просто сделать что-то для себя — воркеры на бесплатном плане идеальны.

  6. Monorepo приложения с бэком и фронтом вместе
    Да, можно разрабатывать бэкенд и фронтенд внутри одного Worker'а и даже шарить типы данных между ними. Автор подготовил темплейт воркера для такого приложения, его можно посмотреть и запустить в пару кликов тут

Насколько Cloudflare выглядит преимущественнее других провайдеров, вроде AWS или Google Cloud — вопрос открытый, как и то, можно ли зрелому проекту полностью или частично переехать на Cloudflare. Это предлагаю обсудить в комментариях!

Автор: WhileTrueDoEnd

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js