Frage Was ist der Sinn der Inszenierung?


Ich dachte, ich hätte das herausgefunden, aber nach dem Lesen Kontinuierliche Lieferung (Ausgezeichnetes Buch) Ich bin ein wenig verwirrt. Sie reden über Server für:

  • Entwicklung
  • verschiedene Formen von automatisierten Tests
  • User Acceptance Testing (UAT) - dh man sitzt mit dem Kunden zusammen und demonstriert es ihnen und lässt sie explorativ testen. Die Inhouse-Tester könnten dieses Setup auch für explorative Tests verwenden.
  • Inszenierung
  • Produktion.

Ich dachte immer, dass die Inszenierung die UAT-Funktion bietet, aber sie scheinen die Inszenierung als separate Ebene zu haben. Welche Funktion würden also die Staging-Server in diesem Schema bieten?


18
2018-04-28 17:02


Ursprung


Ich kann nicht sagen, dass ich dieser Methodik zustimme. UAT sollte immer so nah wie möglich am Live-System durchgeführt werden (d. H. Staging). Ich kann nicht zählen, wie oft wir UAT gemacht haben, und jeder hat sich über Geschwindigkeitsprobleme beklagen müssen, zu denen wir tausendmal erklären müssen, dass "das Live-System schneller sein wird". Und wenn das Live-System NICHT schneller ist, wegen eines Fehlers im Code oder einer SQL-Abfrage, müssen Sie Ihre eigenen Wörter essen. - Mark Henderson♦
UAT = User Acceptance Testing, oder? - Martin Thoma


Antworten:


Staging würde die vollständigen Produktsysteme an Ort und Stelle setzen, aber noch nicht wirklich nutzen. Wenn sie in Betrieb gehen, wäre "Produktion". Sie sollten alles an seinem Platz platzieren, wie es verwendet wird, testen und dann den Schalter umlegen.

Der UAT verwendet häufig eine Testumgebung, die sich signifikant von der Hardware / Software / Konfiguration unterscheidet, die in der Produktion verwendet wird.

Zum Beispiel, wo ich arbeite, lassen wir die Kunden alles in einer VM-Umgebung testen, die auf unseren Servern läuft. Wenn ihr System in Betrieb geht, wird es auf ihrer Hardware laufen, in ihrer Einrichtung, wahrscheinlich in ihre bestehenden Systeme integrierend; es wird absolut nichts mit unseren Servern oder der Testumgebung zu tun haben (außer dass der Code und einige Konfigurationen von dort kopiert wurden ...)


13
2018-04-28 17:13



Weitere Tests finden normalerweise auch auf dem Staging-Server statt, nicht nur bei UAT - kurz vor der Produktion. - jftuga
@jftuga, siehe letzten Satz des ersten Absatzes ... - Chris S
@Chris S: Wenn ich Sie richtig verstehe, dann gibt es keinen "Staging-Server", nur einen Produktionsserver, der nicht im Pool ist und den Endbenutzern nicht zur Verfügung steht. Das macht Sinn und ist eine Methodik, der ich folge, aber ich nenne diese Server nicht "Staging-Server", sondern nur Produktionsserver (die nicht im Pool sind). Da überall, wo ich gearbeitet habe, die Staging-Server als separate Server verwendet, denke ich nicht, dass die Beschreibung eines Staging-Servers die Standardverwendung dieses Begriffs ist. Eine gute Idee, aber nicht, was normalerweise mit "Staging-Server" gemeint ist (meiner Erfahrung nach sowieso). - iconoclast
@Brandon Was ist dann ein "Staging Server"? Dies könnte ein regionaler Unterschied sein, wie beispielsweise das "Bouncen" eines Servers. - Chris S
Es scheint mir von Organisation zu variieren. Ich habe gesehen, wie es als UAT-Server verwendet wurde, als ein Server für Entwickler, um die App in eine Umgebung zu bringen, die angeblich mit der Produktion identisch ist, und wahrscheinlich auch andere Dinge. (Ich persönlich denke, die einzig gute Strategie ist die Verwendung eines echten Produktionsservers für die Inszenierung.) Da verschiedene Organisationen ihre eigene Kultur entwickeln, denke ich, dass sie auch ihr eigenes Lexikon entwickeln, also Wörter, die in der Branche oft eine Standardbedeutung haben sollten leider nicht. - iconoclast


Ich arbeite im Release Management Team einer sehr großen Internetfirma. Wir verwenden im Wesentlichen den Prozess, den Sie oben beschrieben haben, und wir haben diesen Prozess absichtlich ausgewählt. In unserer Methodik dient das Staging als Verzweigungsmechanismus für ein endgültiges Testniveau 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 das ein sehr schwer zu erreichendes Ziel. Insbesondere ist es praktisch unmöglich, Testsoftware in QA ausreichend zu laden. Funktionstests lassen sich viel einfacher automatisieren als Lasttests. Wenn Tausende von Benutzern Ihre Server treffen, scheitern die Dinge an merkwürdigen und schwer vorhersehbaren Wegen.

Also hier ist, was wir tun:

  • Entwicklung
    • beinhaltet kontinuierliche Integration und automatisierte Tests
  • Freisetzungstest
    • Meine Gruppe analysiert die Veröffentlichung selbst
    • Überprüfung der Installationsprotokolle
    • Rollback testen
  • QA
    • User Acceptance Testing

Das ist der Punkt, an dem wir uns zwischen Inszenierung und Produktion bewegen. Wir benutzen ein Zugmodell für Freigaben, mit einem neuen Zug, der alle paar Wochen beginnt. Gerade nummerierte Züge fahren zu den Staging-Servern (die in Produktion sind). Odd-nummerierte Züge nicht.

Zwischen den geraden Zügen haben die Entwickler die Möglichkeit, individuelle Änderungen an den Staging-Servern vorzunehmen (nach dem Diese Änderungen wurden natürlich von QA getestet). Dadurch können sie validieren, dass ihre Software in einer realen Produktionsumgebung erwartungsgemäß funktioniert. Dies ist in der Regel den Komponenten vorbehalten, die ein höheres Risiko darstellen, wir schieben nicht jedes kleine Stück ins Staging.

Dann versteht jeder, dass wenn der nächste gerade Zug startet, er auslöschen wird, was sich auf den Staging-Servern befindet, und sie zurück auf die Zugbasislinie setzt. Entwickler stellen entweder sicher, dass ihre Änderungen in den Zug gelangen, oder entscheiden, dass sie noch nicht für den allgemeinen Gebrauch bereit sind. In diesem Fall werden diese Änderungen nur auf den Staging-Servern gelöscht.

Zusammenfassend ist die kurze Antwort (zumindest für uns), dass es unmöglich ist, komplexe Systeme in QA vollständig zu testen. Das Staging bietet eine sichere Möglichkeit, begrenzte Produktionstests durchzuführen.

Auf eine verwandte Anmerkung, hier ist meine Dias aus einer Präsentation Ich habe nur darüber gesprochen, wie unser Release-Prozess funktioniert.


17
2018-04-28 17:59





Die einfachste Erklärung für die Bereitstellung ist das Testen des Bereitstellungsprozesses und das Testen mithilfe der echten Datenquelle. Einige Systeme kombinieren Staging mit ihren Testumgebungen. Bei großen Systemen kann der Bereitstellungsprozess jedoch sehr komplex sein oder zusätzliche Testschritte erforderlich machen, sobald Sie eine Verbindung zur Live- / Produktionsdatenquelle herstellen. In diesem Fall können Sie in einer Staging-Umgebung den Bereitstellungsprozess testen und mithilfe von Live-Daten nach Last-Minute-Fehlern suchen. Sobald die Arbeitsabläufe verifiziert sind, können Sie die Stage-Umgebung schnell in die Produktionsumgebung umwandeln.

Ein Beispiel hierfür wäre Windows Azure, das 5-25 Minuten für die Bereitstellung einer neuen Version benötigt, Sie können es jedoch in einer Staging-Umgebung bereitstellen, Tests durchführen und dann Tauschen Sie sofort die Produktions- und Staging-Umgebungen aus.


5
2018-04-28 21:31





Ich bin gerade auf diesen Artikel gestoßen Staging-Umgebungen was sagt

Staging ist, wo Sie die bekannten Unbekannten Ihrer Systeme validieren.

Der Artikel ist es wert, vollständig gelesen zu werden.


0
2017-10-23 07:16