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