Как играть и побеждать в AWS GameDay: опыт команды Provectus

Привет! Я Алексей Герасимов, Senior Solution Architect в компании Provectus. В мои задачи входит определение потребностей и основных «болей» клиента, быстрый поиск решения, удовлетворяющего поставленным требованиям. Поэтому в AWS GameDay я видел возможность протестировать свои умения в более безопасной среде. И в 2019, и в 2021 мы, #ProvectusTeam, занимали первое место в турнирной таблице виртуального чемпионата.

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

Опыт команды Provectus в AWS GameDay: 2019 vs 2021

Начну с краткого описания самого формата. AWS GameDay — техническое соревнование, в котором команды ищут решение поставленной задачи в игровой симуляции, то есть без реального риска. Для Amazon Web Services — отличная возможность прорекламировать свои самые свежие сервисы и продукты, для участников (IT-специалистов со всего мира) — в формате игры получить образовательный опыт.

Игра не подразумевает единого верного ответа, вам не дают пошаговых инструкций — каждая команда самостоятельно прокладывает путь к решению задачи.

#ProvectusTeam участвовала в AWS GameDay два года подряд: в октябре 2019-го и в марте 2021-го (с 2020-м было явно что-то не так, и традицию проведения нарушили сами организаторы). Для меня лично опыт участия в первый и второй раз значительно отличался.

AWS GameDay 2019: драйв и препятствия

В 2019-м, как раз незадолго до GameDay, я сдал свою первую AWS-сертификацию уровня Associate — исчерпывающего практического опыта во многих сервисах AWS. Именно участие в GameDay для меня стало толчком к углубленному изучению различных сервисов, с которыми многие не сталкиваются.

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

В 2019 году мы заняли первое место, обойдя больше 130 команд со всего мира. Формат игры был предельно драйвовым — нагрузка постоянно возрастала, инфраструктура периодически выходила из строя, аккаунт могли взломать, провести DDoS атаку. Нужно было постоянно мониторить инфраструктуру и трафик, за который начисляются очки. Из-за постоянно изменяющихся условий все находились в напряжении и держалась интрига — команды в первой десятке постоянно менялись местами. Мы долгое время шли на 7–8 месте. До тех самых пор, пока не произошел очередной «подвох» от AWS, который мы намного быстрее других нашли и починили. AWS Security Team провела условный взлом и испортила таблицы маршрутизации.

Таким образом, вырвались вперед и уже не упускали лидерство в течение следующих двух часов.

AWS GameDay 2021: миграция единорогов

В AWS GameDay 2021 мы зашли практически новым составом. Из участвовавших в прошлый раз остался я на позиции капитана и Software Engineer Леонид Блохин. Вместо трех разных локаций по всему миру у нас уже было четыре (Украина, США, Татарстан и Перу), поэтому на начальном этапе игры важно было настроить грамотный процесс коммуникации, притереться друг к другу.

В команду мне удалось привлечь коллег, с которыми много пересекался по работе, таким образом, из десяти человек четверо оказались архитекторами. Как показал финальный результат, это дает серьезное преимущество. Solution Architects — специалисты высокой квалификации, привыкшие к тому, чтобы быстро анализировать ситуацию и изучать новую информацию, а в условиях подобного соревнования это как нельзя кстати.

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

Всего ивент длится пять часов. Первые полчаса организаторы дают вводные, затем команды приступают к заданию. Само задание объемное, расписано по пунктам, включает в себя миграцию базы, миграцию сервера, масштабирование в ECS-кластере и оптимизацию. Главная задача — максимально качественное выполнение каждого из пунктов, так как успеть сделать все в ограниченных временных рамках невозможно.

Мы справились с первыми двумя пунктами, третий — поднятие ECS-кластера завершили, но не полностью развернули смигрированное решение (на это потребовалось бы немного больше времени), также сделали часть из бонусных задач оптимизации, связанных с Well-Architected Framework (Operational Excellence, Security, Performance, Reliability, Cost optimisation).

Механика игры подразумевает постоянное увеличение нагрузки на сервер. В двух словах, если сервер доступен, очки добавляются, не доступен — отнимаются. Допустимой считается потеря 5% запроса.

