Eine Deployment-Vorlage, die wirklich genutzt wird
Jedes Team kennt den einen Deployment-Fehler, weil jemand einen Schritt vergessen hat. Vielleicht wurde das Build-Artefakt nie in die Registry gepusht. Vielleicht wurde der Smoke-Test übersprungen, weil es „nur eine kleine Änderung“ war. Vielleicht wurde der Rollback-Plan in einem Meeting besprochen, aber nie aufgeschrieben – und als etwas schiefging, konnte sich niemand auf das weitere Vorgehen einigen.
Diese Probleme sind keine Frage des Könnens. Sie sind eine Frage des Prozesses. Wenn der Druck steigt – ein Produktionsvorfall, eine knappe Deadline, ein Manager, der nach Updates fragt – beginnen Leute, Schritte auszulassen. Nicht, weil sie es wollen, sondern weil es keine klare Checkliste gibt, an die sie sich halten können.
Eine Deployment-Vorlage löst das. Sie ist kein bürokratisches Dokument. Sie ist ein Sicherheitsnetz.
Was eine Deployment-Vorlage bewirkt
Eine Deployment-Vorlage ist eine Liste von Schritten, die jedes Mal ausgeführt werden müssen, wenn Sie eine neue Version Ihrer Anwendung in einer Umgebung bereitstellen. Sie sagt Ihnen nicht, wie Sie Ihren Job machen sollen. Sie sagt Ihnen, was Sie nicht vergessen dürfen.
Die Vorlage funktioniert für Backend-APIs, Webanwendungen und Hintergrund-Worker. Die technischen Details unterscheiden sich – ein Team verwendet Docker-Images, ein andere kompilierte Binärdateien – aber die Struktur bleibt gleich. Diese Struktur hat vier Phasen: Build und Verify, Deploy to Staging, Deploy to Production und Vorbereitung eines Rollback-Plans.
Das folgende Diagramm zeigt die vier Phasen und wie sie zusammenhängen, einschließlich der Rückkopplungsschleife, wenn eine Phase fehlschlägt.
Phase Eins: Build and Verify
Bevor Ihr Code irgendwo hingeht, müssen Sie beweisen, dass er tatsächlich läuft. In dieser Phase haben die meisten Teams bereits Automatisierung, aber die Vorlage stellt sicher, dass nichts übersehen wird.
Die Schritte sind einfach:
Hier ist ein GitHub Actions-Workflow, der Phase Eins für eine Node.js-Anwendung implementiert:
name: Build and Verify
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm test
- run: npm run build
- name: Push Docker image
run: |
docker build -t myapp:${{ github.sha }} .
docker tag myapp:${{ github.sha }} registry.example.com/myapp:${{ github.sha }}
docker push registry.example.com/myapp:${{ github.sha }}
Dieser Workflow wird bei jedem Push auf main ausgelöst, führt Tests aus, baut die Anwendung und pusht das Docker-Image in eine Registry. Wenn ein Schritt fehlschlägt, stoppt das Deployment automatisch.
- Checken Sie den Code aus dem richtigen Branch aus. Nicht dem Branch, den Sie für richtig halten. Dem, den Sie tatsächlich verifiziert haben.
- Führen Sie den Build-Prozess aus. Dies erzeugt das Artefakt – ein Docker-Image, eine JAR-Datei, eine kompilierte Binärdatei, was auch immer Ihr Stack verwendet.
- Führen Sie Unit-Tests und Integrationstests aus. Diese bestätigen, dass sich der Code wie erwartet verhält und die Teile zusammenpassen.
- Prüfen Sie auf Fehler und Warnungen, die den Prozess stoppen würden. Ein bestandener Build mit Warnungen ist immer noch ein bestandener Build, aber einige Warnungen signalisieren echte Probleme.
- Pushen Sie das Artefakt in eine Registry, auf die Ihre Zielumgebungen zugreifen können. Wenn das Artefakt nicht gespeichert ist, können Sie es später nicht deployen.
Wenn ein Schritt in dieser Phase fehlschlägt, stoppt das Deployment. Sie beheben den Code und beginnen von vorne. Keine Ausnahmen.
Phase Zwei: Deploy to Staging
Staging ist Ihr Proberaum. Es spiegelt die Produktion so genau wie möglich wider, aber echte Benutzer kommen nie damit in Berührung. Hier fangen Sie Probleme, die Tests nicht finden können – Konfigurationskonflikte, umgebungsspezifische Fehler, Integrationsprobleme mit Diensten, die nur in produktionsähnlichen Setups existieren.
Die Schritte hier umfassen:
- Ziehen Sie das Artefakt aus der Registry. Verwenden Sie genau dasselbe Artefakt, das Phase Eins bestanden hat.
- Deployen Sie in die Staging-Umgebung. Dies sollte denselben Deployment-Mechanismus verwenden, den Sie in der Produktion verwenden werden.
- Führen Sie Smoke-Tests aus. Dies sind schnelle Prüfungen, die bestätigen, dass die Anwendung auf Anfragen reagiert, eine Verbindung zu ihrer Datenbank herstellt und mit ihren Abhängigkeiten kommuniziert.
- Prüfen Sie die Logs auf unerwartete Fehler. Eine gesunde Anwendung produziert vorhersagbare Logs. Alles Ungewöhnliche ist eine Untersuchung wert.
- Führen Sie Integrationstests aus, die eine vollständige Umgebung benötigen. Manche Tests ergeben nur Sinn, wenn das gesamte System läuft.
Wenn alles gut aussieht, gehen Sie zur nächsten Phase über. Wenn etwas kaputtgeht, gehen Sie zurück zu Phase Eins, beheben den Code, bauen neu und deployen erneut nach Staging.
Phase Drei: Deploy to Production
Dies ist die kritische Phase. Echte Benutzer sind auf Ihre Anwendung angewiesen. Fehler hier betreffen echte Arbeit.
Das Produktions-Deployment sollte schrittweise erfolgen. Blue-Green-Deployment, Canary-Releases oder Rolling Updates – alles funktioniert. Der Schlüssel ist, dass Sie nicht alles auf einmal ersetzen.
Die Schritte sind:
- Bestätigen Sie, dass kein anderes Deployment läuft. Zwei gleichzeitige Deployments verursachen Chaos.
- Ziehen Sie dasselbe Artefakt, das Staging bestanden hat. Bauen Sie nicht neu. Verwenden Sie das verifizierte Artefakt.
- Deployen Sie mit Ihrer gewählten Strategie. Wenn Sie Canary-Releases verwenden, beginnen Sie mit einem kleinen Prozentsatz des Traffics.
- Überwachen Sie Metriken: Antwortzeit, Fehlerrate, CPU-Auslastung, Speicherverbrauch, Durchsatz. Diese Zahlen zeigen Ihnen, ob die neue Version gesund ist.
- Führen Sie nach dem Deployment Health Checks und Smoke-Tests durch. Diese bestätigen, dass die Anwendung tatsächlich korrekt Traffic bedient.
Wenn Metriken falsch aussehen, warten Sie nicht. Sie lösen den Rollback aus.
Phase Vier: Der Rollback-Plan
Jedes Deployment braucht einen Weg zurück. Keine vage Idee zurückzugehen. Einen konkreten Plan, der vor dem Deployment geschrieben wurde.
Der Rollback-Plan beantwortet drei Fragen:
- Wann führen Sie den Rollback durch? Definieren Sie den Auslöser. Zum Beispiel: Fehlerrate über 5 Prozent, Antwortzeit um 50 Prozent gestiegen oder ein kritischer Endpunkt antwortet nicht mehr.
- Wie führen Sie den Rollback durch? Geben Sie den Mechanismus an. Dies könnte das Umleiten von Traffic zur vorherigen Version, das erneute Deployen des alten Artefakts oder das Ausführen eines Skripts zur Umkehrung einer Datenbankmigration sein.
- Wer entscheidet? Nennen Sie die Person oder Rolle, die befugt ist, den Rollback auszurufen. In einem Vorfall ist Warten auf Konsens Zeitverschwendung.
Schreiben Sie den Rollback-Plan auf. Teilen Sie ihn mit dem Team. Holen Sie Zustimmung ein, bevor Sie mit dem Produktions-Deployment beginnen.
Praktische Checkliste für das Anwendungs-Deployment
Hier ist eine kurze Checkliste, die Sie an Ihr Team anpassen können. Sie ist nicht vollständig, deckt aber das Wesentliche ab.
Build and Verify
- Code aus verifiziertem Branch ausgecheckt
- Build erfolgreich
- Unit- und Integrationstests bestanden
- Artefakt in Registry gepusht
Deploy to Staging
- Artefakt aus Registry gezogen
- Deployment ohne Fehler abgeschlossen
- Smoke-Tests bestanden
- Logs zeigen keine unerwarteten Fehler
Deploy to Production
- Kein gleichzeitiges Deployment läuft
- Artefakt aus Staging verwendet
- Schrittweise Deployment-Strategie angewendet
- Metriken für 10-15 Minuten überwacht
- Health Checks bestanden
Rollback-Plan
- Rollback-Auslöser definiert
- Rollback-Mechanismus festgelegt
- Entscheider identifiziert
- Plan vor dem Deployment geteilt und vereinbart
Passen Sie die Vorlage an Ihr Team an
Ein Team, das gerade erst anfängt, könnte eine einfache Version verwenden: Build, Deploy to Staging, Deploy to Production, Rollback. Ein erfahrenes Team könnte Sicherheitsscans, Leistungstests oder Genehmigungsstufen in jeder Phase hinzufügen.
Wichtig ist nicht, wie viele Schritte Sie einfügen. Sondern dass Sie die Vorlage konsequent nutzen. Eine Vorlage, die in einem Wiki gespeichert ist und niemand liest, ist nutzlos. Eine Vorlage, die in Ihre Deployment-Pipeline eingebettet, vor jedem Release überprüft und aktualisiert wird, wenn Sie etwas Neues lernen – das macht Deployments sicherer.
Das Fazit
Deployment-Vorlagen gibt es, weil das Gedächtnis unzuverlässig ist, besonders unter Druck. Schreiben Sie die Schritte auf. Teilen Sie sie. Nutzen Sie sie jedes Mal. Wenn etwas schiefgeht, wissen Sie genau, was zu tun ist – und alle anderen in Ihrem Team auch.