Краткая история: я работаю в цехе разработки, и мы делаем много продуктов на основе ASP.NET. По мере роста портфеля нашей компании мы сталкиваемся с серьезной проблемой в области развития. У нас есть около 10 модулей, которые мы продаем клиентам, и мы хотим, чтобы они продавались под одним URL. Рассмотрим аналогию с сервисами Google (поиск / электронная почта / финансы / и т. Д.).
Каждый модуль имеет свой жизненный цикл и свой собственный набор обновлений, которые идут как запланированные выпуски, которые не обязательно должны синхронизироваться с другими модулями.
Итак, текущая структура, которую мы использовали:
- У нас есть внешний веб-сайт оболочки, который содержит все общие функции (пользователь / управление меню / роли / и т. Д.)
- Эта внешняя оболочка (упомянутая выше) должна иметь собственную библиотеку для поддержки ее функциональности.
- Каждый отдельный модуль разделен на собственное веб-приложение и соответствующую библиотеку
- Когда происходит сборка, прямо сейчас мы пишем пользовательские сценарии msbuild для развертывания всех модулей как единого веб-сайта.
- У нас также есть сценарии, которые позаботятся о развертывании отдельных модулей в случае необходимости, не затрагивая всю систему.
Приведенная выше настройка работала просто отлично, пока я не обнаружил ее проблемы с масштабированием ... то есть, когда в системе 10 модулей, каждый разработчик должен загрузить все 10 модулей в свою локальную систему. Кроме того, мне еще предстоит найти способ, позволяющий контролировать жизненный цикл конкретного модуля, при этом сохраняя структуру TFS без изменений.
Проблема, которую мы имеем сейчас, состоит в том, чтобы организовать код в TFS, который помог бы нам в следующем:
- меньший отпечаток на машине разработчика (разработчик получает модули, над которыми он / она работает), а не все
- Индивидуальное развертывание. Развертывание одного модуля не должно влиять на другие в любой момент времени (если это не основной выпуск ... и это всегда должен быть запланированный выпуск)
- Индивидуальное управление жизненным циклом: я должен обязательно иметь возможность поддерживать несколько версий модуля в TFS и работать соответственно.
Платформа: TFS 2010, Visual Studio 2010, C #, jQuery, CSS