Когда команда делает миграцию и подключает DNS, организаторы начинают считать его доступность и соответственно очки. За 3 минуты посылают несколько тысяч запросов и допустимо только 5% фейлов. За выполнение этого условия начисляется 100 баллов, в противном случае — минус 200.

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

Unicorn Inc & Unicorn Buys: как переместить единорогов с одного сервера на другой без потерь

Кроме игровой механики, спецификой отличался и воображаемый сценарий. По сюжету некая Unicorn Incorporated приобретает компанию, которая занимается продажей единорогов — Unicorn Buys. Ее сайт развернут непонятно где, а вам необходимо перенести его на Amazon и подключить в общую инфраструктуру. Миграцию нужно сделать при условии, что ни инженеров на той стороне, ни доступа в репозиторий нет. Ведь все празднуют продажу компании на Гавайях! Поэтому нет ни данных про инфраструктуру, ни доступа к кодовой базе. Необходимо сделать в буквальном смысле слепок базы, сервера и перенести его на Amazon.

Для миграции использовали Database Migration Service (DMS) и CloudEndure. Последний — новый сервис, и для всех было удивительно, что Amazon его предлагает, но благо предупредили о нем заранее, поэтому была возможность познакомиться с возможностями сервиса до игры. Кроме того, использовали различные network setup, VPC, Elastic Load Balancer. Поднимали Guard Duty, WAF (Web Application Framework), шифровали базу, использовали KMS, шифровали Elastic File System.

Баллы начислялись и за то, что команда придерживалась Well-Architected Framework с точки зрения масштабируемости, безопасности, эффективности затрат. Также — за использование CDC (Change Data Capture) для миграции с on-premise data center. Продажи единорогов идут непрерывно, поэтому, когда мы переносим базу без CDC, база может находиться в неконсистентном состоянии до переключения трафика на новые сервера. Чтобы этого избежать, настраиваем непрерывное реплицирование — с обновлением база полностью синхронизируется. И за это также дополнительные очки.

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

GameDay как общемировая практика в сфере IT, или Почему стоит проводить геймдеи в компаниях

Формат game day придуман не AWS, хоть AWS GameDay уже сам по себе стал брендом. Многие компании регулярно практикуют подобные мероприятия. Если речь не об интерактивном ивенте, где мы соревнуемся с другими участниками, геймдей — возможность внутри компании провести стресс-тест на отказоустойчивость. Главная цель — проверить, как на необычный сценарий среагирует та или иная команда.

Как это происходит? За примером обратимся к Netflix — одному из самых больших фанатов этого формата. Необычный сценарий, прописанный в специальном плейбуке, запускают на ограниченный период времени (день/неделю). Это может быть отключение части инфраструктуры, когда в буквальном смысле гасят сервера и смотрят, как остальная часть инфраструктуры с этим справляется.

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

Столб падает на строение data-центра, и он выходит из строя. Во время ремонтных работ механически повреждается оптоволокно и пропадает связь с data-центром. Насколько быстро команда сможет переключиться на другую зону или регион, восстановить данные в случае disaster recovery? Ведь события непреодолимой силы предупредить нельзя никак, а вот подготовиться к их последствиям реально. И только компании решать, насколько она хочет быть готова к подобным рискам. Либо ты постоянно доступен, либо ты не в бизнесе.

И тут актуальность формата game day становится очевидна. Затраты на последствия отключения инфраструктуры не сравнятся с профитом от проведенного обучения для специалистов компании.

Легенда игры в 2021 году

Наша компания по аренде и доставке единорогов Unicorn.Rentals купила другую компанию BuyMyUnicorns.com, которая занимается онлайн-продажей единорогов. Инфраструктура BuyMyUnicorns.com находится on-premise, и нам нужно их срочно мигрировать на AWS для синхронизации бизнес-процессов.

Однако есть проблема — вся команда BuyMyUnicorns.com недоступна, потому что празднует продажу компании на Гавайях. Доступа к репозиторию ещё нет. Есть только доступ к их серверам.

Механика и этапы прохождения AWS GameDay

По механике игры баллы начислялись за прохождение определенного этапа и стабильную доступность приложения после миграции. Дополнительные баллы давались за следование принципам Well-Architected Framework.

В 2021 году был Migration and Modernization GameDay и он состоял из 4 условных этапов:

