#google cloud

9 постов
пост №1852

Гугл опубликовал пост-мортем по позавчерашнему падению. Обычные ошибки, только на инфраструктуре планетарного масштаба.

У них есть внутренний сервис, который проверяет доступы (бабки, квоты и т. д.) перед тем, как API запрос доходит до любого продукта.

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

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

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

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

К сожалению, программист забыл настроить фича-флаги для этого кода. Кусочек программы с ошибкой запустился на всех пользователей сразу. Удивительно, что это не заметили на этапе code review!

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

Тут в дело вступает, на мой взгляд, первая ошибка (а не просто человеческая небрежность) инженеров — система контроля доступа настроена так, что при отсутствии ответа от программы проверок она отклоняет запрос. Так называемый fail closed. Хорошо для замков на банковских сейфах, плохо для пожарных выходов.
В нашем случае система не пропускает ни один запрос.

Дежурные инженеры замечают проблему в течение 2 минут, за 10 минут находят причину (дежурная система и дежурные инженеры у Гугла достойны восхищения) и нажимают большую красную кнопку, которая должна выключить эту часть программы (ее программисты сделали). Ее включение занимает еще 30 минут. (Не понятно, почему этот механизм занимает 30 минут, а не 20 миллисекунд, но движемся дальше).

Система заработала, но из-за того, что она лежала 40 минут, накопилось много желающих отправить запрос еще раз, и они создали эффект толпы, которая набежала и перегрузила остальные соседние сервисы через наш сервис проверок. Оказалось, что он не ждет какое-то время, если нужный сервис отказывается ответить на запрос (для этого есть красивая схема exponential back off), а долбит до упаду, тем самым не давая системе возможности восстановиться. Пришлось руками ограничивать число запросов. На постепенную, ручную разгрузку очередей ушло еще 2 часа.

Ко всему прочему, Гугл час не мог опубликовать уведомление о проблеме, потому что сервис публикации статус-страниц зависит от системы, которая упала.

Как вывод, Гугл обещает пройтись по всем сервисам и убедиться, что они, во-первых, fail open, то есть пропускают запросы, когда падают, во-вторых, реализуют exponential back off, если на их запрос не отвечают, а не добивают лежачего, и, наконец, в-третьих, что даже глобальные добавления правил должны прилетать во все регионы не сразу, а с некоторыми задержками. Ещё обещают добавить эти проверки в свои статические анализаторы кода, завидую!

Первые два пункта можно и нужно использовать в каждом проекте, даже если ты не Гугл.

пост №1850

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

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

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

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

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

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

пост №1687

Google объявил о закрытии регистратора Google Domains. Десятки миллионов доменов клиентов передадут в управление Squarespace.

Регистраторы позволяют оформить права на домены — адреса сайтов; они обслуживают реестр, без которого невозможен современный интернет.

Еще одно надгробие на кладбище проектов Google.

Интересно, учитывает ли Google репутационный ущерб? Я использую их облако Google Cloud Platform (GCP) на нескольких небольших проектах, но уже зарекся полагаться на продукты от Google в бизнесе.

При всех недостатках AWS, трудно представить, как Amazon закрывает сервис, которым активно пользуются внешние разработчики. Любое подобное закрытие имеет каскадный эффект: всем, кто использовал эту инфраструктуру, нужно инвестировать силы и время на переделки и переключения.

Интересный факт в том, что Google при этом пытается конкурировать с Amazon в облаках. Они предлагают десятки миллионов долларов бесплатного использования облака стартапам, которые переключатся с AWS на GCP.

Одной рукой тратят деньги на привлечение клиентов, другой — наносят урон, который сложно подсчитать.

Если же возвращаться к регистраторам, то я рекомендую gandi. Если вы всё равно пользуетесь Cloudflare DNS — то Cloudflare тоже продает домены, причем у них нулевая наценка и хороший интерфейс, рекомендую.

пост №954

Прошлой ночью по Москве у гугла прилегла сеть в Штатах. 4 с половиной часа, с 12 до 17 PT. Проблемы затронули как собственные сервисы Gmail, YouTube и прочие так и клиентов облака: Snapchat и другие.

Гугл потерял «три девятки» (99.99% доступности сервисов) в этом квартале.

С нетерпением ждём постмортем. Ожидаемо, что надёжность сети - последняя нерешенная проблема облаков. Интересно, как они её в результате решат и решат ли в принципе.

Мои сочувствия ребятам из России, у которых пользователи/клиенты в штатах (обычно я им завидую:). У вас была горячая ночь.

Ну и это хорошее напоминание нам всем, что для критических сервисов имеет смысл посчитать стоимость резервирования хостингов.

пост №894

Сегодня 14 марта, моей дочке Варваре исполнилось 3 года. А ещё сегодня день числа π (3.14…).

Гугл по этому поводу сделал хороший продакт-маркетинг своего облачного предложения Google Cloud. Вот рассказ, как они посчитали 31.4 триллиона цифр числа пи в облаке, а вот апи для получения цифр числа, несколько простых примеров его использования (куда без генеративного искусства?) и объяснение, как это всё сделано, используя технологии GCP.

Я узнал, что в GCP есть live migration, когда виртуальная машина переносится на новый физический сервер без перезагрузки (схема магии в картинке). Хороший маркетинг.

пост №709

Гугл опубликовал post-mortem про то, почему в среду Google Cloud Global Loadbalancer лежал по всему миру полчаса. Это big deal, потому что одно из базовых обещаний крупных облачных вендоров — никаких кросс-региональных проблем. Деплоите свой супер важный сайт на 2 региона и считаете, что по хостингу SLA 100%. Ага.

Баг в коде не словили на стейджинге и на тестовой раскладке, потому что он проявлялся только при определенной конфигурации.

Интересно, что они заметили проблему через 2 минуты после её начала, 25 минут прогали фикс, 5 минут оно раскатывалось по продакшену и ещё 6 минут приходило в норму.

Жаркие же 36 минут это были для инженеров на дежурстве!

пост №261

Идеальный механизм удаления проектов в Google Cloud Platform.

При нажатии на «удалить» проект перемещается в корзину на месяц и выключается, так что ты сразу замечаешь, если от него что-то зависело.

Всем администраторам на почту приходит письмо, одним кликом по ссылке в котором можно восстановить удаленный случайно проект. 🌷

пост №117

Гугл начал раздавать халявный хостинг в своей облачной платформе. При превышении лимитов они просто берут деньги за ресурсы, использованные сверх нормы. Вот это круто https://cloud.google.com/free/

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

пост №18

Гугл в очередной раз заблокировал аккаунты и разблокировал только когда поднялась буча в соцсетях. На этот раз речь не о gmail-почте, а о google cloud platform, довольно хорошем конкуренте Amazon AWS. Как всегда у гугла, до поддержки не достучаться, а алгоритмы не такие хорошие, как хотели бы умники из Пало-Альто. :(
Имейте в виду и держите запасной вариант и бэкапы.
http://www.fredtrotter.com/2016/08/22/google-intrusion-detection-problems/