Допустим, есть две среды: staging и prod .
Есть также два микроуслуги: A и B .
Микросервисы уже развернуты в обеих средах и в каждой работающей версии сервиса 1. Итак, у нас есть:
- подготовка: A1, B1
- prod: A1, B1
Теперь одна группа разработчиков внедряет новую функцию в микросервисе A (либо синхронный API, либо asyn c один через посредник сообщений) и развертывает A2 для подготовки. Затем другая команда внедряет новую функцию в B, которая использует новую функцию из A2, а также развертывает ее в стадии (B2). Теперь у нас есть:
- подготовка: A2, B2
- prod: A1, B1
Новые функции тестируются в промежуточной среде клиентом и имеются одобрен для использования в производстве. Вопрос заключается в том, как определить, какие службы следует развернуть в первую очередь для производства. Очевидно, что B2 не должен быть развернут в первую очередь, потому что это зависит от A2. Существуют ли какие-либо инструменты / стратегии для отслеживания этого?
Я могу себе представить, что все сервисы отслеживают, от каких версий других сервисов они зависят, и во время развертывания эти версии проверяются на соответствие тем, что выполняется в целевой среде. а если чего-то не хватает, то развертывание отклоняется.
Это поднимает вопрос - должно ли развертывание микросервиса быть параллельным или одно-микросервисным за один раз?
И что если перед развертыванием A2 и B2, чтобы продвинуться, будет A3 выпущен к организации, и будет зависеть от B2? Теперь мы должны запланировать развертывание в производство следующим образом:
A2 => B2 => A3
Это реальные примеры, которые мне приходят в голову, но, возможно, в архитектуре микросервиса можно избежать такая ситуация по каким-то правилам?