Pull to refresh

Comments 20

Правильно ли я понял, что вся эта прелесть (D1, KV) доступна только для того, что я буду разрабатывать для запуска именно изнутри воркера?

Или я могу юзать D1 и для каких-то других проектов, которым вполне годится SQLite (в том числе через какой-то ORM)?

D1 можно юзать вне воркеров только с помощью API, вряд ли на такой вариант есть ORM. В этом плане D1 как самостоятельный сервис - так себе.
То же самое с KV - только через API

Вообще, если брать какой-то реальный опыт использования, то Workers + KV/D1 отлично подходит в качестве прокси: можно заниматься кэшированием/быстрой проверкой токена авторизации и т.п. до того, как запрос пойдет в приложение

PaaS от Cloudflare? Похожим Google app engine лет 15 назад пользовался.

Как сказать... Не больше описанного в документации. Есть ограничения по библиотекам, нет доступа к фс, но есть ко всем сервисам в облаке. Нужно было маленькое приложение с простейшей базой с минимальными вложениями на минимальный трафик. Собрал по примерам, развернул с командной строки. Когда трафика нет - не платишь вовсе, инстанс выключается. Но первый запрос отрабатывает медленно, само собой.

Ну тут примерно тот же опыт использования и получается, только может чуть дешевле и удобнее. Касаемо холодного старта, то Cloudflare в качестве решения(и экономии) придумали 'изоляты'. По сути ты просто переиспользуешь движок после кого-то другого, притом вы друг от друга изолированы на уровне движка.

Хоронили devops'ов, порвали два баяна...

Cloud решения точно не заменят девопсов в ближайшее время :) Извиняюсь за кликбейтный топик статьи

Учился на системного инженера - хоронили инженеров, доучиваюсь на девопса - хоронят девопсов.

Пойду учить 1с

Заголовок, конечно, кликбейтный :)

Разумеется, облака не заменят никак профессию девопса, по крайней мере сейчас.

Какая-то странная шиза пошла с этими лямбдами и воркерами - поднимать на каждый http запрос v8. А чего не виртуальную машину сразу? Они конечно "blazing fast" и пр. но... где-то мы свернули не туда...

Ну Cloudflare в этом плане хитрые: в одном v8 могут изолированно крутиться несколько приложений одновременно, соответственно движок не приходится поднимать каждый раз для каждого запроса(ну, по крайней мере, - не всегда)

Отлично! Осталось нанять девопса чтобы разобрался с этим.

Мы смогли разобраться без девопса :). Но вообще, конечно, никакие облака профессию девопса не заменят на данный момент

> нужно где-то хранить тонны фото котиков, а ещё нужна бд для лайков и комментариев
1. на первых порах там будут не тонны, а килограммы или даже граммы фото котиков
2. csv файл вполне подойдет для лайков и комментариев

>И тут понеслось: надо либо локально настраивать какой-то docker-compose, чтобы удобно с этим всем работать, либо искать какой-то облачный сервис с S3 и PostgreSQL. А это только начало.

А в чем удобство работы S3 по сравнению с локальным хранилищем на сервере и кэшированием на стороне клаудфлары ? С точки зрения написания кода с нуля

И как можно сравнивать docker-compose с s3 ?

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

Так, подождите, у Вас же там был какой-то docker-compose, все должно сразу же на сервере настроиться, иначе зачем он изначально локально был нужен ? И какие порты там надо конфигурировать ? 80 и 443 что-ли ? Вы же их судя по фразе "настраиваете nginx" настраиваете прямо на VPS, а не в докере. И зачем несколько дней настраивать то, что настраивается за 2 часа без докера ?

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

Вы уверены, что человек без опыта юзания R2/D1/KV это за 5 минут настроит ?

>Пойду учить 1с

КОНЕЦ_ЕСЛИ

1. на первых порах там будут не тонны, а килограммы или даже граммы фото котиков2. csv файл вполне подойдет для лайков и комментариев

Я выбрал самый популярный вариант хранения данных, который еще и легко масштабируется/выносится в облако. Вы планируете при каждом GET-запросе парсить CSV? Мне уже страшно

А в чем удобство работы S3 по сравнению с локальным хранилищем на сервере и кэшированием на стороне клаудфлары ? С точки зрения написания кода с нуля

И как можно сравнивать docker-compose с s3 ?

  1. Локальное хранилище не масштабируется, а еще сгоревший жесткий диск гарантирует вам потерю фоток котиков, если у вас хостинг не поддерживает RAID.

  2. Я не сравнивал docker-compose с s3. Я имел в виду то, что если вы(как и я) используете s3 для хранения файлов, то вам желательно и для разработки иметь какое-то s3, либо локально, либо в облаке. Если локально, то проще всего - docker образ + compose.

Так, подождите, у Вас же там был какой-то docker-compose, все должно сразу же на сервере настроиться, иначе зачем он изначально локально был нужен ? И какие порты там надо конфигурировать ? 80 и 443 что-ли ? Вы же их судя по фразе "настраиваете nginx" настраиваете прямо на VPS, а не в докере. И зачем несколько дней настраивать то, что настраивается за 2 часа без докера ?

  1. Докер не закроет за вас открытые порты

  2. А какая разница где настраивать прокси? Все равно это придется сделать. Что с докером, что без, выйдет побольше двух часов, особенно у вас какой-нибудь Openssl, к которому надо написать какую-то крон джобу, которая будет раз в три месяца вам сертификат обновлять.

Вы уверены, что человек без опыта юзания R2/D1/KV это за 5 минут настроит ?

Минут за 20-30 на готовом шаблоне задеплоит. И имеет при этом из коробки капчу, tls, бесплатный домен, http 3 и много еще чего, что я описал в статье.

Капча - это зло. Иногда, конечно, выхода нет, но у Cloudflare с этим перебор.

Бесплатный домен? Что-то не видел я бесплатного домена у Cloudflare, я плачу. Где найти бесплатный?

Капчу можно включить, можно не включать, можно вручную врубить если тебя жестко ддосят

Беплатный домен - это поддомен от workers.dev. Полноценный, свой домен придется всё таки покупать

А можно немного подробнее про то, как код нужно адаптировать под CW? Hono, например, обещает независимость от рантайма, там он работает? Весь шедулинг, как я понял, надо выносить из логики приложения в инфру? И надо забыть о stateful. Что-то ещё важное?

И ещё: в чём основные отличия от лямбд от других вендоров?

Хороший вопрос!
1. Hono это роутер по сути, не фреймворк, и он отлично работает в воркерах. Лично я люблю больше itty-router, он тоже отлично работает и легковесный
2. Шедулинг там выносится либо в cron, либо в waitUntil. waitUntil - это функция, в которую можно передать какой-то код, который не будет блочить ответ. В итоге можно ответить юзеру, а потом уже выполнить какую-то работу

Касаемо других вендоров, Cloudflare Workers - мой первый cloud native опыт. Возможно это как раз повод изучить вопрос и написать новую статью :).
Вообще можете глянуть пример воркера в моем темплейте: https://github.com/StalkerRaftik/cf-web-monorepo

Sign up to leave a comment.

Articles