Я работаю над облачным приложением, которое устанавливается под Ubuntu, как и следовало ожидать. Например, сервер устанавливается следующим образом:
apt-get install snapserver
Сейчас у нас в проекте около 20 пакетов.
У нас еще нет работающего кластера, но мы думаем, что в какой-то момент у нас будет много компьютеров, работающих с программным обеспечением, некоторые компьютеры будут использоваться в качестве внешних интерфейсов, а некоторые - в качестве серверных.
У меня вопрос: как вы обычно обновляете живой кластер? Меня беспокоит то, что новый код может создавать новые записи в базе данных, несовместимые со старым кодом. Если это произойдет и клиент получит доступ к серверу, на котором все еще работает старая версия, это может привести к сбою.
Что лучше всего в этом случае?
Здесь будет работать своего рода транзакционный процесс развертывания. По сути, вы бы сделали следующее:
Проще сделать что-то подобное, если у вас есть поставщик контейнеров виртуальных машин, например VMware, AWS, Heroku, OpenStack и т. Д.