Организация кода: Как Google организует свой код? - PullRequest
3 голосов
/ 19 апреля 2011

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

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 19 апреля 2011

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

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

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

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

...