Организация кода: как Google организует свой код?

#.net #asp.net #tfs #structure #organization

#.net #asp.net #tfs #структура #организация

Вопрос:

Краткая история: Я работаю в отделе разработки, и мы делаем много ASP.NET Продукты на основе.net. По мере роста портфеля наших компаний мы сталкиваемся с серьезной проблемой на стороне разработки. У нас есть около 10 модулей, которые мы продаем клиентам, и мы хотим, чтобы они продавались по одному URL. Рассмотрим аналогию с сервисами Google (поиск / электронная почта / финансы / и т.д.).

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

Итак, текущая структура, которую мы использовали, является :

  • У нас есть веб-сайт в самой внешней оболочке, который содержит всю общую функциональность (пользователь / управление меню / роли / и т.д.)
  • Эта внешняя оболочка (упомянутая выше) должна иметь свою собственную библиотеку для поддержки своей функциональности.
  • Каждый отдельный модуль разделен на собственное веб-приложение и соответствующую библиотеку
  • Когда происходит сборка, прямо сейчас, мы пишем пользовательские сценарии msbuild для развертывания всех модулей как единого веб-сайта.
  • У нас также есть скрипты, которые при необходимости позаботятся о развертывании отдельных модулей, не затрагивая всю систему.

Вышеупомянутая настройка работала просто отлично, пока я не обнаружил проблемы с масштабированием … то есть, когда у нас в системе 10 модулей, каждый разработчик должен загрузить все 10 модулей в свою локальную систему. Кроме того, мне еще предстоит найти способ управлять жизненным циклом конкретного модуля, сохраняя при этом структуру TFS неповрежденной.

Проблема, с которой мы сталкиваемся прямо сейчас, заключается в том, чтобы организовать код в TFS, который помог бы нам со следующим :

  • меньший размер отпечатка на компьютере разработчика (разработчик получает модули, над которыми он / она работает) и не все
  • Индивидуальное развертывание. Развертывание одного модуля не должно влиять на другие в любой момент времени (если это не основной выпуск … и это всегда должен быть запланированный выпуск)
  • Индивидуальное управление жизненным циклом: я обязательно должен иметь возможность поддерживать несколько версий модуля в TFS и работать соответствующим образом.

Платформа: TFS 2010, Visual Studio 2010, C #, jQuery, CSS

Комментарии:

1. Я помню, что читал похожий вопрос, но не могу его найти. Я думаю, что это на SO, но я также искал в programmers.stackexchange, но безрезультатно. Кто-нибудь помнит?

Ответ №1:

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

Веб-сайт и его ресурсы должны иметь независимую от модулей структуру и развертывание.

Ваши сценарии сборки и развертывания должны позаботиться о создании новой производственной среды из репозиториев.

Структура разработки не должна зависеть от структуры веб-сайта.