Как эффективно управлять несколькими установками веб-приложения? - PullRequest
17 голосов
/ 02 февраля 2009

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

Моя компания имеет собственную CMS, которая в настоящее время установлена ​​на более чем 100 серверах. На данный момент мы используем взломанный подход на основе FTP в сочетании со сценариями обновления в определенных местах для обновления всех наших настроек CMS. Эффективное управление этими настройками становится все более трудным и рискованным, когда задействовано несколько пользовательских модулей.

  • Каков наилучший способ обеспечения безопасности и актуальности нескольких настроек веб-приложения?
  • Как вы делаете это?
  • Существуют ли какие-либо конкретные советы относительно модульности приложений, чтобы обеспечить гибкость для наших клиентов, но при этом иметь возможность эффективно управлять несколькими "ветвями" приложения?

Некоторая контекстная информация: мы в основном разрабатываем на LAMP-стеке. Одним из основных факторов, который помогает нам продавать нашу CMS, является то, что мы можем подключить практически все, что хочет наш клиент. Это может очень от 10 до 10 000 строк пользовательского кода.

Большая часть пользовательской работы состоит из очень маленьких кусочков кода; Управление всеми этими небольшими кусочками кода в Subversion кажется мне довольно утомительным и неэффективным (поскольку мы предоставляем около 2 веб-сайтов в неделю, это приведет к лоту веток). Если я что-то упускаю из виду, я бы хотел услышать это от вас.

Заранее спасибо.


Сводка новостей: Прежде всего, спасибо за все ваши ответы. Все это действительно полезно.

Скорее всего, я буду использовать подход, основанный на SVN, что делает решение benlumley наиболее близким к тому, которое я буду использовать. Поскольку ответ на этот вопрос может отличаться в других случаях, я приму ответ с большинством голосов в конце пробега.

Пожалуйста, изучите ответы и проголосуйте за те, которые, по вашему мнению, имеют наибольшую ценность.

Ответы [ 13 ]

1 голос
/ 05 февраля 2009

Поскольку люди уже упоминали, что использование контроля версий (я предпочитаю Subversion из-за функциональности) и ветвления будет лучшим вариантом. Еще одно программное обеспечение с открытым исходным кодом, доступное на sourceforge, называется cruisecontrol. Удивительно, вы настраиваете cruisecontrol с помощью subversion таким образом, что любая модификация кода или новый код, добавленный в serversion, Cruise Control будет знать автоматически и сделает сборку для вас. Это сэкономит ваш ад.

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

1 голос
/ 02 февраля 2009

Одним из вариантов будет настройка системы контроля версий только для чтения (Subversion). Вы можете интегрировать доступ к репозиторию в свою CMS и вызывать обновления через меню или автоматически, если вы не хотите, чтобы пользователь имел выбор в отношении обновления (может быть критическим). Использование системы контроля версий также позволит вам легко поддерживать разные ветки

1 голос
/ 02 февраля 2009

Рассматривали ли вы такие инструменты, как Puppet (для системного администрирования, включая развертывание приложений) или Capistrano (развертывание приложений в RubyOnRails, но не ограничиваясь этим)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...