[Перевод] Как Google Cloud вдохнул жизнь в Pokémon GO

В течение всей моей карьеры инженера, я приложил руку к запуску множества продуктов, завоевавших миллионы пользователей. Люди принимают продукт, обычно, постепенно, в течение нескольких месяцев, когда внедрение новых возможностей и архитектурных изменений распланировано на достаточно долгий период. Но никогда раньше я не видел ничего даже близкого к тому росту, который компания Niantic, клиент Google Cloud, испытала с Pokémon GO.

В качестве затравки я начну с картинки, стоящей тысячи слов:

5907c9a778bb4931859f2da34933ec42.png


Наши коллеги в техническом сообществе спрашивали, какая инфраструктура помогла выжить Pokémon GO с миллионами пользователей. Niantic и команда Google Cloud вместе написали этот пост, чтобы подчеркнуть некоторые ключевые компоненты, обеспечивающие работу одной из самых популярных мобильных игр в истории.

Общая судьба


На нашем мероприятии Horizon мы представили Google Customer Reliability Engineering (CRE), новую модель работы, в которой технические специалисты Google интегрируются с командой клиента и вместе делят ответственность за надежность и успех критических облачных приложений. Первым клиентом Google CRE была Niantic, а первой работой стал запуск Pokémon GO — лучшее испытание из всех!

В течение 15 минут с момента запуска в Австралии и Новой Зеландии, трафик намного превысил ожидания студии. Это был первый показатель того, что команде Niantic удалось создать нечто действительно особенное. Niantic позвонили в Google CRE за подмогой в преддверии американского запуска, который должен был состояться на следующий день. Niantic и Google Cloud — включая CRE, SRE, разработчиков, продуктовиков, поддержку и руководителей — приготовились к нашествию новых тренеров покемонов, так как, по всем прогнозам, Pokémon GO должен был побить все предыдущие прогнозы по количеству игроков.

Создание игрового мира покемонов


Pokémon GO это мобильное приложение, которое использует множество сервисов Google Cloud, но прямым «виновником» популярности игры стал Cloud Datastore, если учесть его роль главной базы данных игрового мира, в котором ловят покемонов. График в начале этого поста рассказывает всю историю: команда рассчитывала на 1х игроков, а худший сценарий предусматривал 5х. Быстрый рост популярности Pokémon GO привел к тому, что трафик зашкалил за 50х от начальной оценки, в 10х раз больше критического уровня. В ответ на это Google CRE, по поручению Niantic, бесшовно подготовила дополнительные ресурсы, чтобы все равно оставаться впереди их рекордного роста.

Не все гладко прошло при запуске. Когда возникали проблемы со стабильностью работы игры, инженеры Niantic и Google последовательно решали каждую задачу, быстро разрабатывая и развертывая решения. Команда Google CRE работала рука об руку с Niantic, пересматривая всю их архитектуру с помощью ключевых инженеров и продуктовых менеджеров Google Cloud — все на фоне подключения к игре миллионов новых игроков.

Покемоны в контейнерах


Помимо того, что Pokémon GO стал мировым феноменом, это еще и один из лучших примеров контейнерной разработки. Логика игры работает в Google Container Engine (GKE), основанном на открытом проекте Kubernetes. Niantic выбрала GKE за способность управлять контейнерным кластером в планетарном масштабе, высвобождая силы команды на внесение «живых» изменений в игру. Таким образом, Niantic использовала Google Cloud для превращения Pokémon GO в сервис для миллионов игроков, постоянно адаптируя и улучшая его.

Одним из наиболее смелых технических решений, используемых Niantic и командой Google CRE, был переход на новую версию GKE, в котором можно было добавить более тысячи дополнительных нодов в контейнерный кластер в преддверии долгожданного запуска игры в Японии. Это почти как замена двигателя на летящем самолете — надо было принять меры для того, чтобы не навредить существующим игрокам, переход на новую версию проходил в то же время, когда миллионы новых игроков присоединялись к миру покемонов. Вдобавок к этому апгрейду, инженеры Niantic и Google совместно работали на заменой балансировщика сетевой нагрузки, развертывая новый и более сложный HTTP/S Load Balancer на его месте. HTTP/S Load Balancer — это глобальная система, работающая с HTTPS трафиком и дающая гораздо больше контроля администраторам, более быстрые подключения пользователям и большую пропускную способность файрволу, что больше подходит для того типа и объема трафика, с которым работает Pokémon GO.

Уроки, извлеченный из американского запуска — выделение ресурсов с запасом, замена архитектуры на последнюю версию Container Engine и улучшение до HTTP/S Load Balancer — пришлись кстати, когда игра запустилась в Японии. В этой стране количество пользователей было в три раза больше, чем в США двумя неделями раньше, и тем не менее запуск прошел без сбоев.

image
Команда Google Cloud GKE/Kubernetes, которая поддерживает множество наших клиентов, вроде Niantic

Еще интересные факты:


  • Игровой мир Pokémon GO использует более десяти сервисов Google Cloud.
  • Pokémon GO стал самым крупным развертыванием Kubernetes в Google Container Engine во всей истории. Из-за масштаба кластера и сопутствующего трафика, было выявлено множество ошибок, их исправили и код внесли в open source проект.
  • Чтобы поддержать огромную базу пользователей Pokémon GO, Google обеспечил работу десятков тысяч ядер для кластера Niantic в Container Engine.
  • Мировая сеть Google позволила уменьшить задержки в работе тренеров покемонов, населяющих общий игровой мир. Игровой трафик по большей части передавался в частной оптической сети Google (а она проложена даже под водой!), обеспечивая надежное подключение с малой задержкой для игроков по всему миру.

Pokémon GO от Niantic был запуском, в котором все выложились на полную, он потребовал принятия быстрых и обоснованных решений от полудюжины команд. Сам масштаб и амбиции игры требуют от Niantic использования архитектурных и операционных практик тех инженерных команд, что создают соответствующие продукты, на которых она базируется. От имени команды Google CRE я могу сказать, что это было настоящим удовольствием — быть частью такого памятного запуска, подарившего удовольствие от игры такому огромному количеству людей во всем мире.

Комментарии (0)

© Habrahabr.ru