Моя компания недавно приступила к изменению архитектуры платформы с монолитной на микросервисную архитектуру.Вся миграция может занять годы, поэтому на данный момент нам все еще нужно будет поддерживать текущее монолитное приложение при медленной разборке приложения.
Мы демонтируем монолитное приложение с помощью сервис-ориентированной архитектуры в промежуточный период для некоторого модуля ( когда база данных все еще подключена к базе данных монолитного приложения ), а некоторые мы напрямую переходим на микросервис ( микросервис владеет собственной базой данных, если применимо ).
Мы практикуем выпуск функциивсякий раз, когда он готов вместо того, чтобы следовать за окном выпуска.У каждой команды есть свои собственные этапы для управления этим, поэтому у нас есть несколько этапов среды ( 11 в общей сложности ), каждая со своим собственным набором устаревшего монолитного приложения.
При переходе на архитектуру микросервиса (, хотя я понимаю, что когда мы полностью перейдем к архитектуре микросервиса, для всей компании будет только 1 этап ), нам потребуется сохранить всете этапы, которые означают, что нам потребуется копия микросервиса в каждой промежуточной среде.
(Неозначает направлять ответы в направлении этого решения. Предпочтительно, если есть какие-либо ответы в другом направлении, чтобы у нас было больше вариантов и вариантов для рассмотрения плюсов и минусов) Одна из идей, которая у нас есть,что для каждого дБ у нас есть дополнительный столбец, чтобы отметить, для чего предназначена эта строка данных.Поэтому мы можем поддерживать один единственный экземпляр микросервиса для нескольких этапов.Проблема заключается в том, что для каждого вызова API клиентская сторона должна указывать, для чего она предназначена.Это усложняет разработку каждой службы ( необходимо учитывать, для какой базы данных промежуточного уровня отфильтровывать ), затрудняет вызов конечной точки (, поскольку необходимо указать, к какой промежуточной базе данных вам необходимо получить доступ ) и что более важно, это избыточный код, который, как предполагается, не должен присутствовать в производстве.
Проблема, с которой мы сталкиваемся, заключается в том, что по мере роста числа микросервисов потребуется много ресурсов сервера.( мы решили использовать на локальном сервере для размещения наших kubernetes и Proxmox VM для устаревшего монолита ).Существует ли какая-либо инфраструктурная архитектура, которая бы уменьшала ресурсы, необходимые для этого ?