Как организовать удобное управление развертыванием кучи инстансов SOA-системы?
Знатоки, расскажите, как организовать удобное управление развертыванием кучи инстансов SOA-системы?
Есть система, довольно простая, но на вырост сделанная в сервисной архитектуре. Состоит из "ядра" и набора "сервисов", которые общаются между собой по rabbitmq (это удобно – суть системы в обработке разнородных событий). Некоторые "сервисы" также хранят данные в postgres, а некоторые – торчат наружу по http (туда могут прилетать события, а также некоторые сервисы имеют веб-интерфейс оператора).
Итого можно сказать, что один экземпляр системы – это десяток таких сервисов + rabbit + postgres. Экземпляров (инстансов) может быть много, несколько десятков, и они между собой совершенно независимы (не должны вообще никак пересекаться). В разных инстансах может быть поднят разный набор сервисов (но всегда есть ядро+rabbitmq+postgres). Код разумеется дорабатывается и каждый компонент системы имеет много версий.
Хочется как-то автоматизировать поднятие и менеджерение инстансов такой системы. В идеале я это вижу как веб-страничку, на которой виден список поднятых инстансов, для каждого инстанса указано, из каких сервисов он состоит и какие версии каждого компонента запущены. Там же можно менять версии выбранных компонент (сервисов). А для запуска нового инстанса надо указать его имя, выбрать компоненты – и "оно" само поднимет все нужные части, указав им нужные реквизиты, заведет базы в постгресе и т.п.
Вот что стоит рассмотреть на роль этого "оно"?
Специально не указываю никаких технических деталей и ограничений, потому что интересно рассмотреть разные подходы. Скажу только, что в целом ищется простое и бюджетное решение без больших оверхедов (по своей нагрузке много инстансов могут спокойно жить на одном сервере).
Comments