Comments 20
Правильно ли я понял, что вся эта прелесть (D1, KV) доступна только для того, что я буду разрабатывать для запуска именно изнутри воркера?
Или я могу юзать D1 и для каких-то других проектов, которым вполне годится SQLite (в том числе через какой-то ORM)?
D1 можно юзать вне воркеров только с помощью API, вряд ли на такой вариант есть ORM. В этом плане D1 как самостоятельный сервис - так себе.
То же самое с KV - только через API
Вообще, если брать какой-то реальный опыт использования, то Workers + KV/D1 отлично подходит в качестве прокси: можно заниматься кэшированием/быстрой проверкой токена авторизации и т.п. до того, как запрос пойдет в приложение
PaaS от Cloudflare? Похожим Google app engine лет 15 назад пользовался.
И какой был опыт использования?
Как сказать... Не больше описанного в документации. Есть ограничения по библиотекам, нет доступа к фс, но есть ко всем сервисам в облаке. Нужно было маленькое приложение с простейшей базой с минимальными вложениями на минимальный трафик. Собрал по примерам, развернул с командной строки. Когда трафика нет - не платишь вовсе, инстанс выключается. Но первый запрос отрабатывает медленно, само собой.
Ну тут примерно тот же опыт использования и получается, только может чуть дешевле и удобнее. Касаемо холодного старта, то Cloudflare в качестве решения(и экономии) придумали 'изоляты'. По сути ты просто переиспользуешь движок после кого-то другого, притом вы друг от друга изолированы на уровне движка.
Хоронили devops'ов, порвали два баяна...
Учился на системного инженера - хоронили инженеров, доучиваюсь на девопса - хоронят девопсов.
Пойду учить 1с
Какая-то странная шиза пошла с этими лямбдами и воркерами - поднимать на каждый http запрос v8. А чего не виртуальную машину сразу? Они конечно "blazing fast" и пр. но... где-то мы свернули не туда...
Отлично! Осталось нанять девопса чтобы разобрался с этим.
> нужно где-то хранить тонны фото котиков, а ещё нужна бд для лайков и комментариев
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 ?
Локальное хранилище не масштабируется, а еще сгоревший жесткий диск гарантирует вам потерю фоток котиков, если у вас хостинг не поддерживает RAID.
Я не сравнивал docker-compose с s3. Я имел в виду то, что если вы(как и я) используете s3 для хранения файлов, то вам желательно и для разработки иметь какое-то s3, либо локально, либо в облаке. Если локально, то проще всего - docker образ + compose.
Так, подождите, у Вас же там был какой-то docker-compose, все должно сразу же на сервере настроиться, иначе зачем он изначально локально был нужен ? И какие порты там надо конфигурировать ? 80 и 443 что-ли ? Вы же их судя по фразе "настраиваете nginx" настраиваете прямо на VPS, а не в докере. И зачем несколько дней настраивать то, что настраивается за 2 часа без докера ?
Докер не закроет за вас открытые порты
А какая разница где настраивать прокси? Все равно это придется сделать. Что с докером, что без, выйдет побольше двух часов, особенно у вас какой-нибудь Openssl, к которому надо написать какую-то крон джобу, которая будет раз в три месяца вам сертификат обновлять.
Вы уверены, что человек без опыта юзания R2/D1/KV это за 5 минут настроит ?
Минут за 20-30 на готовом шаблоне задеплоит. И имеет при этом из коробки капчу, tls, бесплатный домен, http 3 и много еще чего, что я описал в статье.
Капча - это зло. Иногда, конечно, выхода нет, но у Cloudflare с этим перебор.
Бесплатный домен? Что-то не видел я бесплатного домена у Cloudflare, я плачу. Где найти бесплатный?
А можно немного подробнее про то, как код нужно адаптировать под CW? Hono, например, обещает независимость от рантайма, там он работает? Весь шедулинг, как я понял, надо выносить из логики приложения в инфру? И надо забыть о stateful. Что-то ещё важное?
И ещё: в чём основные отличия от лямбд от других вендоров?
Хороший вопрос!
1. Hono это роутер по сути, не фреймворк, и он отлично работает в воркерах. Лично я люблю больше itty-router, он тоже отлично работает и легковесный
2. Шедулинг там выносится либо в cron, либо в waitUntil. waitUntil - это функция, в которую можно передать какой-то код, который не будет блочить ответ. В итоге можно ответить юзеру, а потом уже выполнить какую-то работу
Касаемо других вендоров, Cloudflare Workers - мой первый cloud native опыт. Возможно это как раз повод изучить вопрос и написать новую статью :).
Вообще можете глянуть пример воркера в моем темплейте: https://github.com/StalkerRaftik/cf-web-monorepo
Cloudflare Workers: что это и с чем едят