Einrichten von Entwicklungs-, Staging-, Produktions- und QS-Umgebungen

8

Ich bin dabei, neue Server für eine Organisation einzurichten. Was sind die Standards oder Best Practices für die Einrichtung einer neuen Umgebung mit Entwicklung, Test, Staging und Produktion (oder ich bin offen für andere Ebenen, mit denen ich nicht vertraut bin)? Außerdem habe ich von Organisationen gehört, die Server in SQL, Anwendung, Webserver usw. aufteilen. Wo finde ich gute Beispiele für mögliche Lösungen für die Serverkonfiguration?

Ist die Virtualisierung dieser Umgebungen unter einigen physischen Boxen eine gute Vorgehensweise?

Ich habe online nach Ideen gesucht, wie andere Organisationen ihre Umgebung eingerichtet haben, finde aber nichts besonders hilfreiches. Ich freue mich über alle Links, auf die Sie mich verweisen können, um eine komplette Unternehmenslösung für ein kleines bis mittleres Unternehmen aufzubauen.

Ich habe gerade diesen Link gefunden: http://dltj.org/article/software-development-practice/ Ich würde gerne weitere Artikel wie diesen finden, wenn jemand gute Artikel kennt, auf die er mich verweisen kann.

Bevor Sie meine Frage ablehnen, posten Sie bitte Kommentare, damit ich versuchen kann, mehr zu erklären. Ich weiß vielleicht nicht genug, um die richtigen Fragen zu stellen.

TreK
quelle
2
Ich denke, das erste, was Sie tun sollten, ist die eigentliche Aufgabe zu erklären, die Sie erfüllen müssen. Wofür ist die Bewerbung? Wie viel Last wird es haben? Welche Änderungen werden Sie Ihrer Meinung nach erhalten? (Als:
Benötigen
1
Die Anforderung besteht darin, viele (unter 50) benutzerdefinierte Intranetanwendungen zu hosten. Diese befinden sich alle auf dem Microsoft-Stack. Derzeit verwenden wir einen Entwicklungs-SQL-Server und lokale Webserver für die Entwicklung sowie einen separaten SQL-Server und Webserver, die sowohl unsere Test- als auch unsere Produktionsumgebung hosten. Ich weiß, dass die Dinge viel besser gemacht werden könnten als das, was wir gerade tun, weshalb ich diese Frage mit Originalität gestellt habe. Ich muss einfach nicht wissen, was das "Bessere" mit meiner Erfahrung ist.
TreK
2
Keine Antwort per se, also werde ich als Kommentar setzen. Eine Sache, die Sie unbedingt sicherstellen möchten, ist, dass Sie über einen Mechanismus (z. B. API-Schlüssel, IP-Validierung) verfügen, um sicherzustellen, dass Ihre Testumgebungen nicht auf Ihre Produktionsumgebung zugreifen können.
HTTP500

Antworten:

8

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.

Basilikum
quelle
1

Wofür benötigen Sie diese Umgebung? Anbietersoftware oder Ihre Organisation, die ihre eigene Entwicklung durchführen?

Keine Ahnung, ob dies helfen wird, aber sowohl HP als auch Dell würden sich selbst in die Quere kommen, um Ihr aktuelles Rechenzentrum zu bewerten und Ihnen eine Empfehlung zu geben, es zu überarbeiten oder von Grund auf neu zu erstellen. Die Leser des Forums können gute, genaue Antworten geben, aber ohne zu sehen, "was Sie haben und wo Sie sind, was Sie wollen und wo Sie sein müssen", wird es schwierig sein, Ihnen eine solide Antwort zu geben. Tun Sie sich selbst einen Gefallen und bleiben Sie aus administrativen Gründen bei einem Hardwareanbieter.

Wir haben unser Rechenzentrum darauf ausgerichtet (wir haben die Hardware dafür)

VMWare-Umgebung C7000-PS-Blade-Gehäuse mit EMC SAN-Backend, 8-Gig-Glasfaserverbindung.

Dies ermöglicht es uns, die Kosten für Spawl, Stromverbrauch und Klimaanlage zu begrenzen. Es wird für Testmaschinen, Proof-of-Concept-Server und Produktionsserver verwendet, die keine für die Anwendung spezifische Hardware benötigen (USB-Dongles, Faxkarten usw.).

Physische Blade-Server-Umgebung C7000-PS-Blade-Gehäuse mit 16 HBA-Blades, die über eine 8-Gig-Glasfaser mit dem EMC SAN-Backend verbunden sind.

Diese sind für Maschinen gedacht, die eine große Menge an RAM und CPU benötigen, aber keine eindeutigen Hardware-Ergänzungen aufweisen. Virtuelle Maschinen sind in Ordnung, außer wenn sie eine große Menge an CPU oder RAM benötigen. Mit VMWare kann vmotion den vmserver auf einen Hostcomputer verschieben, um die Hardware-Nutzung auszugleichen. Die VM-Immobilie ist nur dann kostengünstig, wenn sie maximal genutzt wird. Das heißt, mehr kleinere Maschinen als ein paar große. Dies hängt auch von dem System ab, das Sie aufstehen möchten.

Physischer Server (1U bis 5U)

HP DL360 - DL 5xx Server. Spezielle Hardware wie 4x 8-Kern-CPUS und 256-Gigs-RAM, serielle Karten für Telekommunikationsschnittstellen oder High-End-Faxkarten, die an mehrere Telefonleitungen angeschlossen sind. Zu dieser Gruppe gehören Server, für die der Anbieter einen großen lokalen Speicher benötigt hat.

Dies ist ein Beispiel, aber keine vollständige Antwort. Im Ernst, sprechen Sie mit einem Hardwareanbieter und lassen Sie sich von ihm eine Vorstellung davon geben, wo Sie sich befinden und wie Sie es besser / effizienter machen können.

Paul Hickox
quelle
0

Was sind die Standards oder Best Practices für die Einrichtung einer neuen Umgebung mit Entwicklung, Test, Bereitstellung und Produktion?

Dies hängt unter anderem vom Budget ab. Ich bin mir nicht sicher, ob es Standard gibt, aber Sie möchten das Betriebssystem und andere Software auf allen Boxen gleich lassen. Verwenden Sie Automatisierungstools wie Puppet, um Ihre Builds zu automatisieren und zu standardisieren.

Ist es eine gute Praxis, diese Umgebung unter einigen physischen Boxen zu visualisieren?

Virtualisierung? Ja. Tolle Übung. Sie müssen Ihre Konfigurationen jedoch überprüfen, wenn sie als virtuelle Maschinen ausgeführt werden können.

Ich habe von Organisationen gehört, die Server in SQL, Anwendung, Webserver usw. aufteilen. Wo finde ich gute Beispiele für mögliche Lösungen für die Serverkonfiguration?

Wahrscheinlich können sich andere einschalten, aber imho möchten Sie verschiedene Komponenten aus verschiedenen Gründen auf verschiedenen Servern installieren, darunter Betriebssystem- und Anwendungs-Upgrades und Verfügbarkeit.

Raj J.
quelle
1
Das hängt alles von der Größe seines Projekts ab. Ich glaube, Sie brauchen nichts davon für Ihre private Heimkino-Datenbank ... :) Ich denke, wir brauchen mehr Informationen von OP
MichelZ