Подходы к внесению изменений в производственные системы с использованием Castle ActiveRecord - PullRequest
1 голос
/ 20 мая 2011

Я посмотрел несколько демонстраций Castle ActiveRecord и мне нравится, как быстро вы можете создать прототип приложения, но я обеспокоен тем, насколько он будет полезен после запуска вашей производственной системы.

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

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

Кто-нибудь использует ActiveRecord (или аналогичный) помимо простого создания прототипов и фактически для сопровождения и дополнительных функций, и если да, то каков ваш рабочий процесс ??!

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

Сэм:)

1 Ответ

1 голос
/ 26 мая 2011

Мы используем Castle ActiveRecord для приложения ASP.NET MVC 3, которое мы пишем здесь. Я могу сказать вам, что мы планируем сделать, когда приложение будет запущено (через несколько недель).

У нас есть четыре этапа:

  • Разработка
  • Тестирование
  • 1012 * Балетмейстер *
  • Производство

Мы используем Git для контроля исходного кода и Jenkins для непрерывной интеграции. Приложение настроено на автоматическое удаление / воссоздание базы данных при каждом запуске для машины разработки (например, с использованием Visual Studio 2010); у нас есть список машин для разработки, и приложение проверяет работающий в данный момент компьютер, чтобы определить, следует ли ему удалить / создать базу данных.

Когда мы помещаем изменения в Git в центральное (пустое) хранилище, Дженкинс обнаруживает изменения (путем опроса). Он создает приложение, запускает тесты, развертывает приложение на нашем веб-сервере разработки и удаляет / заново создает схему и тестовые данные на нашем экземпляре Development SQL Server.

Но это только для разработки, где важно быстрое прототипирование. Для развертываний в других трех средах мы планируем предоставить нашей группе серверов / инфраструктуры упакованный файл развертывания, который они могут запустить. Для части базы данных наша группа баз данных будет использовать инструмент сравнения Red Gate для сравнения схемы между средой и предшествующей средой и обновления при необходимости. Таким образом, изменения схемы от разработки «сравниваются и обновляются вперед» для тестирования, тестирования для этапа и т. Д.

Это оставляет эти развертывания менее автоматическими, но гарантирует, что мы не влияем на данные в этих средах.

...