Cloudflare как идеальный хостинг (не CDN)
Cloudflare готовится перевернуть рынок хостинга веб-приложений. Длинный пост, но технологии поразительные.
Исторически, Cloudflare — крупный и агрессивный игрок на рынке CDN, то есть они умеют с минимальной задержкой и максимальной скоростью отдавать статический контент: картинки или страницы, которые одинаковые для всех пользователей. Они забирают их с ваших серверов, копируют (кешируют) на сотни своих серверов и отдают пользователю. Прикол в том, что у Cloudflare есть свои серверы в 200 главных точках обмена трафиком, 99% пользователей интернета живут ближе, чем в сотне километров от сервера Cloudflare. Это называется edge-network, пограничная сеть, в смысле та, которая граничит с пользователями. Небольшое расстояние и оптимизированные серверы означают, что статический контент будет грузиться мгновенно.
Проблема в том, что большинство страниц — динамические. Например, гугл-документ или мою ленту фейсбука кешировать на edge смысла нет — никому кроме меня она не нужна, да и мне интересна только самая последняя версия документа, и я его только что отредактировал. Исторически это означает, что нам нужно вести все эти вычисления новых страниц где-то на центральном сервере. У крупных компаний вроде гугла или фейсбука обычно есть несколько крупных серверных ферм на каждом континенте, поближе к пользователям, так что пользователи из России кучкуются на европейских серверах, а американцы — на штатовских. Это всё требует довольно сложную инфраструктуру, маленьким компаниям недоступную. Облака Амазона и другие конкуренты пытаются решить эту проблему, но без поллитра во всех их рычажках не разберешься.
Кажется, у Cloudflare получилось придумать элегантное, красивое решение для динамических страниц, которое работает прямо на edge-серверах! Встречайте Cloudflare Workers и Durable Objects.
Cloudflare Workers — облачные функции, в Амазоне они называются лямбды (lambda@edge). То есть вы пишете программу, которая обрабатывает запросы пользователей, загружаете её в облако и она запускается по необходимости на серверах облака, прозрачно, незаметно для вас и для пользователя. Придет один пользователь — запустится одна копия, придет тысяча — запустится тысяча копий. Обычно есть время на так называемый cold start, то есть после некоторого ожидания облачная функция тушится и нужно время, чтобы она проснулась и начала отвечать на запросы. Тут этой задержки нет. Обычно вам нужно выбрать регион работы функции (помните про близость к пользователю?), тут выбирать не нужно, код запустится из самого ближнего к пользователю edge (!) сервера. Обычно эта штука стоит недешево, здесь она примерно в 3-10 раз дешевле, чем у конкурентов. Весь этот банкет за счет того, что наш код работает не контейнерах, а v8-изолятах, то есть частично — на движке гугл-хрома! (тут рассказано, как их выбрали). Но это всё закуска, кайф — дальше.
У облачных функций есть слабое место — координация пользователей. Например, мы хотим сделать копию сервиса Гугл-документов или сервис чатов — то есть несколько людей подключаются к одной программе, могут в неё писать и читать общие данные. Решений два — либо запускаем программу по-старинке, один экземпляр на сервере и храним данные в памяти (быстро!), либо запускаем в функциях, но тогда нужна будет очень быстрая общая база данных и то скорость будет ниже, потому что функциям нужно будет ходить в центральную базу данных.
Cloudflare эту проблему решили с помощью Durable Objects — это такие воркеры, которые а) уникальны, то есть гарантированно запускается только один экземпляр б) имеют доступ к надежному и быстрому хранилищу в) запускаются там, где большинство пользователей и могут самостоятельно мигрировать между серверами. Получается, что большинство операций происходят в памяти, но при этом самостоятельная серверная программа не нужна. Красиво! В статье примеры каунтера и чата, простота кода впечатляет.
Отдельно подчеркну достойную документацию и хороший инструментарий разработчика.
Перечисленное выше — базовые технологии, на которых можно строить впечатляющие бизнес-решения.
Вот, например, сам Cloudflare предлагает ускорить Wordpress-сайты в 3,5 раза. Просто подключаешь плагин и сайт начинает грузиться в разы быстрее, а это, между прочим, самый популярный движок для сайтов в мире и такое ускорение напрямую влияет на бизнес.
Или вот чуваки приняли 5 миллионов евро пожертвований за 2 часа, написав смешной объем кода и не упали! Вот инженер из Vox Media запустил React прямо на edge-серверах!
В интересное время живем, товарищи!
N.B. Федя добавляет, что красота красотой, но начинать лучше с классических фреймворков и 5-долларового сервера в DigitalOcean, а как только пойдет трафик и станет понятно, что код приносит деньги — вот тогда уже думать об облаках. Аминь.
Спасибо за статью, интересно.
Спасибо! Видимо так природа очистилась, что теперь в 2021 все комментарии позитивные!
Такой подход мне очень напомнило о "интернете будущего", в котором, по мнению некоторых, нету центрального сервера, а трафик идёт через подобие p2p
Угу, и за счет очень мощного бэкбона и одинаковых серверов эта штука даже не тормозит :)
Все там есть. Сервер просто не ваш, а клаудфаровский. У них уже есть подобные решения. Это просто улучшенное в плане скорости доступа к данным.
Они предлагают быстрое хранилище состояний без необходимости обращаться к главной бд. Типа это долго.
Да для wp это фича полезная, нужно поюзать.
Ох маркетинг-шмаркетинг ... кто-то хоть посмотрел как чуваки "serverless" 5млн на благотворительность собрали?
Их страница с Cloudflare отдаёт пользоваелям статичный React сайт, и небольшой бек, который через API stripe.com платежи обрабатывает.
В общем из без Cloudflare можно было обойтись.
DurableObjects - ну они опять к централизации гребут приправя шмаркетингом ...
Много букв, что у автора, что в исходном пресс-релие клаудфары. А по сути можно ограничиться одним предложением: встречайте нашу новую супер распределенную базу данных и бонусом мы можем хостить скрипты для ее обновления.
Решение нишевое. Для 90% всех вэб-приложений достаточно кэширования статического контента. Уменьшение задержки с 200мс до 5мс в части полученная состояния для клиентского приложения не критично.
Плагин не устанавливайте если не хотите себе лишних проблем или не понимаете зачем он вам нужен. У меня он крашил сайт и вызывал циклические ошибки. И негативные отзывы на wp это подверждают https://wordpress.org/support/plugin/cloudflare/reviews/
И в остальном кф прекрасен. Только вот ркн опять его блочить начал с недавних пор
A сравнения с конкурентами нет?
От какого количества пользователей/поситителей это интересно?
Неплохо, бодренько. Искал к чему придраться в этом предложении CloudFlare... и не нашёл! Наверняка тут есть какая-то доля булшита, но уровень оного без дополнительного гугления мне недостижим.
Нет 5-ти долларовых тарифов у Digital Ocean, может были когда-то или учитывают по первоначальному предложению, которое действует только год, а потом плати по полной. И если учесть, что цены у них пишутся без НДС...