Развертывание веб-приложений и управление данными базы данных / среды выполнения - PullRequest
1 голос
/ 03 марта 2011

Я решил окончательно закрепить процессы развертывания моей команды, от супа до орехов.Последняя остающаяся болевая точка для нас - это управление базой данных и миграция / управление данными во время выполнения.Вот два примера, хотя многие существуют:

  • Если вы выпускаете новую функцию «Загрузить», автоматически создайте каталог загрузки и настройте разрешения.В более поздних выпусках проверяйте существование / разрешения - навсегда, автоматически.
  • Если значение в базе данных (скажем, состояние учетной записи «Регистрация») больше не действует, автоматически переносите данные в базе данных на правильные значения,учитывая некоторый набор бизнес-правил.

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

Итак, первый вопрос: 1.Какие существуют инструменты / структуры, обеспечивающие такую ​​возможность?

В общем, это кажется проблемой для любого языка и платформы.В моем конкретном случае я развертываю приложение .NET MVC2, которое использует Fluent NHibernate для абстракции базы данных.В процессе развертывания у меня уже есть инструмент, который запускает SchemaUpdate от NHibernate - это потрясающе.

То, что я создал для решения этой проблемы по-своему, - это инструмент, который сканирует целевые сборки на предмет классов, которые наследуютиз определенного абстрактного класса (Deployment).Этот абстрактный класс предоставляет хуки, которые вы можете переопределить и реализовать свой произвольный код развертывания - в контексте кодовой базы вашего приложения.класс Deployment также обеспечивает механизм управления версиями, а инструмент управляет текущей «версией развертывания» заданного работающего приложения.Затем пользовательская задача NAnt склеивает это вместе со сценарием развертывания NAnt, вызывая зацепки в подходящее время.

Кажется, это работает хорошо и отвечает моим целям - но вот моя претензия и приводит к моейВторой вопрос: 2.Конечно, то, что я только что написал, должно уже существовать.Если да, можете ли вы указать мне на это? и 3.Кто-нибудь начал идти по этому пути и имел представление о проблемах с этим подходом?

Наконец, если что-то подобное существует, но не на платформе .NET, пожалуйста, все же дайте мне знать - как я будубольше интересуюсь портированием известного решения, чем начни с нуля для моего собственного решения.

Спасибо всем, я очень ценю ваши отзывы!

1 Ответ

0 голосов
/ 03 марта 2011

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

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

  1. есть некоторые большие преимущества. Вы можете посмотреть на изменения в среде с течением времени, прочитав сценарий и сопоставив его с примечаниями к выпуску и журналами изменений.
  2. Вы можете создатьСовершенно новая среда, запустив последние основные, а затем и второстепенные второстепенные сценарии.
  3. Вы можете создать совершенно новую среду предыдущей версии (возможно, для целей тестирования), указав в ней остановку на определенном вспомогательном выпуске.
...