Was ist der Sinn der Inszenierung?

18

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?

Hamish Downer
quelle
10
Ich kann nicht sagen, dass ich dieser Methodik zustimme. UAT sollte immer so nah wie möglich am Live-System durchgeführt werden (dh Staging). Ich kann nicht zählen, wie oft wir UAT gemacht haben und wie oft sich alle über Geschwindigkeitsprobleme beschwert haben, denen wir tausendmal erklären müssen, dass "das Live-System schneller sein wird". Und wenn das Live-System aufgrund eines Programmfehlers oder einer SQL-Abfrage NICHT schneller ist, müssen Sie Ihre eigenen Wörter essen.
Mark Henderson
UAT = User Acceptance Testing, richtig?
Martin Thoma

Antworten:

13

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 ...)

Chris S
quelle
Weitere Tests finden normalerweise auch auf dem Staging-Server statt, nicht nur bei UAT - kurz bevor die Produktion aufgenommen wird.
Jftuga
3
@ Jftuga, siehe letzten Satz des ersten Absatzes ...
Chris S
@Chris S: Wenn ich Sie richtig verstehe, gibt es keinen "Staging-Server", sondern nur einen Produktionsserver, der nicht im Pool ist und den Endbenutzern derzeit nicht zur Verfügung steht. Das ist sinnvoll und eine Methode, die ich befolge, aber ich bezeichne diese Server nicht als "Staging-Server", sondern nur als Produktionsserver (die sich nicht im Pool befinden). Da ich überall dort gearbeitet habe, wo Staging-Server als separate Server verwendet werden, glaube ich nicht, dass Ihre Beschreibung eines Staging-Servers die Standardverwendung dieses Begriffs ist. Eine gute Idee, aber nicht, was normalerweise unter "Staging-Server" zu verstehen ist (meiner Erfahrung nach jedenfalls).
Iconoclast
1
@Brandon Was ist Ihrer Erfahrung nach ein "Staging-Server"? Dies kann ein regionaler Unterschied sein, beispielsweise das "Bouncen" eines Servers.
Chris S
Es scheint mir, je nach Organisation zu variieren. Ich habe gesehen, dass es als UAT-Server verwendet wird, als Server für Entwickler, um die App in eine Umgebung zu bringen, die angeblich mit der Produktion identisch ist, und wahrscheinlich auch mit anderen Dingen. (Ich persönlich denke, die einzig gute Strategie besteht darin, einen echten Produktionsserver für die Bereitstellung zu verwenden.) Da verschiedene Organisationen ihre eigene Kultur entwickeln, denke ich, dass sie auch ihr eigenes Lexikon entwickeln und daher Wörter, die in der Branche häufig eine Standardbedeutung haben sollten leider nicht.
Iconoclast
17

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:

  • Entwicklung
    • Beinhaltet kontinuierliche Integration und automatisierte Tests
  • Release-Tests
    • Meine Fraktion analysiert die Veröffentlichung selbst
    • Überprüfen der Installationsprotokolle
    • Rollback testen
  • QA
    • User Acceptance Testing

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.

Phil Hollenback
quelle
5

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 .

Greg Bray
quelle
0

Ich bin gerade auf diesen Artikel über Staging-Umgebungen gestoßen, in dem es heißt

Im Staging validieren Sie die bekannten und unbekannten Elemente Ihrer Systeme.

Der Artikel ist eine vollständige Lektüre wert.

Hamish Downer
quelle