Bei einer gut ausgeführten Veröffentlichung dreht sich alles um Planung und Kommunikation. Berücksichtigen Sie daher vor der Durchführung einer Veröffentlichung die folgenden Fragen:
Wie lange wird die Veröffentlichung voraussichtlich dauern, und besteht das Risiko, dass Personen während der Veröffentlichung weiterhin mit meinem Produkt kommunizieren können? Wenn ein Risiko für das System besteht, sollten Sie in Betracht ziehen, das System offline zu schalten und an seiner Stelle die Meldung "System befindet sich derzeit in Wartung" zu platzieren.
Gibt es Kunden, die Sie möglicherweise vorab über die Veröffentlichung informieren müssen? Muss ich sie über eine mögliche Dienstunterbrechung oder Leistungsverschlechterung informieren, während die Veröffentlichung läuft? Persönlich irre ich mich immer auf der Seite der Überkommunikation und der Information aller Kunden über ein bevorstehendes Release- oder Wartungsfenster in einem öffentlichen Blog oder einem ähnlichen Veranstaltungsort.
Was sind meine Notfallpläne, sollte die Veröffentlichung schief gehen? Wenn die Version beispielsweise schlecht läuft, sollten wir das System so zurücksetzen, wie es war, um die Zeit zu minimieren, in der wir offline sind? Und wenn ja, sind die Schritte zum Zurücksetzen einer Version gut dokumentiert? Oder sollte ich die richtigen Leute zur Verfügung haben, um bei der Fehlerbehebung zu helfen, falls sie auftreten sollten? Persönlich denke ich, dass der beste Weg, sich der Planung einer Veröffentlichung zu nähern, darin besteht, anzunehmen, dass mit der Veröffentlichung etwas schief gehen wird. Auf diese Weise habe ich mich gezwungen, einige dieser Themen im Voraus zu durchdenken.
Wenn Sie eine Version ausführen möchten, können Sie am besten sicherstellen, dass sie reibungslos funktioniert, indem Sie alles üben, üben, üben und dokumentieren, was Ihnen auf dem Weg begegnet. Bevor Sie neuen Code für die Produktion bereitstellen, sollten Sie zunächst die Bereitstellung des Codes in einer sicheren Staging-Umgebung mit ordnungsgemäßer Sandbox üben. Lassen Sie die Person, die für die Bereitstellung in der Produktion verantwortlich ist, die Testbereitstellung für das Staging durchführen. Betrachten Sie dies als Ihre Generalprobe und verhalten Sie sich so, als ob dies die Realität wäre. Dokumentieren Sie alles, was Sie bei jedem Schritt tun. Dokumentieren Sie jeden Befehl, den Sie ausführen, jeden SQL-Code, den Sie ausführen, alle Dateien, die Sie ändern und wie Sie sie geändert haben, und dokumentieren Sie für jeden Schritt auf dem Weg, was Sie erwarten, um zu sehen, ob die Prozedur ordnungsgemäß ausgeführt wird. Wenn Sie auf ein Problem stoßen, dokumentieren Sie, was Sie getan haben, um es zu beheben.
Dann ist die Übungsbereitstellung abgeschlossen. Sehen Sie sich Ihre Notizen an und prüfen Sie, ob Sie den Prozess verfeinern können, um Fehler zu beseitigen. Dann mach alles noch einmal . Üben Sie weiter, bis das Ausführen einer Version so routinemäßig wird wie das Befolgen eines einfachen Anweisungsblatts wie "Anmelden an diesem Computer, Ausführen dieses Befehls; Anmelden an der Datenbank und Ausführen dieses SQL-Befehls; dann ...".
Oben sind die Dinge aufgeführt, die ein Betriebs- oder Release-Management-Team tun kann, um einen reibungslosen Ablauf einer Version zu gewährleisten. Aber was kann das Engineering tun, um die Risiken in einem Release zu minimieren?
Halten Sie Releases klein. Einfach ausgedrückt, je komplexer die in einer Version enthaltenen Codeänderungen sind, desto riskanter wird die Version. Tun Sie Ihrem Betriebsteam einen Gefallen, indem Sie planen, im gleichen Zeitraum eine größere Anzahl kleiner Releases anstelle einer kleineren Anzahl großer Releases zu haben.
Test, Test, Test. Testen Sie Ihren Code nicht nur in Ihrer QS-Umgebung, sondern verwenden Sie die Staging-Umgebung auch zum Testen Ihrer Software. Oft gibt es Fehler, die wenig oder gar nichts mit dem Code selbst zu tun haben, sondern eine Grundursache haben, die in der Konfiguration der Umgebung selbst (oder einer Mischung aus beiden) liegt. Um diese Probleme zu finden, müssen Sie Ihren Code in einer Umgebung testen, die die Produktion genau widerspiegelt, auch bekannt als Staging.
Als letztes Wort ist manchmal nicht das Wichtigste, was wir tun, um zu verhindern, dass etwas schief geht, sondern wie wir uns verhalten, wenn etwas schief geht. Daher halte ich es für wichtig, in Ihrem Unternehmen eine Kultur aufzubauen, die sich auf betriebliche Transparenz konzentriert. Versuchen Sie nicht, Probleme vor Kunden zu verbergen. Verwenden Sie Twitter aktiv, um Kunden darüber zu informieren, ob es Probleme gibt, die Ihrem Ops-Team derzeit bekannt sind und an deren Lösung gearbeitet wird ( Lighthouse ist in dieser Hinsicht fantastisch!). Erwägen Sie, eine " Statusseite " für Ihren Service zu veröffentlichen, auf die Kunden verweisen können, um festzustellen, ob etwas nicht stimmt ( TypePad bietet ein hervorragendes Beispiel dafür). Unterm Strich immer auf der Seite der Überkommunikation irren. Ihre Kunden werden es Ihnen danken.