Итак, куча всего смешана, давайте разбираться. У нас имеется:
- X различных сервисов с различными интерфейсами
- отсутствие транзакционности
- отсутствие гарантии доступности сервисов
- необходимость это все контролировать
Как в реальности это решается:
-
Saga Pattern - отличная вещь, появилась именно как микросервисная транзакционность
- нам потребуется оркестрация. Я не очень в курсе что сейчас по on-prem решениям но из моего мира есть AWS StepFunctions. Ищем аналоги для своего энва
- если нет готовых решений то придется строить свою событийную архитектуру на очередях с брокерами и медиаторами
- для проблемы не доступности сервисов придется использовать exponential backoff или exponential retry. Опять, же, в моем мире это решает AWS SNS.
Вообще, во времена до облаков я такое делал на RabbitMQ и смекалке, но с любыми такими системами встает проблема валидация контрактов, так что только вам решать на какую часть переносить сложность.