Szenario:
- Sie drängen zur Produktion
- Der Stoß hat mehrere Dinge zerstört
- Derselbe Build hat weder qa noch dev kaputt gemacht
- Als Entwickler haben Sie keinen Produktzugriff.
- Es gibt viel Druck von oben , um die Dinge wieder zum Laufen zu bringen.
Besonderheiten:
- PHP / MVC-Anwendung, die in Zend API-gesteuert ist.
- Auf wenigen Servern bereitgestellt.
Meine Frage:
Nehmen wir an, ich habe während der Untersuchung die Vermutung, dass etwas nicht stimmt. Aber ich weiß es nicht genau. Und natürlich kann ich Dinge in der Produktion nicht testen. Wenn ich einen Lösungsvorschlag habe, der auf dieser Vermutung basiert, wäre es ratsam, ihn anzuwenden und zu prüfen, ob er funktioniert, bevor Sie das Problem verstehen?
bug
production
bitcycle
quelle
quelle
Antworten:
Beschaffen Sie sich so viele Informationen wie möglich über das Problem (Protokolldateien usw.) und setzen Sie die Produktionsserver in einen funktionsfähigen Zustand zurück. Das ist natürlich aus Entwicklersicht ein Schmerz, aber höchstwahrscheinlich eine Selbstverständlichkeit.
Versuchen Sie als Nächstes, festzustellen, ob Sie das Problem in einer Entwicklungsumgebung reproduzieren können. Wenn du kannst, dann repariere es und versuche es erneut.
Wenn Sie es nicht reproduzieren können, prüfen Sie, ob Sie einem Server für kurze Zeit weitere Diagnosen hinzufügen und freigeben können, um weitere Informationen zum Problem zu erhalten.
Wenn dies nicht möglich ist, schauen Sie sich die Unterschiede zwischen der Produktions- und der Entwicklungsumgebung genauer an und versuchen Sie, eine Entwicklungsumgebung näher an die Produktion heranzuführen.
quelle
Wie gut verstehst du das Problem? Was ist das Risiko, dass Ihre Vermutung die Dinge verschlimmert? Ist es möglich, das Problem in DEV / QA-Regionen zu reproduzieren? Wie können Sie Ihre DEV / QA-Region synchronisieren, um sie näher an PROD heranzuführen? Vielleicht müssen Sie einige Umgebungs- oder Datenbankeinstellungen ändern, vielleicht müssen Sie die PROD-Daten in DEV importieren, vielleicht müssen Sie einige Debug-Einstellungen ändern.
Im Allgemeinen würde ich nicht empfehlen, Ihre Vermutung einer Lösung auf PROD zu übertragen, es sei denn, Sie können bestätigen, dass sie in einer anderen Region tatsächlich korrekt ist. Ich verstehe die Art von Problemen, die auftreten, wenn ein Fehler in PROD auftritt und nirgendwo anders reproduziert werden kann. Dann kommt es darauf an, zu sehen, was sich sonst noch zwischen DEV / QA und PROD unterscheidet, und sich auf diese zu konzentrieren. Nach meiner Erfahrung handelt es sich normalerweise um eine Umgebungseinstellung oder eine andere Konfiguration, insbesondere für PROD. Und ich weiß, dass es wahrscheinlich viel Druck von oben gibt, dies zu beheben. Es ist also möglich, einen Rollback zum vorherigen Arbeitszustand durchzuführen und dann zu versuchen, das Problem in DEV zu reproduzieren, eine Korrektur in DEV zu finden und dann zu versuchen wieder in PROD? Das würde ich vorschlagen.
quelle
Kommt auf die Art der Verlegenheit an. Meistens hängen Probleme in der Produktion, die in dev nicht auftreten, mit Konflikten in der Datenbank zusammen. Das Anwenden eines Fehlers, der den Datenbankinhalt ändert, ohne sicher zu sein, was genau "da draußen" ist, kann daher ein erster Schritt in einer großen Katastrophe sein. Wenn Sie das Wechselgeld problemlos zurücknehmen können, können Sie es möglicherweise ausprobieren. Wenn Sie jedoch keinen direkten Zugriff haben, sollte für Tests mindestens eine Kopie der Datenbank oder des gesamten Servers vorhanden sein. Personen mit den richtigen Berechtigungen müssten den neuen Code weiterhin ausführen, zumindest ohne das Risiko eines Datenverlusts. (Aber manchmal verbietet die Größe der Datenbank oder die Komplexität der Infrastruktur eine solche Einrichtung.)
Es ist wirklich schwierig, da es viele Möglichkeiten gibt, wie z. B. verschiedene Einstellungen, Bibliotheken und Softwareversionen.
Vielleicht können Sie zuerst einen Code schreiben, der mit einer Debug-Ausgabe ausgewertet wird, wenn Ihre Vermutung für die Fehlerquelle richtig war, und erst dann den eigentlichen Bugfix anwenden.
quelle
Normalerweise handelt es sich entweder um Konfigurations- oder Datenprobleme, vorausgesetzt, Code und DB sind zwischen Prod, QA und dev identisch.
Ich würde mir zuerst folgendes anschauen:
Sobald Sie verstanden haben, was los ist, müssen Sie die Produktion in einen funktionsfähigen Zustand zurückversetzen und daran arbeiten, das Problem in einer niedrigeren Umgebung zu beheben, bis es behoben und erneut in der Produktion bereitgestellt wird.
quelle
Während Ihre Umgebung PHP ist, habe ich eine Präsentation darüber gehalten, wie Sie für Java darüber nachdenken sollen: http://www.infoq.com/presentations/maintaining-production-java-apps
Die Kernprobleme sind dieselben - um mögliche Choke-Punkte zur Fehlerbehebung zu verstehen: Netzwerk, Dateisystemzugriff, Protokolldateien, Deadlocks usw. Außerdem müssen Sie wissen, wie Sie die richtigen Fragen stellen: "System aus" - "Was genau tun Sie?" Mittelwert: Ist die Webseite langsam, gibt es eine bestimmte Fehlermeldung, gibt es eine Zeitüberschreitung "usw.
Darüber hinaus gibt es einige Tools, die die Fehlerbehebung vereinfachen: Wireshark für die Fehlerbehebung im Netzwerk ist absolut empfehlenswert und lohnenswert. Andere hängen von den von Ihnen verwendeten Betriebssystemen ab. Für Windows ist alles von SysInternal (jetzt Teil von Microsoft) brillant. Schauen Sie sich für Unix / Linux truss / strace an.
Beim Zugriff auf die Produktion sollte die Betriebsgruppe entweder wissen, wie diese Tools / Techniken verwendet werden, oder Sie haben einen Business Case für sie (zusammen mit Ihnen), um zu lernen, wie sie verwendet werden. Danach benötigen sie einen bestimmten Satz von Fehlerbehebungsprotokollen, um bei Auftreten eines Problems ausgeführt zu werden, sodass Sie Ihre Analyse offline durchführen können.
quelle
Kurze Antwort: Nicht, wenn Sie eine Wahl haben.
Lange Antwort: Wenn Sie das Problem nicht verstehen, birgt ein solcher Patch mehrere Risiken:
Auf der anderen Seite sehe ich keinen Schaden, wenn ich zuerst überprüfe, ob Ihre hypothetische Korrektur funktioniert, und wenn dies der Fall ist, dann gehe ich tiefer und finde den wahren Grund oder andere möglicherweise bessere Möglichkeiten heraus, um das Problem zu lösen.
quelle