2013-04-03 9 views
5

Ich habe darüber ein bisschen nachgedacht. Die Idee ist, dass bei PROD etwas schief geht. Aufgrund der erfassten Daten verhält sich die Webanwendung anders als in anderen Umgebungen. So werden auch Daten in anderen Umgebungen mit Prod (wie erwartet) nicht mehr synchronisiert. Es kommt jedoch ein Fehler und aus irgendeinem Grund passiert es nur in PROD, wahrscheinlich wegen der Unterschiede in den Daten.Gute Prozesse zur Fehlersuche in der Produktionsumgebung? Daten in Dev kopieren?

Ich frage mich, was ist eine gute Praxis, um diese Art von Problemen zu beheben? Mehr Tests, sicher. Aber darüber hinaus? Man könnte neue Daten in dev erstellen, aber der springende Punkt ist, dass ein Datenpunkt oder eine Kombination von Aktionen dazu führt, dass ein Datenpunkt falsch ist. Vielleicht bei Verwendung einer anderen Datenquelle, um zu dem "tatsächlichen" Datenpunkt zu kommen, der sich von dem "erwarteten" Datenpunkt unterscheidet. Entschuldigt, dass dies keine großartige Beschreibung ist und versucht, sowohl ein Beispiel als auch eine Definition eines allgemeinen Produktionsfehlers zu sein.

Ich weiß, das ist keine sehr präzise Frage. Hoffentlich gibt es Referenzen, die gute Vorschläge machen.

Antwort

4

Dies ist eine sehr interessante Frage. Ein Ansatz, den ich zuvor benutzt habe, ist, absichtlich meine letzten Tests in der Produktion (TIP) zu machen.

Bevor Sie meinen effigy mit mehreren spitzen Nadeln Spieß, hören Sie mich für eine Minute, während ich über kontinuierlichen Einsatz sprechen :-)

Die Idee ist, einen neuen Build in der Produktion zu implementieren und dann individuellem Routing nutzen, um direkt Verkehr zwischen den alten und neuen Produktionsaufbauten. Im Prinzip ist das ganz einfach: Sie leiten den alten Build zunächst an Ihre aktuellen Kunden und den neuen Build nur an Ihr Engineering-Team. Ihre Kunden sehen keine Änderung. Aber Ihr Team kann mit dem Testen Ihres neuen Builds beginnen, einschließlich unordentlicher Daten wie Disaster Recovery und Stresstests. Sie werden hoffentlich die Art von Fehlern entdecken, über die Sie in Ihrer Frage sprechen.

Wenn ein Problem auftritt, wird der neue Build einfach zurückgesetzt. Wenn Ihre Tests kein Problem ergeben, geben Sie 5% Ihres Kundenstamms an. Dann 10% und 20% und so weiter.

Obwohl es im Prinzip einfach ist, gibt es einige Probleme, die Sie von Anfang an planen müssen. Das erste sind Daten- und Datenschemata, die sowohl in alten als auch in neuen Builds korrekt funktionieren müssen. Solange die von Ihrer Webanwendung verwendeten Dienste so ausgelegt sind, dass nach der Bereitstellung eines neuen Builds mindestens ein Rollback ausgeführt wird und Ihr neuer Build sowohl die alten als auch die neuen Daten versteht, sollten Sie in Ordnung sein.

Das zweite Problem ist API/Schnittstelle ändert. Anstatt Methoden oder Parameter zu bearbeiten oder zu löschen, müssen Sie eine neue API/Schnittstelle erstellen, die mit Ausnahme des neuen/geänderten Codes größtenteils auf die alte API/Schnittstelle umleitet.

Andere Probleme, einschließlich inkompatibler Änderungen an Konfiguration und Einstellungen zwischen Builds. Diese Probleme sind nicht tödlich, aber Sie müssen vorher ein wenig planen und testen. Und die große Belohnung ist, dass Sie Ihren Code in der Produktion abschließend testen können, ohne Ihre Kunden zu beeinträchtigen.

Einige Links auf Tests in der Produktion:

Verwandte Themen