company_banner

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

https://cloudplatform.googleblog.com/2016/09/bringing-Pokemon-GO-to-life-on-Google-Cloud.html
  • Перевод
В течение всей моей карьеры инженера, я приложил руку к запуску множества продуктов, завоевавших миллионы пользователей. Люди принимают продукт, обычно, постепенно, в течение нескольких месяцев, когда внедрение новых возможностей и архитектурных изменений распланировано на достаточно долгий период. Но никогда раньше я не видел ничего даже близкого к тому росту, который компания Niantic, клиент Google Cloud, испытала с Pokémon GO.

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



Наши коллеги в техническом сообществе спрашивали, какая инфраструктура помогла выжить 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 я могу сказать, что это было настоящим удовольствием – быть частью такого памятного запуска, подарившего удовольствие от игры такому огромному количеству людей во всем мире.
Google 92,07
Филин Лаки
Поделиться публикацией
Комментарии 17
  • +11
    Все очень круто, но запуск не был таким гладким как описывается в статье. Мощностей явно не хватало
    • +1

      А можно вкратце, в чем смысл использовать google cloud вместо AWS? Когда я смотрел в последний раз, он был дороже и более бедным по функционалу.

      • +3
        Ребята из Niantic это бывшие подразделения google. Думаю им дали пару VPS бесплатна :)
        • +3
          Например, в AWS нет такого балансера, как в Google Cloud. Их балансер дает anycast ip и приземляет запросы на ближайшие сервера к точке терминирования трафика. Точек терминирования по все планете больше, чем их ДЦ, где доступны для поднятия виртуальные машины.
          • 0
            Куда конкретно приземляется трафик пущенный по Anycast?
            • 0
              Сетевое оборудование провайдера обменивается информацией о том, какие автономные системы могут обслуживают ту или иную подсеть. Маршрутов может быть много. Оборудование старается выбирать оптимальный путь (короче, дешевле, меньше загрузка). В данном случае один и тот же ip адрес (на самом деле минимум подсеть /24) аннонсируется из разных ДЦ. Пакеты от пользователя в США побегут в ДЦ в США, пакеты от пользователя в Европе побегут в ДЦ в Европе.
          • +2
            Не холивара ради,
            Вроде как G cloud местами даже дешевле aws.
            Сервисов меньше, но основные вроде как присутствуют.
            К тому же вроде скидочные программы побогаче, чем у Амазона. Хотя самые обширные скидки\партнерство проде пока у MS Azure
            • 0
              Тотже Kubernetes есть в Google Cloud из коробки. Ну собственно потому что они его и делают.

              Ну и вообще сложно сравнить функциональность, они же разные. Яблоки и апельсины.
              • 0
                Дороже все-таки вряд ли, тк, например, в Google Cloud для вычислительных ресурсов автоматически скидка начисляется (до 30%) при постоянном использовании ресурсов, подробнее здесь (это даже если сравнивать с reserved в AWS). Кроме того, биллинг поминутный (без округления как в AWS), здесь замечу, что поминутный биллинг и у Azure. Во многих сценариях, кстати, именно поминутный биллинг бывает вполне ощутимым.

                И еще в тему price war :) не все так однозначно: Whatever the cost may be: Cloud price war continues и What's the Best Cloud? Probably GCP.
              • +9
                Сколько же всё-таки было запросов в секунду? А то какой-то сферический апскейл в вакууме получается…
                • +4
                  Как-то вот ни о чём :-(
                  • +3
                    Судя по тому, какие уродливые формы приняла в Pokemon GO борьба с читерством, скоро популярность игры среди владельцев Android несколько снизится.
                    Потому что когда перед пользователем стоит выбор — либо рутованное устройство, либо игра, то игра уже не кажется такой привлекательной.
                    А в последнем обновлении античит-истерия разработчиков вышла на новый уровень, так что Pokemon GO уже и на значительной части кастомных прошивок не запускается.
                    • +2

                      А что там за новый уровень истерии? После запрета рутованных устройств, куда уж хуже...

                    • +1
                      RPS?!
                      • +2
                        Говорите
                        Google Cloud вдохнул жизнь в Pokémon GO
                        ?
                        Как раз всё наоборот! Это Pokémon GO вдохнул жизнь в Google Cloud
                        • 0
                          Водянисто, мало подробностей.
                          • 0
                            Диалог, который наверняка состоялся за кадром:
                            Ребят, вы готовы заплатить за хостинг в 50 раз больше?
                            Нет проблем!

                            В неидеальном мире этот дилог происходит так:
                            Наш полугодовой бюджет на хостинг улетел за 1 месяц, что будем делать?
                            Режьте мощности! И оптимизируйте северную часть, асап!

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое