Как незаметно передеплоить сервер?

Допустим есть приложение - работает на томкате. Им пользуются люди. Так как приложение находится в разработке, то каждый раз приходится перезаливать его, дабы обновить функционал и добавить новый. Так вот как это сделать, чтобы не пострадали пользователи? Например, в приложение часто идет обновление данных от пользователей и работа с их внутренними счетами.
  • Вопрос задан
  • 739 просмотров
Пригласить эксперта
Ответы на вопрос 3
Недавно занимался похожей проблемой. Пока для себя нашёл простое решение - Parallel deployment.

Суть в том, что в Tomcat'е одновременно можно задеплоить несколько версий одного и того же приложения. Новые пользователи будут работать с новой версией, старые - со старой. Старые пользователи потихоньку отваливаются и когда они отвалятся все, то старая версия приложения удаляется.

Для реализации этого у себя в название war файла добавил номер сборки и теперь оно выглядит примерно так: App##015.war. Кидаем war-файл в webapps и через пару секунд у нас задеплоина новая версия. Очень удобно.

При желании старые сессии можно почистить принудительно и тогда старая версия сразу удалиться. Это на случай, если произошли серьёзные изменения (например, схема базы сильно поменялась).
Ответ написан
Комментировать
Имейте в ротации несколько серверов, выводите из ротации при деплое (не особо важно, по IP ротация или все за одним прокси), это даст вам еще и стабильный аптайм. Сервак может и сам по себе упасть, не в идеальном мире живем.
Ответ написан
Prognosticator
@Prognosticator
TODO: Здесь будут ворованные умные мысли, типа мои
Почему допустим?
Что за вводные такие :)
Сам не решал вашу задачу с Tomcat, но если б столкнулся, гуглил по запросу tomcat zero downtime deployment.
Потом ставил бы эксперимент в dev окружении. Потом в продакшен.

А еще человечество изобрело непрерывную интеграцию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы