Проблемы, связанные с релизами it-продуктов на микросервисной архитектуре
Конечно, микросервисная архитектура - это не серебряная пуля. Как и все в этом мире, она имеет свою долю недостатков и ограничений. В этой статье я опущу технические аспекты и сосредоточусь только на проблемах, связанных с управлением релизами it-продуктов на микросервисной архитектуре. С этой точки зрения я хотел бы выделить следующие проблемы:
- Частые релизы. По своей природе архитектура микросервисов вынуждает нас выпускать релизы чаще, чтобы обеспечить быструю и детализированную поставку нашим клиентам. Вместо одного релиза монолитного решения мы будем выпускать несколько небольших релизов нескольких микросервисов. С точки зрения управления релизами это создает накладные расходы на планирование, отслеживание прогресса и интеграцию. Ситуация станет еще хуже, если учесть тот факт, что у каждого сервиса свой цикл выпуска.
- Вариативный процесс разработки. Scrum, Kanban или что-то другое? Нет проблем. Микросервисная архитектура позволяет командам выбирать свой собственный процесс разработки без необходимости согласовывать его с другими командами. Это, безусловно, хорошо для команд разработчиков, но может стать кошмаром для менеджера продукта или менеджера релиза ( PO /RM), которому необходимо создать единый план для всего решения.
- Зависимости между релизами микросервисов. Для реализации определенной бизнес-функции необходимо выпустить все версии соответствующих микросервисов. Такой подход влечет за собой гораздо большие управленческие расходы по сравнению с выпуском только одной версии монолитного решения. PO/RM приходится объединять эти версии в консолидированный план, чтобы ответить на вопрос «Когда будет предоставлена функциональность?», а не просто знать дату релиза монолита. Задержка любой версии приведет к общей задержке всего процесса поставки. Поэтому у PM/RM должен быть простой способ интегрировать несколько версий в единый пакет поставки и отслеживать, был ли он поставлен в соответствии с планом.
- Интеграционное тестирование end to end. Этот пункт особенно актуален для корпоративных B2B-решений с рядом запрошенных клиентом кастомизаций. Все решение должно быть настроено специально для каждого клиента и протестировано после того, как функциональность будет реализована в каждом конкретном микросервисе. Для этого PO/RM должен иметь представление о последней стабильной версии каждого микросервиса, иметь представление о том, какие версии развернуты и в каком окружении (пул окружений или контейнеры в определенной конфигурации), а также координировать тестирование и приемку.
В Jira есть встроенные версии и функциональность отслеживания прогресса. Но, принимая во внимание вышеупомянутые проблемы, существуют открытые вопросы для построения эффективного релизного процесса микросервисов:
- Невозможно определить рабочий процесс версии, поэтому невозможно понять, на какой стадии находится версия. Например, все функциональные требования могут быть выполнены, но версия микросервиса должна пройти нагрузочное тестирование перед развертыванием в производственной среде.
- Скорее всего, различные команды, разрабатывающие микросервисы, будут работать по своему собственному workflow в Jira, чтобы иметь возможность гибко организовать свой собственный процесс разработки. Из коробки Jira не имеет удобной функциональности для визуализации и отслеживания версий из нескольких продуктов в одном месте.
- Кроме того, было бы выгодно объединить несколько версий микросервисов в один релиз, который будет представлять желаемую бизнес-функциональность во всех сервисах.
- Релиз может иметь свой собственный workflow. Например, перед внедрением в производство может потребоваться сквозное тестирование, даже после принятия клиентом B2B.
Инструменты для управления релизом
Видно, что Jira обладает большой гибкостью и позволяет устранить эти ограничения различными и эффективными способами: используя встроенные возможности или расширяя их с помощью сторонних приложений.
Вы можете обратиться к этой полезной статье о том, как настроить workflow управления релизами с помощью стандартной функциональности.
Альтернативный способ организации управления релизами микросервисов предлагает приложение Release management (Release management для Jira Cloud).
Определим контекст
Представим себе организацию с 5 командами, которые работают над своими собственными микросервисами:

Схема 5 команд, работающих над it-продуктом с микросервисной архитектурой Каждый микросервис имеет свой собственный релизный цикл, который не синхронизирован с релизными циклами других микросервисов. Обычно каждая конкретная Пользовательская история (от англ. User story - формат описания задачи на новый функционал для команды разработки) требует внесения изменений в несколько микросервисов.
Давайте рассмотрим, как приложение Release management может упростить управление релизными циклами микросервисов.
Визуализация версий различных сервисов на доске
Одно из правил Kanban гласит: «Визуализируйте поток». Это правило - очень важная концепция, поскольку большинство людей на Земле - визуалы, поэтому они лучше воспринимают визуальное представление информации. В приложении Release Management можно импортировать версии из нескольких сервисов и визуализировать их на доске. Из коробки Jira имеет два статуса версий: Releases и Unreleased. Приложение Releases Management расширяет эту возможность за счет пользовательского workflow версий. Workflow легко интегрируется со встроенными статусами версий.

Kanban доска в Jira для визуализации версий Особое преимущество, о котором я хотел бы рассказать, - это возможность перетаскивать версии из одного столбца в другой на одной доске, так что менеджеру релиза не нужно перескакивать между разными страницами веб-интерфейса, чтобы обновить несколько распределенных версий.
Создание многоверсионного релиза
Хотя хорошо, когда все версии из нескольких сервисов визуализируются на одной доске, запоминать и держать в голове, какие именно версии должны быть выпущены для реализации той или иной User story, не надежно и слишком рискованно.
Чтобы решить эту проблему, в приложении была введена сущность Release. Release может состоять из нескольких версий. При этом каждая версия может не принадлежать, принадлежать одному или нескольким релизам.
В нашем примере мы можем объединить все версии, которые должны быть поставлены для расширения китайского рынка, в один Release и отслеживать их вместе.

Kanban доска в Jira для визуализации релиза, нацеленного на расширение Китайского рынка Кроме того, сущность Release может иметь свой собственный workflow для визуализации деятельности, связанной с поставкой User story, например, включающий в себя статусы: интеграционное тестирование, тестирование производительности или приемочноое тестирование.

Кастомный workflow для Release в Jira Построение временной шкалы
Управление релизами - это не только статусы, но и точное знание того, когда будет готова та или иная версия. Представление в виде Timeline - идеальное решение для этой цели. Кроме того, оно хорошо подходит для создания отчетов.

Timeline релизов в Jira API и интеграция с CI
Непрерывная доставка (от англ. Continuous delivery) - это все об автоматизации. В идеальном мире инструмент управления релизами должен быть интегрирован с сервером непрерывной интеграции, чтобы автоматически обновлять статусы версий после каждого развертывания.
Приложение Release Management имеет мощный REST API, который позволяет легко интегрироваться с CI-сервером с помощью webhooks. Это значительно сократит объем ручной работы и накладные расходы менеджеров.
Заключение
Микросервисная архитектура - это мощная технология разработки программного обеспечения, отвечающая требованиям современного рынка. Она позволяет решать проблемы масштабируемости, надежности и качества, а также значительно сокращать время выхода на рынок, что крайне важно для высококонкурентных рынков.
Чтобы в полной мере использовать преимущества микросервисной архитектуры, нам необходимо снизить управленческие накладные расходы, которые естественным образом возникают в гранулированной и распределенной системе (в отличие от монолита).
Приложение Release Management помогает устранить накладные расходы, автоматизировать рутинные операции и создать единое рабочее пространство для RM/PO. Кроме того, оно обеспечивает лучшую видимость и делает управление сложными, многокомпонентными релизами простым и понятным.