Кроме того, у вас появляется больше версий разных компонентов, ими нужно глобально как-то управлять. Разработчикам становится сложнее понять общую картину, проверки кода могут быть менее эффективными, чем хотелось бы. Несколько компонентов независимо друг от друга могут попасть в релиз, и нам нужно понимать, какие задачи в итоге вошли в сборку. Тут нам приходит на помощь Azure DevOps и наши платформенные настройки над ним. Наш CI/CD версионирует наши приложения и в связанных задачах проставляет тег с именем окружения, на котором развернуто изменение для этой задачи, может проставить версию соответствующего сервиса.
На самом деле озвученные проблемы монорепозитория выдуманные. Ide прекрасно умеют исключать ненужные директории из индекса, а сборка ci/cd настраивается на изменение конкретных частей. Деплой так же происходит частями и поскольку на дворе эпоха микросервисов, развертывание происходит безболезненно.
Сейчас пока одна проблема осталась, это версионирование зависимостей, которую каждый решает по своему, кто с помощью контейнеров, кто-то перекладывает это на сборщики.
Любопытная статья, спасибо