cloudflare

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, а как только пойдет трафик и станет понятно, что код приносит деньги — вот тогда уже думать об облаках. Аминь.

ФБ начал возвращаться в строй. Сетевая связность восстановлена, заработал DNS. Приложения, скорее всего, тоже скоро очухаются.

Вот хороший обзор ситуации и объяснение механизма падения от Cloudflare https://blog.cloudflare.com/october-2021-facebook-outage/

Теперь ждём технического пост-мортема от фб.

Пойду спать, спокойной ночи, друзья.

Очередной шедевр от Cloudflare — подробный отчет об аварии 2 июля.

Рассказ начинается с личной истории. Девять лет назад автор был клиентом, а не сотрудником, и основатель компании Мэтью Принс написал ему детальное письмо в ответ на жалобу о проблеме. Теперь он пишет аналогичный текст нам после падения 2 июля.

Внутри — как у них устроен процесс разработки и деплоя, 11 причин, сочетание которых привело к аварии; что они сделали, чтобы подобная ситуация не повторилась, какие дальнейшие планы и даже разбор, как именно регулярное выражение съело все ресурсы процессора.

После такого ответа я доверяю Cloudflare гораздо больше, чем до аварии. Ошибки и аварии в сложных IT-системах неизбежны. Важно, что они вызваны не вопиющей некомпетентностью и как компания на них реагирует, учится ли она на ошибках. Побольше бы таких текстов и таких компаний.

Amazon две недели разбирался и ответил, что простит половину счета за трафик, который мы случайно нагенерили в конце года. Cloudflare простил весь счет за трафик в указанном периоде. УРА!

Не стесняйтесь просить помощи. Люди и компании вполне могут пойти вам навстречу.

P.S. Хорошая история в тему от хмельного девопса.

Чуваки из Cloudflare, Mozilla, Fastly и Apple, тем временем, собрались на хакатон и напрогали реализацию encrypted SNI.

SNI - технология, которая используется для создания шифрованного HTTPS соединения. Проблема в том, что SNI сейчас передаёт адрес сайта (не весь адрес страницы, только имя домена, rawg.io, или Meduza.io, например) в нешифрованном виде.

Именно через эту «дыру» в SNI работают 99% DPI-решений, блокирующие доступ к сайтам в России. Если цензору не нравится адрес сайта - он блокирует соединение. Encrypted SNI решает эту «проблему», потому что теперь цензор не знает даже адреса сайта, только IP адрес, а на одном IP адресе может быть множество сайтов.

До продакшена ещё далеко, но как же долго мы ждали этих первых шагов в правильном направлении!

В 21:46 мск отказала большая часть гугловского облака GCP. Ходят слухи, что всё из-за одного ключевого технического внутреннего сервиса, но в результате в разной степени поломались гугловские продукты, вроде Cloud, Drive, Meet, Gmail.

Предположительно, из-за этого начал глючить Cloudflare, один из самых популярных CDN-провайдеров.

Дальше по цепочке легла половина интернета — Spotify, Discord, Snapchat и тысячи других. Особенно тревожно, что для многих людей сломался RCS — это протокол, продвигаемый Гуглом, который должен заменить смски.

Предвкушаю увлекательные постмортемы от Гугла и Cloudflare, последние уж точно не упустят шанса рассказать, что это было.

В тысячах инженерных команд по всему мира сейчас была жара — все тушили пожары. А завтра все сядут составлять списки, что нужно поменять, чтобы в следующий раз было не так больно. Так и живем.

P. S. Про одновременное падение Amazon Web Services — кажется дезинформация.

Cloudflare выкатил бесплатную систему аналитики сайтов. Она не использует никакие cookies, а в случае, если сайт защищен Cloudflare — не требует установки дополнительных скриптов.

Плюсы этого подхода:
1. Работает даже с включенными блокировщиками рекламы, которые часто зарезают аналитику. Вы увидите всех посетителей сайта.
2. Не добавляет никаких тормозов на сайт, что особенно важно для слабых андроидов и медленного интернета.
3. Можно обойтись без порядком надоевшего «cookie notice».

Если вы используете Google Analytics или Яндекс.Метрику для чего-то хитрого, вроде учета числа успешных заказов, нажатий на определенные кнопки сайта или дочитывания статей до определенного процента — то тут Cloudflare analytics пока не подойдет.

