Рекомендую комбинированный подход;Сервисы помещаются в контейнеры на общем сервере, это обеспечивает некоторый уровень изоляции между сервисами. При использовании нескольких серверов для увеличения доступности и горизонтального масштабирования.
По моему опыту, это обеспечивает наименьшую стоимость и высочайшую доступность.
Хорошая система оркестровки контейнеров, такая как Kubernetes, абстрагирует это и объединяет все серверы водин виртуальный кластер, который упрощает управление всей инфраструктурой. Кроме того, он предоставляет некоторые полезные сервисы, которые выгодны для этого типа архитектуры, такие как управление жизненным циклом отдельных сервисов, балансировка нагрузки и перемещение сервисов между узлами в случае аппаратного сбоя.