1. Миграция базы данных. Предлагалось мигрировать MySQL базу данных. При этом исходное приложение должно было работать без перебоев. Это проверялось автоматически — если приложение было недоступно, то начислялись штрафные баллы. Так как во время и после миграции приложение продолжало активно работать (продавать единорогов), нужно было реализовать непрерывную репликацию. Иначе были бы потери данных после миграции.

2. Миграция сервера. Теперь пришла очередь мигрировать веб-сервера для WordPress-приложения. Опять же даунтаймы при этой активности должны были быть минимизированы.

После этого этапа и переключения трафика на новые сервера включалось начисление баллов за стабильную доступность приложения. Допустимым были только 5% потерь. При превышении этого лимита баллы вычитались.

3. Переход на контейнеры. Третий этап уже был связан с модернизацией — переход на контейнеризацию, используя сервисы AWS. Для этого мы решили использовать Amazon ECS (Elastic Container Service). Как я писал ранее, репозиторий был недоступен, поэтому передачу всех данных делали через Amazon EFS (Elastic File System).

4. Оптимизация. Этот этап был про следование принципам Well-Architected Framework, которые стоило соблюдать на всех предыдущих этапах, как и в реальной жизни :)

Well-Architected Framework состоит из пяти столпов (pillars). Применимо к этому GameDay надо было решить следующие вопросы:

1. Оптимизация бизнес‑процессов:

  • Как вы будете мониторить вашу инфраструктуру в едином view, даже между регионами?
  • Как вы реализуете мониторинг, аудит, алертинг, чтобы понять, когда что случится в вашем аккаунте?

2. Безопасность:

  • Защита данных at-rest и in-transit.
  • Как вы защитите ваш сайт от различных видов атак?
  • Как вы защитите ваш AWS-аккаунт и нагрузки с помощью интеллектуального определения угроз и непрерывного мониторинга?

3. Надежность:

  • Как распределить трафик между множеством серверов в различных зонах доступности (Availability Zones)?
  • Как реализовать автоматическое восстановление, если веб-сервер выйдет из строя?
  • Как справиться с растущей нагрузкой?
  • Как распространять сервис по всему миру с малой задержкой и большой скоростью передачи?
  • Как справляться с DDoS атаками?

4. Уровень производительности:

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

5. Оптимизация затрат:

  • Как гарантировать наибольшую экономию при использовании EC2?

6. Технологии и процессы, задействованные в решении задачи:

Для миграции мы использовали:

Для распределения нагрузки и защиты — Amazon VPC(Virtual Private Cloud), Amazon Application Load Balancer(ALB), Auto-Scaling Group(ASG).

Для модернизации:

Для безопасности и мониторинга:

Все данные, конечно, были зашифрованы с помощью AWS Key Management Service (KMS).

Вывод

GameDay входит в рекомендуемую практику в AWS Well-Architected Framework. Во многих крупных компаниях она является обязательной на ряду с runbooks и playbooks. И если последние призваны формализовать процессы, когда всё идёт хорошо, то GameDay помогает отработать процессы, когда что-то пошло не по плану.

Такие компании, как Netflix и New Relic, уже давно пользуются подобными событиями, чтобы быть уверенными, что их инфраструктура всегда высокодоступна (highly available) и что случайный выход из строя некоторого набора серверов или сервисов будет незаметно для пользователей. При этом менеджмент Netflix не предупреждает сотрудников о проведении подобных мероприятий. Так проверяется, что команда всегда готова быстро включиться в устранение любых инцидентов. А если окажется, что ответственная команда не смогла в ожидаемое время исправить ситуацию, то составляется postmortem, обновляются процессы и документация, проводятся дополнительные тренинги.

Есть GameDays, направленные на специфические процессы типа миграции или проверки безопасности. AWS в рамках своих игр обычно проверяет сразу набор компетенций участвующих команд.

GameDay позволяет найти нехватку определенных практик и компетенций в более спокойной безопасной (иногда игровой) атмосфере. Так можно избежать печальных последствий в реальных «боевых» условиях.

👍НравитсяПонравилось7
В избранноеВ избранном1
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Мабуть-таки варто читати такі статті на початку робочого дня, для натхнення. Даремно я припинив цю практику)

Очень интересная, познавательная и мотивирующая статья! Спасибо!
Радует, что в нашей стране есть такие молодцы, которые даже в такой конкурентной борьбе смогли стать победителями!

Подписаться на комментарии