Як Google Cloud вдихнув життя в Pokémon GO

протягом всієї моєї кар'єри інженера, я доклав руку до запуску безлічі продуктів, які завоювали мільйони користувачів. Люди приймають продукт, зазвичай, поступово, протягом декількох місяців, коли впровадження нових можливостей та архітектурних змін розплановано на досить довгий період. Але ніколи раніше я не бачив нічого навіть близького до того зросту, який компанія 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 я можу сказати, що це було справжнім задоволенням – бути частиною такого пам'ятного запуску, який подарував задоволення від гри такого величезної кількості людей у всьому світі.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.