Ceci est une question assez chargée. Mon conseil général est de concentrer votre attention sur la gestion de la complexité et de permettre au système de se développer de manière organique.
Virtualisation:
Vous voulez vraiment éviter l'étalement du serveur, et de nos jours, tout est virtualisé. Choisissez une plate-forme qui vous permettra d'ajouter rapidement des serveurs virtuels et de les gérer efficacement. Une tendance que j'ai vue est d'avoir deux (par exemple) clusters AIX ou VMWare, un pour prod, un pour non-prod. Le non-prod est utilisé pour tous les environnements de développement, de test et de transfert. Ces environnements sont parfaits pour les serveurs Web ou les serveurs d'applications, mais j'essaierais d'éviter de mettre de grandes bases de données de production en croissance en tant que machine virtuelle (au moins sur Windows).
Bases de données
Ceux-ci peuvent facilement devenir incontrôlables lorsqu'ils ont besoin de partager des ressources avec d'autres serveurs. Ayez toujours des bases de données en cours d'exécution sur un système d'exploitation dédié, jamais partagées avec une application ou un serveur Web, sauf s'il y a une très bonne raison à cela. Que vous utilisiez une machine virtuelle ou du matériel est la seule question.
Vous voulez une infrastructure évolutive qui ne vous plafonnera pas si vous avez besoin, par exemple, de passer à une solution en cluster. De nombreuses bases de données iront bien dans une machine virtuelle, mais pour les quelques-unes qui auront éventuellement besoin de plus de puissance que ce qui est pratique à fournir dans un environnement de machine virtuelle, vous souhaiterez que vous les mettiez à la place sur du matériel brut .
Si vous ne parlez pas de fenêtres, certaines de ces directives ne seront pas pertinentes. Il est courant, par exemple, de placer de grandes bases de données en croissance sous forme de partitions logiques dans un hyperviseur AIX.
Espace de rangement
Vous ne pouvez pas avoir une véritable virtualisation (avec la mobilité des VM et la mise en cluster des hôtes) sans stockage partagé. Les serveurs de production, de développement, de test et d'assurance qualité ont tous la même apparence sur votre stockage, mais vous voudrez peut-être investir un peu de temps pour trouver un moyen de hiérarchiser votre produit. C'est une très mauvaise idée, par exemple, d'avoir une base de données prod lourdement taxée partageant des disques (ensembles de raid, pools, etc.) avec un serveur de développement. Le développeur peut parfois frapper les disques aussi fort que Prod, et la dernière chose dont vous avez besoin est de déterminer si une sorte de test est ce qui ralentit votre production.
Demandez à quelqu'un qui connaît votre stockage de s'asseoir et d'analyser tous les goulots d'étranglement potentiels (ports, cache, contrôleurs, disque, etc.) et de faire de votre mieux pour éviter les conflits pour autant de ceux-ci que possible entre prod et non prod.
Cela dit, parfois, les gens de l'application doivent exécuter des tests de performance pour aider à quantifier les effets d'un nouveau patch ou quelque chose. Dans cette situation, vous devrez peut-être être en mesure de leur offrir des quantités similaires (ou du moins quantifiables) de puissance de stockage.