Warum Sie Infrastrukturänderungen planen sollten, bevor Sie sie anwenden
Sie überprüfen einen Pull-Request, der eine Zeile in einer Firewall-Konfigurationsdatei ändert. Die Änderung öffnet Port 443 für öffentlichen Datenverkehr. Einfach genug, oder?
Aber diese eine Zeile könnte Konsequenzen haben, die Sie nicht vorhergesehen haben. Vielleicht steht eine andere Regel im Konflikt damit. Vielleicht wurde dieser Port vor sechs Monaten aus Sicherheitsgründen absichtlich geschlossen, und niemand erinnert sich warum. Vielleicht wird durch das Öffnen eine Datenbankverbindung unterbrochen, die über einen anderen Port geroutet wurde. Sie werden nichts davon wissen, bis die Änderung angewendet wurde und etwas nicht mehr funktioniert.
Genau diese Situation soll der Plan-Review-Apply-Workflow verhindern.
Das Problem mit der direkten Anwendung
Wenn Sie Infrastrukturänderungen direkt anwenden, arbeiten Sie im Blindflug. Sie haben vielleicht den Code vor sich, aber Code allein zeigt Ihnen nicht, was tatsächlich passiert, wenn er gegen Ihre Live-Umgebung ausgeführt wird. Der tatsächliche Zustand Ihrer Infrastruktur könnte von dem abweichen, was Ihr Code annimmt. Vielleicht hat letzte Woche jemand eine manuelle Änderung vorgenommen. Eine frühere Bereitstellung könnte Dinge in einem unerwarteten Zustand hinterlassen haben. Ihr Code sagt „Füge diese Regel hinzu“, aber das System könnte das als „Ersetze alle vorhandenen Regeln durch diese eine“ interpretieren.
Direkte Anwendung macht jede Änderung zu einem Glücksspiel. Sie finden erst heraus, ob Sie verloren haben, wenn etwas kaputt geht.
Wie Plan-Review-Apply funktioniert
Der Workflow hat drei Phasen, und jede dient einem bestimmten Zweck.
Das folgende Diagramm veranschaulicht den Ablauf:
Plan erstellt einen detaillierten Vergleich zwischen Ihrem aktuellen Infrastrukturzustand und dem Zustand, den Ihr Code herstellen möchte. Es zeigt genau an, was hinzugefügt, geändert oder gelöscht wird. Dies ist keine Zusammenfassung oder Schätzung. Es ist ein präziser, maschinell erzeugter Diff Ihrer Infrastruktur.
Review ist der Schritt, in dem Menschen diesen Plan prüfen. Sie suchen nach Überraschungen. Sie verifizieren, dass der Plan der Absicht der Änderung entspricht. Sie erkennen Dinge wie „Diese Löschung einer Sicherheitsgruppe wird Produktionsserver betreffen“, bevor jemand auf „Anwenden“ klickt.
Apply führt die geplanten Änderungen aus. Da der Plan bereits verifiziert wurde, ist das Risiko unerwarteter Ergebnisse beim Anwenden viel geringer. Sie raten nicht mehr. Sie führen einen bekannten Satz von Änderungen aus.
Wie ein Plan tatsächlich aussieht
Ein Plan ist keine vage Beschreibung. Es ist eine konkrete Liste von Operationen. Ein Plan könnte zum Beispiel zeigen:
- Hinzufügen einer neuen Sicherheitsgruppenregel für Port 443
- Ändern eines vorhandenen Load-Balancer-Listeners zur Verwendung eines neuen Zertifikats
- Löschen einer Datenbank-Subnetzgruppe, auf die nicht mehr verwiesen wird
Jede Operation enthält die Ressourcenkennung, den aktuellen Wert und den neuen Wert. Dieses Detailniveau ermöglicht es Ihnen, Probleme zu erkennen, bevor sie auftreten. Sie könnten sehen, dass der Plan eine Ressource löschen möchte, die Sie für ungenutzt hielten, oder eine Einstellung ändern möchte, von der ein anderes Team abhängt.
Plan als zwingende Voraussetzung
Die effektivsten Teams behandeln den Plan als nicht verhandelbaren Schritt. Ihre Pipeline ist so konfiguriert, dass sie anhält, wenn kein Plan erstellt wurde oder der Plan nicht überprüft und genehmigt wurde. Dies ist das Infrastruktur-Äquivalent zur Anforderung eines Code-Reviews vor dem Mergen eines Pull-Requests. Sie würden keinen unreviewten Code in die Produktion mergen. Warum sollten Sie unreviewte Infrastrukturänderungen anwenden?
Diese Absicherung verhindert das häufigste Fehlermuster: Jemand macht eine kleine Änderung, nimmt an, sie sei sicher, und wendet sie an, ohne sie zu überprüfen. Die Pipeline zwingt ihn, zuerst einen Plan zu erstellen, der oft etwas offenbart, das er nicht erwartet hat.
Pläne als Audit-Trails
Pläne dienen einem zweiten Zweck, der kritisch wird, wenn etwas schiefgeht. Jeder Plan kann als Artefakt in Ihrer Pipeline gespeichert werden. Dies erzeugt einen historischen Verlauf jeder Infrastrukturänderung: Was wurde geändert, wann wurde es geändert und wer hat es genehmigt.
Wenn ein Produktionsvorfall auftritt, ist dieser Verlauf unbezahlbar. Anstatt herumzufragen, wer was geändert hat, schauen Sie sich die Plan-Artefakte an. Sie können den genauen Diff sehen, der direkt vor dem Auftreten des Problems angewendet wurde. Dies verwandelt die Untersuchung von Vorfällen von Ratespiel in evidenzbasierte Analyse.
Ohne gespeicherte Pläne bleiben Ihnen nur manuelle Logs, Chat-Nachrichten und Erinnerungen. Keine davon ist zuverlässig, wenn Sie versuchen, um 2 Uhr morgens einen Produktionsausfall zu debuggen.
Umgang mit gleichzeitigen Änderungen
Teams, die an derselben Infrastruktur arbeiten, stehen vor einer weiteren Herausforderung: widersprüchliche Änderungen. Zwei Personen ändern gleichzeitig Netzwerkkonfigurationsdateien. Beide Änderungen sehen für sich genommen gut aus. Aber in Kombination erzeugen sie einen Konflikt, der die Konnektivität unterbrechen könnte.
Der Plan-Schritt fängt dies ab. Wenn die zweite Person einen Plan erstellt, wird dieser den Konflikt anzeigen, bevor Änderungen angewendet werden. Das Team kann den Konflikt im Code lösen, nicht in der Produktion. Dies ist weitaus sicherer, als beide Änderungen anzuwenden und zu hoffen, dass sie nicht schlecht interagieren.
Was Plan nicht löst
Plan-Review-Apply ist mächtig, hat aber Grenzen. Es kann nur vergleichen, was Ihr Code sagt, gegen das, was Ihre Infrastruktur derzeit meldet. Wenn jemand außerhalb Ihrer Pipeline eine manuelle Änderung vornimmt, erfasst der Plan möglicherweise nicht jede Inkonsistenz. Wenn Ihr Infrastrukturanbieter einen Fehler oder ein unerwartetes Verhalten aufweist, zeigt der Plan möglicherweise etwas anderes an, als tatsächlich ausgeführt wird.
Diese Randfälle machen den Workflow nicht ungültig. Sie bedeuten nur, dass Sie zusätzliche Praktiken benötigen, wie z. B. Drift-Erkennung und regelmäßige Abstimmung zwischen Ihrem Code und Ihrer Live-Infrastruktur.
Praktische Checkliste
Bevor Sie Plan-Review-Apply in Ihrer Pipeline implementieren, sollten Sie diese Punkte berücksichtigen:
- Erstellen Sie Pläne automatisch nach jedem gemergten Pull-Request, nicht nur auf Anfrage
- Speichern Sie jeden Plan als Pipeline-Artefakt mit Zeitstempeln und Genehmigungsmetadaten
- Blockieren Sie das Anwenden, wenn kein Plan existiert oder der Plan nicht überprüft wurde
- Überprüfen Sie Pläne auf Überraschungen, bevor Sie sie genehmigen, nicht nur auf Korrektheit
- Nutzen Sie Pläne bei der Untersuchung von Vorfällen als Ihre erste Wahrheitsquelle für aktuelle Änderungen
Die Kernidee
Plan-Review-Apply verwandelt Infrastrukturänderungen von blinden Glücksspielen in kalkulierte, verifizierte Operationen. Der Plan zeigt Ihnen, was passieren wird, bevor es passiert. Das Review fängt Probleme ab, bevor sie die Produktion erreichen. Das Anwenden führt nur das aus, was verifiziert wurde. Dieser Workflow beseitigt nicht jedes Risiko, aber er beseitigt das Risiko, Änderungen anzuwenden, ohne ihre vollständigen Auswirkungen zu kennen.
Wenn Ihr Team Infrastrukturänderungen immer noch direkt anwendet, beginnen Sie mit einer einfachen Regel: Erstellen Sie zuerst einen Plan, lesen Sie ihn und entscheiden Sie dann erst, ob Sie ihn anwenden. Diese einzelne Gewohnheit wird mehr Produktionsprobleme verhindern als die meisten Überwachungstools es jemals werden.