Привет, Хабр! На связи Кирилл Шувалов, Senior QA Test Engineer аутстаффинговой компании Smart IT. Сегодня мы поговорим с вами о том, как перенести вашу промышленную систему в кластер OpenShift бесшовно для заказчика/конечного пользователя, работая в методологии Agile и не надорваться в процессе.

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

Сложнее следить за состоянием модулей, перезапускать их, при необходимости, и распределять нагрузку, если есть дублирование. На это требуется всё больше ресурсов сотрудников вашей команды. Или требования вашей enterprise компании к надёжности внутренних систем предусматривают переход на микросервисную архитектуру с дублированием ключевых или всех сервисов. Так или иначе, перед вашей командой ставится задача перевода вашего продукта под управление OpenShift. И сделать это ваша agile-команда должна быстро, например, за квартал.

Какие специалисты будут задействованы при переезде и кто за что отвечает?

В одиночку ваша команда этого сделать не сможет из-за нехватки штата agile-команды и необходимых специалистов. Нужна помощь команды DevOps по настройке и развёртыванию вашей системы на dev и prod средах. Для вашей команды “всего-навсего” остаётся полноценное поддержание жизненного цикла системы и дальнейший перевод на микросервисную архитектуру. Нужны ресурсы аналитиков внутри вашей команды или сторонние аналитики, которые будут создавать и утверждать архитектуру вашей будущей системы “SystemName” 2.0.

Итак, для успешного вывода системы в OpenShift вам понадобятся: 

  • Команда DevOps — для подготовки кластера OpenShift;

  • TeamLead — для постановки целей и сроков;

  • Аналитики — для разработки архитектуры и её согласования;

  • Разработчики — кто-то же должен пилить новые фичи и готовить систему для перевода в OpenShift;

  • Тестировщики —  “Фигаро тут, Фигаро там”.

Аналитики создают новую архитектуру, разработчики продолжают пилить новые фичи, продакт/тимлид извергает пар из ушей. В целом, ничего нового. А что делает тестирование? А у тестирования своя головная боль. Методология agile предполагает частые поставки нового функционала заказчику. Вывод вашей системы на новые технологии дело несомненно нужное, но фичи для заказчика никто не отменял. А это значит, что тестированию предстоит проверять новые доработки на двух различных вариантах системы: на условно старой версии системы, когда система была развёрнута на серверах, и условно новой версии, когда система будет развёрнута в кластере OpenShift.

Какие технологии нужно изучить при переезде в OpenShift тестировщикам?

В целом, такое важное событие в процессе тестирования, как переезд в Openshift, мало чем отличается от обычного рабочего процесса, разве что нагрузкой и требованиями к компетенциям. Просто необходимо проводить тестирование на ещё одном контуре где развёрнута ваша система в OpenShift, который поддерживает смежная команда DevOps. Для тестирования появляется необходимость в изучении новых технологий, например:

  • Контейнеры и их жизненный цикл;

  • Взаимодействие с консолью управления кластером OpenShift;

  • Навыки конфигурации и сборки/перезапуска экземпляров сервисов;

  • Понимание принципов микросервисной архитектуры;

  • Протоколы взаимодействия между микросервисами и со сторонними системами (Kafka, gRPC, WebSocket, REST);

Что дальше?

Итак, ваши тестировщики заранее (я на это очень надеюсь) изучили новую для себя технологию и имеют представление, как и что тестировать. Команда DevOps подготовила кластер и сконфигурировала инструменты для автоматизированного диплоя. Для полного перехода в OpenShift необходимо будет выровнять релизы, передающееся на сервера и на кластер.

Что я подразумеваю под “выровнять”? Это значит, что тестированию придётся проверять новые фичи для ПРОМа на физических серверах и параллельно проверять как работают уже выпущенные релизы на новой архитектуре. А разработка будет исправлять дефекты, которые обязательно появятся на новой архитектуре. И это будет продолжаться до тех пор, пока ваша команда не перейдет полностью на новую архитектуру и не продолжит релизный цикл уже на ней. Давайте разберем этот процесс по шагам.

Релизный цикл

Шаг 1. Полный регресс системы после переноса в OpenShift. Будет здорово, если у вас уже есть автоматизация регресса основного функционала;

Шаг 2. Параллельное тестирование текущего релиза на “железные” сервера и отстающее на 2-3 релиза тестирование функционала в OpenShift;

Шаг 3. На протяжении нескольких спринтов постепенно догонять релизы выпускаемые на “железные” сервера; 

Шаг 4. Параллельный релиз системы сразу на пром двумя разными архитектурными решениями вашей системы;

шаг 5. Поэтапный перевод нагрузки с системы со старой архитектурой на новую;

Шаг 6. Доработка системы на новой архитектуре согласно требованию заказчика,  это же Agile;

Шаг 7. Полный отказ от системы на старой архитектуре и переход на новую. 

Итог

И вот, спустя множество переходов от шага к шагу по возрастанию и убыванию, ваша система наконец-то переехала в OpenShift. Заказчик не замечает разницы между старой архитектурой и новой, а это главное. Значит ваш переезд произошёл успешно и бесшовно. Впереди у ваших аналитиков ещё много работы, поскольку переезд вашей системы в OpenShift это только первый шаг в её дальнейшем развитии.

Теперь вам будет проще масштабировать и развивать свою систему!)

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


  1. TimoshkinVlad
    16.08.2022 09:33

    А разве agile методология?


    1. Smart_IT Автор
      16.08.2022 09:40

      Здравствуйте! Да, это гибкая методология разработки, итеративный подход к управлению проектами и разработке ПО. Вместо того чтобы выпускать весь продукт целиком, agile-команда выполняет работу в рамках небольших, но удобных инкрементов. Требования, планы и результаты постоянно проходят проверку на актуальность, благодаря чему команды могут быстро реагировать на изменения.