Я почти никогда не касался настоящего кровавого энтерпрайза, поэтому те проекты, что я веду один, я развёртываю просто: nginx на хосте как reverse proxy, каждый отдельный сервис в своём контейнере systemd-nspawn. Работает как часы. Но вот никак не могу стандартизировать процесс обновления сервисов. Например, один из вариантов, которые я использую это git push. На удалённой стороне настроен git-hook, который сперва разворачивает приложение в отдельной дериктории, потом переключаёт символические ссылки и, наконец, вызывает systemctl reload <service> для бесшовной миграции на новую версию. Считаю, что это решение на коленке, хотя бы потому, что код git-hook лежит безпризорный на сервере, никак не версионируется. Да и развёртывание иногда происходит с ошибками, поэтому приходится заходить по ssh и ручками решать проблемы. Сейчас подумываю над тем, чтобы вервис заворачивать в образ. Образ можно собирать на локальной машине и как-то его доставлять на хост, там перезагружать через machinectl. Но тут же бесшовно не получается без нескольких реплик, нужно что-то думать.
Короче, если вы знаете какой-нибудь пример простого и надёжного развёртывания, буду рад о нём узнать
Докеры и всякое монструозное говно для современых разрабов-одуванчиков не предлагать.