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

Однако со временем в компании была создана экосистема low-code разработки микросервисных программных продуктов Digital Q, которая позволила нашим производственным командам автоматически генерировать часть прикладного кода, что значительно ускорило разработку продуктов.

Как следствие внедрения экосистемы low-code платформ быстро росло количество продуктов и команд. В день мы делали уже более 2 000 коммитов от 100+ команд в 300+ микросервисах на 200+ проектах.

На этом этапе встал вопрос: как теперь быстро, полностью автоматически, выпускать и доставлять все это? Ответом стало решение «Диасофт» Digital Q.DevOps. Оно автоматизирует весь процесс (от сборки и выпуска продуктов до доставки на нужные стенды), включая такие важные этапы, как прохождение автотестов и проверки на уязвимости.

Одна из платформ в составе этого решения – Digital Q.CMDB – позволяет организовать централизованное управление конфигурациями стендов. Она состоит из трех продуктов, которые координируют ключевые параметры поставки:

  1. Единый каталог ИТ-компонентов, из которых состоят наши стенды;

  2. Информацию об инфраструктурной и продуктовой конфигурации стендов и их типах;

  3. Планирование поставок продуктов и решений на целевые стенды.

Поговорим подробнее про эти продукты:

1.Продукт «Каталог ИТ-компонентов» хранит в себе информацию о типовых составляющих стендов, например:

- СУБД/БД;

- Брокер сообщений (Kafka);

- Кластер k8s/Пространств имен;

- Сервер приложений.

2.Продукт «Управление конфигурацией стенда» позволяет определять:

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

продуктовую конфигурацию – конкретный перечень конфигурационных элементов (продуктов) заданной архитектуры, формируя эталонную конфигурацию, к которой можно откатиться в случае неудачного обновления того или иного компонента. Благодаря продуктовой конфигурации мы четко фиксируем необходимый список смежных продуктов и их версионность, для обеспечения работы прикладной функциональности.

В продукте реализована возможность обмена/копирования конфигураций стендов, в том числе между разными инстансами Digital Q.CMDB. Это помогает передавать точную компонентную и продуктовую структуру между стендом разработчика и стендом тестирования или с демостенда на продакшн.

Кроме нашего внутреннего «конфигурационного комфорта» эта возможность позволяет передать всю необходимую информацию для развертывания продуктов на территории заказчика в клиентских проектах.

3. Продукт «Планирование поставок» позволяет сформировать конфигурацию поставок (состав продуктов и их версий) с учетом бизнес-требований. Готовые поставки передаются на установку согласно заданным планам и регламентам установки обновлений.

В продукте реализована возможность генерации мастер-helmchart на базе существующей поставки. Этот мастер-helmchart несет в себе полную информацию об инфраструктурной и продуктовой конфигурации и может быть передан заказчикам. С его помощью на стороне клиента в течении нескольких дней может быть произведено полностью автоматизированное развертывание вне наших платформ и без использования нашего микросервисного инсталлятора. Заказчику достаточно иметь установленный менеджер пакетов Helm.

Внутри компании с помощью Digital Q.DevOps мы смогли обеспечить полную автоматизацию доставки:

Инициатором запуска сборки становится коммит разработчика в систему контроля версий («Хранилище кода»), которая расположена в нашей платформе Digital Q.VCS. Исходный код передается в «Конвейер» платформы Digital Q.DevOps. Здесь происходит сборка образов и передача их в «Хранилище образов». Далее собранные образы передаются в продукт «Планирование поставок» для создания поставок на целевые стенды и их инсталляции и запускается процесс развертывания. В pipeline специалист может увидеть текущий статус, информацию об ошибках, если они возникали в процессе установки или итоговый протокол об окончании процесса.

Использование наших платформ для развертывания на стороне клиента незначительно отличается от описанного ранее процесса:

В этом случае мы задаем конфигурацию поставки, что именно необходимо передать заказчику и обезличенную информацию о стенде. Через «Хранилище образов» платформы Digital Q.DevOps мы передаем информацию о микросервисах во внешний «Реестр образов» из которого происходит репликация образов в «Реестр образов», установленный на стороне заказчика. Далее заказчик получает свое обновление и через продукт «Планирования поставок» создается поставка на целевой стенд и инсталляцию, а далее мы даем команду продукту «Развертывание», нашему инсталлятору, на развертывание.

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

С помощью наших платформ могут быть автоматизированы и более сложные процессы, которые включают в себя разные этапы валидации (верификацию списка задач, вошедших в поставку; функциональное/интеграционное/нагрузочное тестирование; проверки безопасности; итоговую приемку заказчиком), развертывание на эталонных стендах, передачу поставки заказчику (формирование мастер-helmchart или передача сборок через Реестр образов), автоматическую приемку заказчиком с уведомлением о статусе всех заинтересованных.

А как вы у себя автоматизировали выпуск и доставку на целевые стенды?