Dies ist eine ziemlich geladene Frage. Mein allgemeiner Rat ist, Ihre Aufmerksamkeit auf das Management der Komplexität zu richten und das System organisch wachsen zu lassen.
Virtualisierung:
Sie möchten die Ausbreitung von Servern wirklich vermeiden, und heutzutage ist alles virtualisiert. Wählen Sie eine Plattform, mit der Sie virtuelle Server schnell hinzufügen und effizient verwalten können. Ein Trend, den ich gesehen habe, sind zwei (zum Beispiel) AIX- oder VMWare-Cluster, einer für Produkte und einer für Nicht-Produkte. Das Nicht-Produkt wird für alle Entwicklungs-, Test- und Staging-Umgebungen verwendet. Diese Umgebungen eignen sich perfekt für Webserver oder Anwendungsserver, aber ich würde versuchen, große, wachsende Produktionsdatenbanken nicht als VM zu verwenden (zumindest unter Windows).
Datenbanken
Diese können leicht außer Kontrolle geraten, wenn sie Ressourcen mit anderen Servern teilen müssen. Lassen Sie Datenbanken immer auf einem dedizierten Betriebssystem laufen, das niemals mit einer Anwendung oder einem Webserver geteilt wird, es sei denn, es gibt einen wirklich guten Grund dafür. Ob Sie eine VM oder Hardware verwenden, ist die einzige Frage.
Sie möchten eine skalierbare Infrastruktur, die Sie nicht einschränkt, wenn Sie beispielsweise jemals zu einer Clusterlösung wechseln müssen. Viele Datenbanken werden in einer VM in Ordnung sein, aber für die wenigen, die möglicherweise mehr Leistung benötigen, als in einer VM-Umgebung zweckmäßig ist, möchten Sie sie stattdessen auf Rohhardware setzen .
Wenn Sie nicht über Fenster sprechen, sind einige dieser Richtlinien nicht relevant. Es ist allgemein anerkannt, große wachsende Datenbanken beispielsweise als LPARs in einen AIX-Hypervisor zu integrieren.
Lager
Ohne gemeinsam genutzten Speicher ist keine echte Virtualisierung (mit VM-Mobilität und Host-Clustering) möglich. Prod-, Dev-, Test- und QA-Server sehen für Ihren Speicher alle gleich aus. Möglicherweise möchten Sie jedoch einige Zeit in die Suche nach einer Möglichkeit zur Priorisierung Ihres Prod investieren. Es ist zum Beispiel eine sehr schlechte Idee, eine stark besteuerte Datenbank für die gemeinsame Nutzung von Produktdatenbanken (RAID-Sets, Pools usw.) mit einem Entwicklungsserver zu haben. Dev kann die Festplatten manchmal genauso hart wie Prod schlagen, und das Letzte, was Sie brauchen, ist herauszufinden, ob eine Art Test Ihre Produktion verlangsamt.
Lassen Sie sich von jemandem, der Ihren Speicher kennt, hinsetzen und alle potenziellen Engpässe (Ports, Cache, Controller, Festplatte usw.) analysieren und Ihr Bestes tun, um Konflikte zwischen Prod und Non-Prod für so viele wie möglich zu vermeiden.
Das heißt, manchmal müssen die Anwendungsentwickler Entwicklungsbenchmarks ausführen, um die Auswirkungen eines neuen Patches oder ähnliches zu quantifizieren. In dieser Situation müssen Sie möglicherweise in der Lage sein, ihnen ähnliche (oder zumindest quantifizierbar unterschiedliche) Mengen an Speicherleistung anzubieten.