Как правильно разрабатывать и развертывать функции для существующих приложений asp.net на IIS - PullRequest
5 голосов
/ 10 марта 2010

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

Мой вопрос, как это сделать для приложения asp.net (в частности, mvc)? Как вы проверяете свои недавно выпущенные функции на реальных данных? Есть ли у вас какие-либо инструменты для изменения существующей базы данных и отката изменений при необходимости? Делаете ли вы резервные копии перед развертыванием?

Обновление

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

У моих клиентов большие развертывания популярных веб-приложений. У них нет промежуточных / QA / тестирующих серверов. (да это не оптимально). Данные, из которых состоят их приложения: изображения, XML-файлы, пользовательские загрузки и данные на Sql Server. По моему мнению, наличие нескольких записей их производственной базы данных и нескольких фиктивных файлов не является заменой тестирования на реальных данных. Как бы вы разработали рабочий процесс, который может создать приемлемую среду для имитации производственной среды перед началом работы?

Другое обновление

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

PS. Если кто-то понимает, к чему я стремлюсь, и у меня есть лучший способ сформулировать мой вопрос, не стесняйтесь редактировать мой!

Ответы [ 3 ]

8 голосов
/ 10 марта 2010

Как вы тестируете свой недавно выпущенный особенности против живой базы данных?

Вы не делаете. Вы тестируете новые функции и исправления в QA-версии базы данных, а затем рекламируете изменения кода и любые изменения схемы базы данных на производственных серверах после их проверки.

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

UPDATE:

Там действительно нет замены для среды тестирования. Вы не можете проводить тестирование против производства, это просто слишком рискованно. Лучшее, что вы можете сделать без выделенной среды тестирования, - это максимально точное поведение при моделировании в вашей среде разработки. Используйте виртуальные машины для запуска серверной операционной системы (то есть Windows Server 2003) и настройте эти виртуальные машины настолько близко, насколько это возможно, к настройке производственных серверов.

ДРУГОЕ ОБНОВЛЕНИЕ:

Вы можете использовать инструменты сравнения, такие как Filesync, для синхронизации файлов приложения между вашей средой контроля качества и производственной средой. Если по какой-то причине вы не можете поддерживать полную копию своей производственной базы данных в QA, используйте сценарии для «вырезания» и экспорта данных, которые являются достаточно полными для тестирования.

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

1 голос
/ 15 марта 2010

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

Примечание: это просто обходной путь, пока вы не получите реальную настройку QA.

0 голосов
/ 10 марта 2010

Это интересный вопрос, но вы не могли сравнить рельсы с ASP.Net MVC 1: 1, потому что ASP.Net MVC - это просто UI-Framework, а не полнофункциональный каркас, такой как rails (или grails).

Итак, вопрос о базе данных зависит от того, какую технологию доступа к данным вы используете. Если вы используете NHibernate, есть некоторая поддержка. Но с технологиями доступа к данным Microsoft (набор данных, linq2sql, структура сущностей) я не знаю способа автоматизации таких вещей, как миграция или понижение схемы базы данных (с миграцией данных).

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