Deployment: Definition, Ablauf und Bedeutung
Deployment bezeichnet die Bereitstellung einer Software oder neuen Softwareversion in einer Zielumgebung, damit sie dort installiert, ausgeführt und genutzt werden kann.
In der Softwareentwicklung ist das Deployment ein zentraler Schritt zwischen Entwicklung und Betrieb. Es sorgt dafür, dass neue Funktionen, Fehlerbehebungen oder technische Änderungen aus der Entwicklungsumgebung in eine Test-, Staging- oder Produktivumgebung übertragen werden.
Was bedeutet Deployment?
Beim Deployment wird eine entwickelte oder aktualisierte Software in einer bestimmten Umgebung bereitgestellt.
Dazu können beispielsweise folgende Schritte gehören:
- Software verpacken oder ein Build erstellen
- Dateien und Artefakte übertragen
- Abhängigkeiten installieren
- Konfigurationen bereitstellen
- Datenbankänderungen durchführen
- Container oder Services starten
- Anwendungen neu starten
- Funktions- und Verfügbarkeitsprüfungen durchführen
Ein Deployment kann manuell durchgeführt oder vollständig automatisiert werden.
Welche Deployment-Umgebungen gibt es?
Software wird häufig nicht direkt in der Produktivumgebung bereitgestellt. Stattdessen existieren mehrere voneinander getrennte Umgebungen.
Typische Beispiele sind:
- Development: Umgebung für die laufende Entwicklung
- Test: Umgebung für automatisierte und manuelle Tests
- Staging: möglichst produktionsnahe Umgebung für abschließende Prüfungen
- Production: produktiv genutzte Umgebung für Anwender
Durch diese Trennung können Änderungen geprüft werden, bevor sie tatsächlich von Nutzern verwendet werden.
Welche Deployment-Strategien gibt es?
Um das Risiko beim Bereitstellen neuer Versionen zu minimieren, kommen unterschiedliche Deployment-Strategien zum Einsatz:
- Blue-Green-Deployment: Zwei identische Produktivumgebungen laufen parallel. Während eine Umgebung aktiv genutzt wird, wird die neue Version in der anderen bereitgestellt und getestet. Erst nach erfolgreicher Prüfung wird der Nutzerverkehr umgeschaltet – bei Problemen kann sofort zur vorherigen Umgebung zurückgewechselt werden.
- Canary-Release: Die neue Version wird zunächst nur einem kleinen Teil der Nutzer bereitgestellt. Läuft alles stabil, wird der Anteil schrittweise erhöht, bis die Version vollständig ausgerollt ist.
- Rolling Update: Die neue Version wird schrittweise auf einzelnen Serverinstanzen ausgerollt, während die übrigen Instanzen weiterhin die alte Version bedienen. Dadurch bleibt die Anwendung durchgehend verfügbar.
Diese Strategien reduzieren das Risiko von Ausfällen und ermöglichen ein kontrolliertes Zurückrollen (Rollback), falls nach dem Deployment Probleme auftreten.
Deployment und Release: Was ist der Unterschied?
Der Unterschied zwischen Deployment und Release
Deployment ist ein technischer Vorgang: Software wird in eine Umgebung übertragen und dort lauffähig gemacht.
Release ist eine geschäftliche/organisatorische Entscheidung: Eine Version der Software wird für die Nutzung durch (bestimmte) Endanwender freigegeben.
Praxis-Beispiel Deployment vs. Release
Ein Team deployt eine neue Funktion in die Produktivumgebung – der Code liegt jetzt live auf den Servern. Trotzdem sehen die Nutzer davon noch nichts, weil die Funktion hinter einem sogenannten Feature Flag versteckt ist. Erst wenn das Unternehmen entscheidet „jetzt ist der richtige Zeitpunkt“ (z. B. passend zu einer Marketingkampagne, einer Schulung der Kundschaft oder einem bestimmten Stichtag), wird der Feature Flag aktiviert – das ist der eigentliche Release.
Warum die Trennung Deployment und Release wichtig ist
Diese Entkopplung ist ein zentraler Vorteil moderner Software-Delivery-Praktiken (Continuous Deployment): Teams können neue Versionen häufig und risikoarm technisch ausrollen, ohne dass sofort alle Nutzer betroffen sind. Das Risiko wird dadurch reduziert, dass Deployment (technisches Risiko) von Release (geschäftliches Risiko/Timing) getrennt gesteuert werden kann.
