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

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



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

Общая судьба


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

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

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


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

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

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


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

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

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

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

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


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

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

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


  1. KickingBear
    07.10.2016 12:47
    +11

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


  1. Scf
    07.10.2016 13:00
    +1

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


    1. joann
      07.10.2016 14:05
      +3

      Ребята из Niantic это бывшие подразделения google. Думаю им дали пару VPS бесплатна :)


    1. miolini
      07.10.2016 18:03
      +3

      Например, в AWS нет такого балансера, как в Google Cloud. Их балансер дает anycast ip и приземляет запросы на ближайшие сервера к точке терминирования трафика. Точек терминирования по все планете больше, чем их ДЦ, где доступны для поднятия виртуальные машины.


    1. MrFrizzy
      08.10.2016 18:39
      +2

      Не холивара ради,
      Вроде как G cloud местами даже дешевле aws.
      Сервисов меньше, но основные вроде как присутствуют.
      К тому же вроде скидочные программы побогаче, чем у Амазона. Хотя самые обширные скидки\партнерство проде пока у MS Azure


    1. splix
      09.10.2016 13:23

      Тотже Kubernetes есть в Google Cloud из коробки. Ну собственно потому что они его и делают.

      Ну и вообще сложно сравнить функциональность, они же разные. Яблоки и апельсины.


    1. inatale
      11.10.2016 13:09

      Дороже все-таки вряд ли, тк, например, в 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.


  1. Funbit
    07.10.2016 13:50
    +9

    Сколько же всё-таки было запросов в секунду? А то какой-то сферический апскейл в вакууме получается…


  1. Tiendil
    07.10.2016 13:58
    +4

    Как-то вот ни о чём :-(


  1. Alexey2005
    07.10.2016 14:22
    +3

    Судя по тому, какие уродливые формы приняла в Pokemon GO борьба с читерством, скоро популярность игры среди владельцев Android несколько снизится.
    Потому что когда перед пользователем стоит выбор — либо рутованное устройство, либо игра, то игра уже не кажется такой привлекательной.
    А в последнем обновлении античит-истерия разработчиков вышла на новый уровень, так что Pokemon GO уже и на значительной части кастомных прошивок не запускается.


    1. Kondra007
      07.10.2016 16:52
      +2

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


  1. ArthurKushman
    07.10.2016 14:45
    +1

    RPS?!


  1. paulousky
    07.10.2016 17:45
    +2

    Говорите

    Google Cloud вдохнул жизнь в Pokemon GO
    ?
    Как раз всё наоборот! Это Pokemon GO вдохнул жизнь в Google Cloud


  1. DioNNiS
    08.10.2016 08:32

    Водянисто, мало подробностей.


  1. debose
    08.10.2016 23:17

    Диалог, который наверняка состоялся за кадром:
    Ребят, вы готовы заплатить за хостинг в 50 раз больше?
    Нет проблем!

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