Как организовать удобное управление развертыванием кучи инстансов SOA-системы?



Знатоки, расскажите, как организовать удобное управление развертыванием кучи инстансов SOA-системы?

Есть система, довольно простая, но на вырост сделанная в сервисной архитектуре. Состоит из "ядра" и набора "сервисов", которые общаются между собой по rabbitmq (это удобно – суть системы в обработке разнородных событий). Некоторые "сервисы" также хранят данные в postgres, а некоторые – торчат наружу по http (туда могут прилетать события, а также некоторые сервисы имеют веб-интерфейс оператора).

Итого можно сказать, что один экземпляр системы – это десяток таких сервисов + rabbit + postgres. Экземпляров (инстансов) может быть много, несколько десятков, и они между собой совершенно независимы (не должны вообще никак пересекаться). В разных инстансах может быть поднят разный набор сервисов (но всегда есть ядро+rabbitmq+postgres). Код разумеется дорабатывается и каждый компонент системы имеет много версий.

Хочется как-то автоматизировать поднятие и менеджерение инстансов такой системы. В идеале я это вижу как веб-страничку, на которой виден список поднятых инстансов, для каждого инстанса указано, из каких сервисов он состоит и какие версии каждого компонента запущены. Там же можно менять версии выбранных компонент (сервисов). А для запуска нового инстанса надо указать его имя, выбрать компоненты – и "оно" само поднимет все нужные части, указав им нужные реквизиты, заведет базы в постгресе и т.п.

Вот что стоит рассмотреть на роль этого "оно"?

Специально не указываю никаких технических деталей и ограничений, потому что интересно рассмотреть разные подходы. Скажу только, что в целом ищется простое и бюджетное решение без больших оверхедов (по своей нагрузке много инстансов могут спокойно жить на одном сервере).

124   16  
  1. Игорь Сидоров 6 месяцев назад
    Kubernetes
  2. Сергей Аксёнов 6 месяцев назад
    Я бы сделал админку на джанге, которая генерит докер-композ.
  3. Константин Герасименко 6 месяцев назад
    Кубернетес
  4. Альберт Галимов 6 месяцев назад
    Kuber/swarm +вебинтерфейс к ним, коих большое множество
  5. Roman Vr 6 месяцев назад
    Consul
  6. Anton Dementor 6 месяцев назад
    Kuber
  7. Дмитрий Балабанов 6 месяцев назад
    А как rabbit-ы общаются друг с другом?
  8. Иван Ремень 6 месяцев назад
    K8s, consul
  9. Сергей Мартынов 6 месяцев назад
    Спасибо всем за слово на букву К, это конечно ожидаемо – но все-таки, какой из "большого множества" веб-интерфейсов стоит попробовать? Чтобы оперировать не в терминах "создал сервис, прописал ему вручную порты и т.п.", а как я описал в посте?
  10. Alexander Bolshakov 6 месяцев назад
    Consul+Nomad, не нужен k8s
  11. Юра Безнос 6 месяцев назад
    Готового под подобную задачу не будет. Буду рад ошибаться, но везде где встречалось подобное, оно было самописное.
  12. Александр Костюченко 6 месяцев назад
    Swarm. Страничка со списком сервисов - Portainer.io
  13. Dmitriy Paunin 5 месяцев назад
    Kubernetes и если сильно хочется то postgres и rabbit туда же можно сунуть (если понимаете что делаете и как жить со statefull app в kube - есть плюсы и минусы)

    https://github.com/paunin/PostDock
    https://github.com/paunin/docker-rabbitmq-cluster

    https://medium.com/.../the-best-architecture-with-docker...
    https://medium.com/.../postgresql-cluster-into-kubernetes...
  14. Artem Koshelev 5 месяцев назад
    "ищется простое и бюджетное решение без больших оверхедов" - Hashicorp или Pacemaker
  15. Андрей Копейко 5 месяцев назад
    Используй Puppet или Salt
  16. Александр Бурцев 5 месяцев назад
    gitlab-ci. и докер контейнеры

Добавить ответ:
Отменить.