Это довольно загруженный вопрос. Мой общий совет - сосредоточить ваше внимание на управлении сложностью и позволить системе расти органично.
Виртуализация:
Вы действительно хотите избежать разрастания сервера, и в наши дни все виртуализировано. Выберите платформу, которая позволит вам быстро добавлять виртуальные серверы и эффективно управлять ими. Одна тенденция, которую я видел, - наличие двух (например) кластеров AIX или VMWare, один для prod, другой для non-prod. Non-prod используется для всех сред разработки, тестирования и промежуточной среды. Эти среды идеально подходят для веб-серверов или серверов приложений, но я бы постарался не использовать большие растущие производственные базы данных в качестве виртуальных машин (по крайней мере, для Windows).
Базы данных
Они могут легко выйти из-под контроля, когда им нужно поделиться ресурсами с другими серверами. Всегда имейте базы данных, работающие на выделенной ОС, никогда не разделяйте их с приложением или веб-сервером, если для этого нет действительно веской причины. Используете ли вы ВМ или аппаратное обеспечение - это единственный вопрос.
Вы хотите масштабируемую инфраструктуру, которая не будет ограничивать вас, если вам когда-нибудь понадобится, например, перейти к кластерному решению. Многие базы данных будут в порядке в ВМ, но для тех немногих, которым в конечном итоге потребуется больше лошадиных сил, чем это удобно предоставлять в среде ВМ, вы захотите поставить их вместо этого на необработанное оборудование .
Если вы не говорите об окнах, то некоторые из этих рекомендаций не будут актуальны. Например, общепринятая практика - помещать большие растущие базы данных как LPAR в гипервизор AIX.
Место хранения
Вы не можете иметь настоящую виртуализацию (с мобильностью виртуальных машин и кластеризацией хоста) без общего хранилища. Серверы Prod, Dev, Testing и QA выглядят одинаково для вашего хранилища, однако вы можете потратить некоторое время на поиск способа расставить приоритеты для вашего продукта. Это очень плохая идея, например, иметь базу данных prod, облагаемую большими налогами, совместно использующую диски (наборы рейдов, пулы и т. Д.) С сервером разработки. Иногда Dev может поразить диски так же сильно, как и prod, и последнее, что вам нужно, это выяснить, является ли какой-то тест замедлением вашей работы.
Попросите кого-нибудь, кто знает ваше хранилище, сесть и проанализировать все потенциальные узкие места (порты, кеш, контроллеры, диск и т. Д.) И приложить все усилия, чтобы предотвратить конфликт как можно большего количества между prod и non-prod.
Тем не менее, иногда люди, работающие с приложениями, должны запускать тесты dev, чтобы помочь количественно оценить эффекты нового патча или чего-то еще. В этой ситуации вам может потребоваться предоставить им аналогичные (или, по крайней мере, количественно различные) объемы хранилища.