Что некоторые хорошие стратегии состоят в том, чтобы позволить развертываемым приложениям быть hotfixable?

9
задан Eric Z Beard 27 September 2008 в 05:28
поделиться

3 ответа

[Даже при том, что мы тестируем много, прежде чем мы выпустим], Что мы делаем это:

Наш SVN похож на это:

/repo/trunk/
/repo/tags/1.1
/repo/tags/1.2
/repo/tags/1.3

Теперь каждый раз, когда мы выпускаем, мы создаем тег, который мы в конечном счете проверяем в производстве. Прежде чем мы сделаем производство, мы делаем подготовку, которая является [меньшим количеством серверов, но] в значительной степени то же как производство.

Причины создать "тег" включают это, некоторые настройки нашего приложения в производственном коде немного отличаются (например, никакие ошибки не посланы по электронной почте, но зарегистрированы) от "соединительной линии" так или иначе, таким образом, имеет смысл создавать тег и фиксировать те изменения. И затем контроль на производственном кластере.

Теперь каждый раз, когда нам нужна к текущим исправлениям проблема, мы фиксируем их в tags/x сначала и затем нас svn update от тега и хороши. Иногда мы проходим подготовку с некоторыми проблемами (например, незначительные/тривиальные меры как написание), мы обходим подготовку.

Единственная вещь помнить состоит в том, чтобы применить все патчи от tags/x кому: trunk.

Если у Вас есть больше чем один сервер, Capistrano чрезвычайно полезен для выполнения всех тех операций.

2
ответ дан 3 November 2019 в 08:57
поделиться

Одна стратегия состоит в том, чтобы в большой степени использовать декларативный стиль внешние конфигурационные файлы для различных компонентов.

Примеры этого:

  • Доступ к базе данных,/object-relational отображающийся через инструмент как IBatis/IBatis. СЕТЬ
  • Вход через инструмент как JLog/NLog
  • Внедрение зависимости через инструмент как Spring/Spring. СЕТЬ

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

0
ответ дан 3 November 2019 в 08:57
поделиться

Мы делим наш код на код платформы и бизнес-настройки. Бизнес-классы настройки загружаются с помощью отдельного classloader, и у нас есть инструмент для представления изменений в рабочем экземпляре производства. каждый раз, когда нам нужно изменение в любом классе, мы изменяем его и отправляем его рабочему экземпляру. рабочий экземпляр будет отклонять старый classloader и использовать новый classloader insance для загрузки классов снова. Это подобно горячему Jboss, развертываются EJBs.

0
ответ дан 3 November 2019 в 08:57
поделиться
Другие вопросы по тегам:

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