Назад | Перейти на главную страницу

Как вы обновляете свое приложение Java EE в производственной среде?

Я пытался понять, что происходит в мире производственного развертывания Java EE, и, честно говоря, это кажется довольно пугающим. После разговора с более чем 100 людьми я сформулировал следующие гипотезы:

  1. Никто не использует повторное развертывание в производстве (как в реальной кнопке, которая выполняет обновление на сервере). Он просто недостаточно надежен из-за OutOfMemoryError-s и других сбоев.
  2. Обычный способ обновления приложения - это:
    1. Выключите все серверы в 2 часа ночи и надейтесь, что никто им не пользуется.
    2. Снимайте серверы по одному, обновляйте их и либо отбрасывайте, либо переносите пользовательские сеансы.
    3. Используйте странные приемы, например, копируйте по одному файлу за раз.

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

Я прошу вас помочь мне и предоставить некоторые полутвердые данные, которые я могу использовать, чтобы лучше понять, что происходит на самом деле. Надеюсь, вы докажете, что я ошибаюсь. Я с нетерпением жду ваших ответов, но также прошу вас ответить на этот опрос, чтобы получить некоторые данные: http://0t.ee/appupdq11

Я знаю, что это не типичный вопрос по ServerFault, поскольку здесь нет правильного ответа, но, заполнив опрос, вы очень мне поможете, и если вы дадите здесь более подробный ответ, это будет просто потрясающе.

в weblogic я использую wlst (python на java - jython) для развертывания. вы можете создать с ним любую логику. сложная часть всех развертываний - это когда вы выполняете обновление схемы базы данных ... что на самом деле не является проблемой Java, но влияет на системы Java.

на Glassfish и Tomcat проще ... запустите каталог, установите новый экземпляр со старыми конфигурациями, а затем разверните war, ear file.

конечно, вы можете соединить все это с инструментом управления конфигурацией, таким как cfengine, puppet или даже fabric.

Сильно зависит от приложения.

Большинство приложений J2EE запускаются на фермах кластеров серверов, где базовое обновление приложения может быть выполнено путем последовательного обновления. Т.е. извлеките один сервер из фермы балансировщика нагрузки, дождитесь завершения его работы, обновите развертывание EAR, протестируйте его, поместите обратно в ферму lb, выньте следующий и повторите. Вам может потребоваться отключение для обновления схемы базы данных, чтобы убедиться в согласованности данных. Обновление программного обеспечения баз данных обычно можно выполнить без серьезных сбоев, Oracle - хороший тому пример.