Тук-Тук! Кто там? Микросервис

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Микросервисная архитектура сильно впечаталась в умы разработки. Но на проде все это не всегда вызывает много энтузиазма. Все это, скажем так, давно известные истины. Но как быть? Надо как-то этим управлять.

Какие инструменты есть в подавляющем большинстве компаний для управления разработкой? Конечно стек Atlassian (Jira + Confluence).

Atlassian хорош тем, что у него есть плагины на все случаи жизни, почти Spring Boot )) Но текущие реалии (да и цена, и завязывание на плагины, которые могут перестать поддерживать) накладывают некоторые ограничения. А что если сделать управление только на том, что есть как говорится "из коробки"?

Итак какую боль хотим решить, зачем мы вообще это делаем:

  1. Уменьшить энтропию в репозиториях кодовой базы.

  2. Контролировать и фиксировать, что и когда едет в прод.

Вариант решения:

Заводим новый проект в Jira, который будет показывать статус деплоев в прод. Каждый проект Jira обладает уникальным набором компонентов. Вот и можно представить, что компонент в Jira == микросервис, а если еще есть правило, что один репозиторий == микросервис, все становится еще лучше)

Но не будем же мы вести реестр микросервисов в Jira? Нет конечно, это неудобно и Jira не про документацию и реестры, для этого есть Confluence.

Тогда создаем новое пространство в Confluence и оно у нас будет каталогом (мастер данными, НСИ или как угодно) наших микросервисов. Это пространство ТОЛЬКО для этого! То есть 1 страница == 1 паспорт микросервиса. Делаем шаблон паспорта (шаблоны в Confluence) и вуаля, у нас есть два объекта, которые если соединить, то можно получить и описание объекта (паспорт) и его статус (что и как часто деплоится).

Чтобы не синхронизировать справочники руками, достаточно написать скрипт, который будет периодически синхронизировать Confluence с Jira.

Все! Теперь вы можете деплоить только то, у чего есть паспорт (если сделаете поле компонента обязательным;) )

Далее можно сделать много разных фичей на этом решении:

  1. Интегрируем с CI\CD. Можно автоматически создавать тикеты в Jira при сборке и перед доставкой. Все таки не все живут на решениях - PR в master, код автоматом в прод.

  2. Можно управлять созданием репозиториев. То есть "сначала паспорт, потом репа". Это помогает, в том числе и управлять архитектурой, потому что исключает создание неуправляемого кода.

  3. Можно использовать в тикетах жиры автоназначение на code owner'а, через указание его в карточке и заполнение тем же скриптом, например.

  4. Структурой в пространстве Confluence можно управлять классификацией микросервисов (отделить бекенд от клиентов, разделять по системам, и т.п.)

  5. и многое другое, что решит конкретные боли, конкретной команды.

Что хотелось показать? Что управление микросервисами и интеграция их паспортов в процессы разработки и экплуатации может быть реализована даже на базовых инструментах. Потому что часто обсуждаются архитектуры, кодовая реализация, документация, но "встройка" этого всего в повседневную рутину для обеспечения актуальности данных, часто упускается из виду, а это важный этап инженерии.

Источник: https://habr.com/ru/articles/731640/


Интересные статьи

Интересные статьи

Привет! Я тимлид команды «Добро» в «Сравни.ру», мы занимаемся разработкой сервиса по подбору кредитных продуктов. Сервис, над которым мы работаем, помогает нашим клиентам подобрать кредитные прод...
Прим. перев.: системный архитектор Avery Pennarun, создавший VPN-решение Tailscale на базе WireGuard, размышляет об отличиях монолитов с модулями от микросервисов. Он рассказывает об эволюции подхода ...
Всего за 20 лет разработка ПО перешла от архитектурных монолитов с единой базой данных и централизованным состоянием к микросервисам, где всё распределено по многочисленным контейнерам,...
Современные микросервисные архитектуры являются событийно-ориентированными, реактивными и придерживаются хореографического подхода (в противовес к централизованному контролю через о...
Привет! Меня зовут Вадим Мадисон, я руковожу разработкой System Platform Авито. О том, как мы в компании переходим с монолитной архитектуры на микросервисную, было сказано не раз. Пора поделиться...