Базовые вещи — самые популярные страницы на сайте и число посетителей из разных стран — она уже показывает хорошо. Попробовать можно вот тут.

Клаудфлер обвиняет амазон в том, что тот завышает цены на исходящий трафик на 8000%. Вторая претензия (более существенная): залить данные в облако амазона бесплатно, а выкачать обратно стоит денег.

Я люблю хвастаться, что весь хостинг Медузы стоил меньше тысячи долларов в месяц. Секрет был в том, что мы арендовали серверы у французского хостера Online.net, который не брал деньги за трафик. Тот же сайт, размещенный на обычных облачных провайдерах типа Амазона или Яндекс.Облака, стоил бы нам десятки тысяч долларов.

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

Прикол в том, что облачные провайдеры платят за канал связи фиксированную плату в месяц, а с клиентов берут деньги за объем переданной информации. Большинство сервисов (стартапов) не передают большой объем информации и поэтому эта цена остается в рамках разумного. Стоит начать раздавать популярные страницы или тем более фото и видео — и ценник в облачных хостингах становится совсем негуманным.

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

P.S. Облачные хостинги — отличный инструмент ❤️

Кратчайший пересказ

Разработчики ИИ ломают интернет в попытке скачать его для своих моделей.

Гугл и Яндекс учились искусству «ползать» по сайтам десятки лет — росли вместе с интернетом, оттачивали «пауков», чтобы ничего не ломать. А тут ощущение, будто подросткам дали порш и они гоняют у детских садиков.

Опенсорс-разработчики уже десятками жалуются, что их сайты падают под нагрузкой от AI-ботов. Сотни терабайт трафика — и часто из-за ерунды, вроде скачивания одного файла тысячу раз. Энтузиасты платят тысячи долларов за бессмысленный трафик, а админы говорят, что 75% времени уходит на борьбу с этими гостями.

Вообще-то, у сайтов есть способ сказать «не лезьте» — через robots.txt можно указать, что ботам тут не рады. Но «ИИ-предприниматели» считают, что правила приличия — не для них.

Cloudflare предложил интересное решение: бесконечный виртуальный лабиринт из страниц с ИИ-мусором, куда заманивают незваных ботов. Эту функцию на их платформе может включить любой владелец сайта.

На наших глазах интернет теряет последние признаки невинности, когда мы ещё доверяли незнакомцам и были добры к ним.

Cloudflare празднует 12-й день рождения.

Без этой компании трудно представить современный веб. Дело в том, что заказать DDoS-атаку сегодня — просто и дешево; это целая индустрия, где за 100 долларов можно «положить» сайт конкурента.

Cloudflare — самый простой способ защитить свой сайт от атаки. Для мелких и некоммерческих сайтов — бесплатно, с крупных клиентов они берут хорошие деньги. CF защищает 20% всех страниц в интернете. Уже сегодня вы наверняка десятки раз воспользовались их услугами, сами того не замечая. Я использую CF практически для всех своих проектов.

Работает это так, что CF становится посредником между моими серверами и пользователями; для нормальных людей это незаметно, но атакующим теперь нужно уронить не один мой сервер, а сотни тысяч серверов на 4 континентах, и управляют ими одни из лучших инженеров планеты.

К сожалению, это ведет к ещё большей централизации интернета. Отказ Cloudflare защищать спорный ресурс — практически приговор, сайт наверняка уронят противники. Компания всего несколько раз брала на себя роль цензора, последний громкий случай — кивифармс, а подробно я писал о dailystormer.

Вспомнил я о них, потому что каждый свой день рождения они целую неделю презентуют новые проекты. В этом году из интересного:

- технологическая альтернатива Google ReCaptcha — вместо ненавистных всем «отметьте светофоры / автобусы и докажите, что вы человек», они больше анализируют телеметрию браузера, а на устройствах Apple вообще опираются на специальный аппаратный ключ;

- новая версия Internet Radar — можно посмотреть статистику использования протоколов, атак, а из понятного всем — таблица самых популярных сайтов.

А ещё основатели компании опубликовали отличное открытое письмо, где оглядывают прошлый год и текущую ситуацию со свободой интернета и сравнивают историю интернета со звездными войнами. Рекомендую прочитать, это лучшая околотехническая проза за долгое время.