@Andrewavo

Независимая выкатка микросервисов. Как сделать так, чтобы на продакшен не попадал неготовый код?

Есть проект, разделённый на микросервисы, единая точка входа микросервис Gateway. Допустим мы изменили микросервис А, изменения потребовали изменение Gateway. Параллельно велась работа над микросервисом B, которые тоже потребовали изменения в Gateway. B еще не готов и работает некорректно. Для выкатки A на production мы вынуждены выкатить Gateway, но туда попадут также незаконченные изменения для B, то есть мы не можем независимо выкатить A. Как решить проблему независимой выкатки A?
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 3
@vitaly_il1
DevOps Consulting
Допустим мы изменили микросервис А, изменения потребовали изменение Gateway

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

Например https://medium.com/@denhox/managing-version-depend...
"If deploying a new version of a service requires deploying new versions of other services at the same time, you’re probably doing microservices wrong."
Ответ написан
Комментировать
@Belvarm
Java TeamLead, интеграционные решения
Делайте разработку в отдельных ветках, сливайте в девелоп уже при завершении разработки и перед подготовкой к релизу.
Ответ написан
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Делаете три окружения: develop, staging, production. Develop - WIP, то, над чем сейчас идет работа. Staging - следующий стабильный продакшен. Тестирование отдельных фич можно проводить как в рамках staging так и в develop. Еще можно завести отдельный testing - туда отдельно вливать и деплоить изменения конкретно для тестирования. Работа ведется в рамках рабочего процесса github flow. Для каждого окружения поднимаете все нужные сервера и сервисы. Настраиваете автоматический деплой по PR в ветку для develop/testing/staging. Настраиваете автоматический запуск тестирования, при этом если тесты не проходят - деплой тоже не происходит. Деплой в production запускается либо по событию "релиз" либо вручную. Кроме того, сам деплой в production настраивается пошагово с возможностью отката на предыдущую версию. В целом же, рекомендую сделать декомпозицию вашего решения и рассмотреть возможность разделить ваш шлюз на несколько независимых компонентов/модулей.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы