Ich dachte, ich hätte es geschafft, aber nach dem Lesen von Continuous Delivery (exzellentes Buch) bin ich ein wenig verwirrt. Sie sprechen über Server für:
- Entwicklung
- verschiedene Formen automatisierter Tests
- User Acceptance Testing (UAT) - Setzen Sie sich mit dem Kunden zusammen, demonstrieren Sie ihn und lassen Sie ihn explorative Tests durchführen. Die hauseigenen Tester könnten diesen Aufbau auch für Erkundungstests verwenden.
- Inszenierung
- Produktion.
Ich hatte immer gedacht, dass Staging die UAT-Funktion bereitstellt, aber sie scheinen Staging als separate Ebene zu haben. Welche Funktion würden die Staging-Server in diesem Schema bereitstellen?
deployment
testing
release-management
Hamish Downer
quelle
quelle
Antworten:
Staging würde bedeuten, die vollständigen Produktsysteme einzurichten, diese jedoch noch nicht zu verwenden. Wenn sie in Gebrauch gehen, wäre "Produktion". Sie sollten alles an der richtigen Stelle platzieren, testen und dann den Schalter umlegen.
Die UAT verwendet üblicherweise "Test" -Umgebungen, die sich erheblich von der Hardware / Software / Konfiguration unterscheiden, die in der Produktion verwendet wird.
Wenn ich zum Beispiel arbeite, lassen wir die Kunden alles in einer VM-Umgebung testen, die auf unseren Servern ausgeführt wird. Wenn das System in Betrieb genommen wird, wird es auf der Hardware des Unternehmens ausgeführt und möglicherweise in die vorhandenen Systeme integriert. es hat absolut nichts mit unseren Servern oder unserer Testumgebung zu tun (außer dass der Code und einige Konfigurationen von dort kopiert wurden ...)
quelle
Ich arbeite im Release-Management-Team eines sehr großen Internet-Unternehmens. Wir verwenden im Wesentlichen den Prozess, den Sie oben beschrieben haben, und wir haben diesen Prozess absichtlich ausgewählt. In unserer Methodik dient Staging als Verzweigungsmechanismus für die endgültige Teststufe in der Produktion.
Natürlich möchten Sie alle Tests durchführen, bevor Sie in die Produktion gehen, aber in einer großen, komplexen Umgebung mit vielen Benutzern ist dies ein sehr schwieriges Ziel. Insbesondere ist es praktisch unmöglich, Testsoftware in QA angemessen zu laden. Funktionstests sind viel einfacher zu automatisieren als Lasttests. Wenn viele tausend Benutzer auf Ihre Server zugreifen, kann dies auf seltsame und schwer vorhersehbare Weise nicht funktionieren.
Also machen wir Folgendes:
An diesem Punkt verzweigen wir zwischen Inszenierung und Produktion. Wir verwenden ein Zugmodell für Freigaben, wobei alle paar Wochen ein neuer Zug startet. Gerade nummerierte Züge gehen zu den Staging-Servern (die in Produktion sind). Züge mit ungeraden Nummern nicht.
Zwischen den geraden Zügen haben die Entwickler die Möglichkeit, einzelne Änderungen auf die Staging-Server zu übertragen ( nachdem diese Änderungen natürlich von der Qualitätssicherung getestet wurden). Auf diese Weise können sie überprüfen, ob ihre Software in einer realen Produktionsumgebung erwartungsgemäß funktioniert. Dies ist in der Regel den als risikoreich eingestuften Bauteilen vorbehalten, wir treiben nicht jedes kleine Stück zur Inszenierung.
Dann versteht jeder, dass wenn der nächste gleichmäßige Zug startet, er löscht, was auf den Staging-Servern ist, und sie auf die Zugbasislinie zurücksetzt. Die Entwickler stellen entweder sicher, dass ihre Änderungen im Zug eingehen, oder sie sind noch nicht für die allgemeine Verwendung bereit. In diesem Fall werden diese Änderungen nur auf den Staging-Servern gelöscht.
Zusammenfassend lässt sich sagen, dass es (zumindest für uns) unmöglich ist, komplexe Systeme in der Qualitätssicherung vollständig zu testen. Staging bietet eine sichere Möglichkeit, begrenzte Produktionstests durchzuführen.
Hier sind meine Folien aus einer Präsentation, die ich gerade gegeben habe, wie unser Veröffentlichungsprozess funktioniert.
quelle
Die einfachste Erklärung für das Staging ist das Testen Ihres Bereitstellungsprozesses und das Testen unter Verwendung der realen Datenquelle. Einige Systeme kombinieren Staging mit ihren Testumgebungen. Bei großen Systemen kann der Bereitstellungsprozess jedoch sehr komplex sein, oder es sind zusätzliche Testschritte erforderlich, sobald Sie eine Verbindung zur Live- / Produktionsdatenquelle herstellen. In diesem Fall können Sie in einer Staging-Umgebung Ihren Bereitstellungsprozess testen und mithilfe von Live-Daten nach Fehlern in letzter Minute suchen. Sobald die Funktionsfähigkeit überprüft wurde, können Sie die Stage-Umgebung schnell in die Produktionsumgebung umwandeln.
Ein Beispiel hierfür ist Windows Azure, für dessen Bereitstellung eine neue Version 5 bis 25 Minuten benötigt. Sie können sie jedoch in einer Staging-Umgebung bereitstellen, Tests durchführen und dann sofort die Produktions- und Staging-Umgebung austauschen .
quelle
Ich bin gerade auf diesen Artikel über Staging-Umgebungen gestoßen, in dem es heißt
Der Artikel ist eine vollständige Lektüre wert.
quelle