#google cloud

12 постов
пост №2023Разработка и инженерия

Публичные API ключи гугла, те, которые разработчики используют для вставки Google Maps карт себе на сайт, могут использоваться для доступа к перепискам с Gemini (ИИ от гугла) и скачивания загруженных туда файлов; а ещё с помощью этих же ключей можно пользоваться ИИ Gemini от имени создателя сайта (и гугл потом выставит им круглый счет за это).

Разработчики сообщают о счетах на десятки тысяч долларов.

Исследователи нашли уязвимость с ноябре 25го и гугл уже почистил большинство ключей, но если вы настраивали гугл-карты у себя на сайте или пользуетесь Firebase и включили на этом же GCP проекте Gemini API — стоит его выключить и перенести в отдельный проект.

🤯

пост №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 — кажется дезинформация.

пост №1173ИИ и машинное обучение

У меня на руках было 18 часов аудиозаписей, которые нужно было перевести в текст. Как расшифровать аудио в текст?

Можно заплатить профессионалам.

Можно самому всё слушать и печатать, это сложная и долгая работа.

Я решил скормить аудио дорожки машине и исправить трудные для алгоритма слова руками в специальном редакторе.

Для текстов на английском языке есть совершенно космический редактор — Descript. В нем редактируешь текст, а он при этом сам переставляет местами нужные куски аудио. Прорыв для редактуры подкастов, пока, к сожалению, для нас недоступный.

С поддержкой русского выбор немного сужается, но всё равно есть очень классные сервисы: HappyScribe, Trint, SimonSays, Sonix. Эти продукты отличаются моделью ценообразования и вниманием к деталям.

Эти сервисы не разрабывают алгоритмы распознавания речи. Я уверен, что они пользуются облачными API одного из крупных игроков — у гугла эта штука называется Google Cloud Speech-to-Text. Практические идентичные решения есть у Яндекса, Амазона и Microsoft.

По стоимости: расшифровка часа видеозвонка в гугле стоит 2.16$, у яндекса — 0.46$, а в Sonix — от 5 до 10$, остальные сервисы ещё дороже. Для сравнения, профессиональная расшифровка с русского — около 23$ за час.

Даже с крутым сервисом, работа заняла у меня больше 40 часов. Я сильно недооценил необходимый объем труда.

Кстати, у гугла есть вариант «поделиться своими аудиозаписями с гуглом для улучшения моделей распознавания». Тогда они дают скидку в 30% и берут за распознавания речи только 1.44$ в час.

Есть идея о том, что компании должны платить нам за наши данные. Это — первый известный мне пример реализации этой идеи на практике.

пост №961Разработка и инженерия

Гугл опубликовал публичный постмортем про воскресную аварию. Текст длинный, но суть простая: у них ломается сеть, если специальная программа не подвозит правильную конфигурацию сети (BGP) каждые пару минут. Несколько копий этой программы запущены на отдельных серверах в каждом дата-центре (отказоустойчивость!). Эти серверы включает-выключает другая программа управления конфигурацией. Во второй программе была ошибка, из-за которой она выключила все копии первой программы. Через пару минут после этого протухли BGP-анонсы и развалилась сеть.

Из-за сломанной сети были недоступны внутренние инструменты, которыми пользуются сисадмины при исправлении проблем. Гугл говорит, что у них есть специальные бункеры с какими-то особыми доступами, но пока админы туда доехали — прошло дополнительное время. Самое главное, что система конфигурации потеряла своё внутреннее состояние и админам пришлось заново настраивать всё руками — это заняло очень много времени.

Чинят тем, что 1) запретят подсистеме выключения задач тушить сразу несколько серваков 2) система не будут терять состояние при потушенных серверах (не придется настраивать её заново руками) 3) сеть будет дольше работать без внешней поддержки программой управления (самое очевидное решение).

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

пост №956Разработка и инженерия

Перевёл сегодня интерфейс одного проекта с одного языка на другой с помощью Google Cloud Translation API.

Сделать сначала грубый машинный перевод, посмотреть его «в живую» и потом писать нормальный перевод — классный способ. Сразу видно, какие интерфейсные элементы вообще не заведены в систему локализации.

Я попробовал несколько разных систем машинного перевода для этой задачи, самая хорошая - Google Translate. Она даже теги span и переменные в фигурных скобках не корёжит, переводит только тексты. Учитывая бесплатные полмиллиона символов перевода - даже с настройкой биллинга не придётся заморачиваться, скорее всего. Регистрируетесь в Google Cloud Platform, пишете небольшой питоновский скрипт и вперёд. Можете взять мой за основу.

Конечно, локализация (l10n) и интернационализация (i18n) проекта (разница между ними) — гораздо больше, чем просто перевод; а даже организация перевода для большого проекта с несколькими переводчиками — то ещё развлечение. Но это тема для гораздо более длинного поста.

пост №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 минут это были для инженеров на дежурстве!

пост №117Разработка и инженерия

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

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