Я не могу комментировать все это, но вот что я нашел, чтобы работать лучше всего в моем опыте.
1) Зависит от ваших ресурсов, но в идеале мне бы хотелось иметь 4.
Dev сверхгибкий и принадлежит вашей команде разработчиков.Он может обновляться всякий раз, когда он чувствует себя лучше или когда функции завершены.
QA обновляется по расписанию или на основе доставки в зависимости от вашего процесса.Если вы делаете водопад, он обновляется, когда вы находитесь в фазе тестирования, если вы делаете итеративную гибкую настройку, он обновляется каждую итерацию.Это должно имитировать продакшн как можно ближе, но вы можете избежать компромисса (см. # 2)
Постановка должна быть во всех отношениях идентична прод.Он должен даже использовать реальные производственные данные, если это возможно (возможно, восстановленные из недавней резервной копии истинной производственной среды). Их следует использовать для приемочного тестирования перед любым выпуском.
& Prod
2) Dev обычно может быть на ВМ.QA может тоже большую часть времени.Постановка и прод должен соответствовать.Я уже видел, как люди запускали prod на виртуальных машинах, это зависит от ваших ресурсов и спроса на ваше приложение.
3) Наши разработчики используют резервную копию prod на локальных серверах SQL для разработки.Это удерживает всех от центрального сервера разработки SQL.Dev web и dev sql - это отдельные блоки (просто по необходимости они управляют кучей проектов). То же самое с QA, Staging и Prod.
4) Много испытаний и общения.Если у вас есть одна маленькая / средняя команда, это не так сложно.Если у вас много команд, посмотрите на что-то вроде разборок, официальных проверок кода, на то, чтобы поддерживать связь между командами.Не рассматривайте проблемы СУХОГО как предложенные исправления, рассматривайте их как ошибки, которые необходимо исправить.Вы потратите гораздо больше времени на обслуживание кода, чем на его предварительную запись, поэтому относитесь к обслуживанию как к гражданину 1-го класса и убедитесь, что руководство работает с этим.
5 & 6) Не совсем квалифицирован, чтобы комментировать
7) Разработчик, когда командам необходимо, QA и в соответствии с графиком в зависимости от развертываний.QA - это каждая итерация / спринт, Staging и Prod - это каждый релиз.