# Umgebungen & Promotion

> Parität, Promotionspfade und die Trennung von Code und Konfiguration gestalten.

Track: [Cloud Infrastructure & Platform Engineering](https://physar.tech/learn/cloud-infra)  
Kanonische Fassung: https://physar.tech/learn/cloud-infra/environments-promotion  
Stand: 2026-09-13  
Interaktiver Teil: 8 Checks (nur im Browser)

## Promotion als überprüfbare Kette statt als Neubau gestalten

### Wozu eine Vorstufe überhaupt da ist

Eine Vorproduktionsumgebung hat genau einen Zweck: Sie soll eine Aussage über das Verhalten in Produktion erlauben, bevor die Produktion betroffen ist. Jede Abweichung, die diese Aussage schwächt, entwertet die Umgebung — und jede Abweichung, die die Aussage nicht betrifft, ist legitime Kostenersparnis.

Daraus folgt eine nützliche Unterscheidung: **strukturelle Parität** (dieselben Ressourcentypen, dieselbe Topologie, dieselben Identitäts- und Netzgrenzen, dieselbe Ausbringungsmechanik) versus **dimensionale Parität** (dieselbe Instanzgröße, Knotenzahl, Datenmenge). Struktur muss gleich sein, Dimension darf abweichen — solange man weiß, welche Aussagen dadurch verloren gehen.

|  |  |
| --- | --- |
| Gleich halten | Ressourcentypen, Netz- und Identitätsgrenzen, Konfigurationsmechanik, Ausbringungsweg, Versionen von Plattformdiensten |
| Abweichen dürfen | Instanzgrößen, Replikatzahl, Datenvolumen, Aufbewahrungsfristen, Redundanzstufe |
| Nie identisch | Echte personenbezogene Produktionsdaten — dafür maskierte oder synthetische Datensätze |

> **Merksatz:** Ein grüner Test in einer Umgebung, die strukturell anders ist, ist kein schwaches Signal — er ist ein irreführendes.

### Ein Artefakt, viele Umgebungen

Die zentrale Disziplin der Promotion lautet: **Das getestete Artefakt ist das ausgebrachte Artefakt.** Wird pro Umgebung neu gebaut, testest du nie das, was in Produktion läuft — abweichende Abhängigkeitsversionen, ein anderer Basis-Image-Stand, eine andere Werkzeugversion genügen.

_[Abbildung: Einmal bauen, mehrfach ausbringen: Nur die Konfiguration wechselt zwischen den Stufen.]_

Was dann zwischen den Umgebungen unterscheidet, ist ausschließlich **Konfiguration**: Endpunkte, Grenzwerte, Referenzen auf Geheimnisse, Größen. Der Zwölf-Faktor-Grundsatz formuliert es als strikte Trennung von Code und Konfiguration — und ergänzt den entscheidenden Punkt: Konfiguration variiert zwischen Deployments, Code nicht.

- Geheimnisse werden **referenziert**, nicht in die Konfiguration kopiert — die Referenz ist gleich, das Ziel unterscheidet sich pro Umgebung.
- Umgebungsspezifische Verzweigungen im Code (`wenn Produktion, dann …`) verlagern die Konfiguration ins Artefakt und machen den Test wertlos.
- Auch die Infrastrukturbeschreibung folgt der Regel: **ein** Modul, unterschiedliche Parameterdateien — nicht ein Ordner pro Umgebung mit kopiertem Inhalt.

### Der Promotionspfad

Ein Promotionspfad ist eine Kette von Stufen mit **Gates**: Bedingungen, die erfüllt sein müssen, damit ein Artefakt eine Stufe weiterrückt. Ein Gate ohne Kriterium ist eine Warteschlange; ein Gate, das jeder überspringen kann, ist eine Empfehlung.

Bauen — genau einmal, unveränderliches Artefakt → Automatische Prüfungen gegen das Artefakt → Ausbringung in die Vorstufe mit deren Konfiguration → **Gate: definierte Kriterien erfüllt?** → Ausbringung in die Produktion — dasselbe Artefakt, andere Konfiguration

Die Zahl der Stufen ist kein Qualitätsmerkmal. Jede zusätzliche Stufe kostet Pflege, Kosten und Durchlaufzeit — und Durchlaufzeit ist ein Sicherheitsfaktor, weil kleine, häufige Änderungen leichter zu beurteilen sind als große, seltene. Eine Stufe rechtfertigt sich nur, wenn sie eine Frage beantwortet, die keine andere Stufe beantwortet.

> **Antipattern:** Die „Integrationsumgebung“, in der drei Teams gleichzeitig testen und alle Fehler auf die jeweils anderen schieben. Wenn eine Umgebung nicht in einen bekannten Zustand zurückversetzt werden kann, produziert sie keine Aussagen.

### Isolation zwischen Umgebungen

Umgebungen zu trennen heißt nicht, sie in verschiedene Ordner zu legen. Die belastbare Trennlinie ist die **Kontogrenze** der Plattform: getrennte Konten bzw. Subscriptions bzw. Projekte pro Umgebung. Sie bringt drei Dinge, die weichere Trennungen nicht bringen — getrennte Rechtevergabe, getrennte Kontingente, und die Unfähigkeit, versehentlich über die Grenze zu greifen.

Der klassische Bruch ist der geteilte Dienst „aus Kostengründen“: eine Datenbank für Test und Produktion, ein gemeinsamer Schlüssel, ein Netzsegment für alles. Der Bruch fällt nicht im Normalbetrieb auf, sondern wenn ein Test-Job die Produktionstabelle leert oder eine Testlast das Kontingent der Produktion aufbraucht.

> **Gleich im Check:** In den folgenden Entscheidungen legst du Parität fest, trennst Code von Konfiguration und beurteilst einen Promotionspfad, der schneller aussieht, als er ist.

### Der Betriebsvertrag braucht messbare Invarianten

**Betriebsinvariante:** Eine Aussage über eine Release-Einheit auf ihrem Weg durch Entwicklungs-, Test- und Produktionsumgebungen, die vor und nach einem erlaubten Übergang nachweisbar wahr sein muss.

Ein technisches Feature wird erst dann zu einem Betriebsvertrag, wenn Sollzustand, Verantwortlicher, Messpunkt und Reaktion zusammenpassen. Für eine Release-Einheit auf ihrem Weg durch Entwicklungs-, Test- und Produktionsumgebungen besteht der prüfbare Kern aus **unveränderliches Artefakt, signierte Herkunft, Konfigurationssatz und Promotion-Nachweis**. Der Vertrag nennt außerdem den gültigen Scope und die Bedingungen, unter denen ein Übergang abgebrochen wird. Das verhindert, dass Teams dieselben Wörter verwenden, aber unterschiedliche Garantien erwarten. das Produktteam für das Artefakt und die Plattform für Gates und Umgebungsgrenzen bestätigt nicht nur eine Konfiguration, sondern die Fähigkeit, ihre Wirkung zu beobachten und bei Abweichung zu handeln.

Invarianten müssen von außen prüfbar sein. Eine Aussage wie **ist sicher** hilft nicht; eine Aussage wie **jede schreibende Operation trägt artifact-digest, stammt aus einer freigegebenen Identität und erzeugt innerhalb des Messfensters einen Auditnachweis** kann getestet werden. Neben dem positiven Pfad gehören negative Fälle in die Abnahme: unzulässiger Scope, fehlende Freigabe, veraltetes Artefakt und nicht erreichbare Kontrollabhängigkeit. Erst diese Gegenproben zeigen, ob die Grenze technisch durchgesetzt oder nur dokumentiert ist.

**Kurzcheck:** Welche Beschreibung ist für eine Release-Einheit auf ihrem Weg durch Entwicklungs-, Test- und Produktionsumgebungen als Invariante geeignet?

- [x] Jeder erlaubte Übergang ist über artifact-digest, Owner, Scope und Ergebnis korrelierbar
- [ ] Das Team arbeitet vorsichtig und hält sich normalerweise an die gemeinsame Dokumentation
- [ ] Die eingesetzte Cloudfunktion gilt allgemein als zuverlässig

> Die Aussage benennt prüfbare Merkmale und lässt sich automatisiert oder im Review widerlegen.

### Grenzen und Eigentum entscheiden über den Blast Radius

Die wirksame Grenze liegt bei **Artefakt-Registry, Umgebungsidentität und Freigabekanal**. Sie bestimmt, welche Ressourcen, Daten und Teams von einer fehlerhaften Entscheidung gemeinsam betroffen sein können. Organigramme und Repository-Grenzen sind dafür nur Hinweise. Maßgeblich ist, wo Identitäten, Zustand, Kapazität oder Kontrollpfade tatsächlich geteilt werden. mehr Parität verbessert die Aussagekraft, verursacht aber Kosten; entscheidend ist Parität bei den Eigenschaften, die das Risiko tragen Diese Abwägung wird explizit dokumentiert, damit eine spätere Konsolidierung nicht unbemerkt mehrere unabhängige Fehlerbereiche wieder koppelt.

Eigentum bedeutet Entscheidungs- und Reaktionspflicht. das Produktteam für das Artefakt und die Plattform für Gates und Umgebungsgrenzen legt fest, wer den Sollzustand ändern, wer eine Ausnahme genehmigen und wer im Vorfall handeln darf. Ein RACI ohne technische Rechteprüfung reicht nicht. Regelmäßig wird verglichen, ob Gruppen, Pipeline-Identitäten und Notfallrollen noch zum dokumentierten Modell passen. Gemeinsame Komponenten erhalten einen eigenen Service-Owner, SLO und Eskalationsweg, weil sonst jedes konsumierende Team nur seine lokale Sicht optimiert.

> **Grenztest:** Frage für jede gemeinsame Abhängigkeit: Welcher maximale Teil des Dienstes fällt aus, wenn genau diese Abhängigkeit falsche Daten liefert, nicht erreichbar ist oder kompromittiert wird?

### Der Normalablauf wird als kontrollierte Zustandsmaschine beschrieben

Einmal bauen → Herkunft prüfen → **Konfiguration binden** → In Vorstufe verifizieren → Dasselbe Artefakt promoten und Produktionssignale beobachten

Der Ablauf ist eine Zustandsmaschine und keine lose Checkliste. Jeder Schritt besitzt Eingangsdaten, einen ausführenden Prinzipal, ein Ergebnis und eine Abbruchbedingung. Ein nachfolgender Schritt darf nur starten, wenn das vorherige Ergebnis unverändert referenziert wird. Dadurch kann ein Review nicht versehentlich ein anderes Artefakt prüfen als die Automatisierung später verwendet. Wiederholungen müssen entweder idempotent sein oder eine eindeutige Vorgangskennung erkennen, damit ein Timeout nicht zu einer zweiten konkurrierenden Änderung führt.

Für Ein Netzwerk-Controller wird einmal gebaut und mit getrennten Konfigurationspaketen durch Test und Produktion geführt wird der Ablauf zuerst in einem kleinen, repräsentativen Scope ausgeführt. Die Plattform protokolliert Eingaben und Ergebnis, aber keine Secrets oder unnötigen Nutzdaten. Menschliche Freigaben beziehen sich auf Digest, Plan oder Version, nicht auf einen veränderlichen Namen. So bleibt die Kette auch dann prüfbar, wenn zwischen Review und Ausführung Zeit vergeht oder ein anderer Runner übernimmt.

### Vorbedingungen und Gates stoppen unsichere Übergänge

Ein Gate ist nur sinnvoll, wenn sein Ergebnis die Ausführung tatsächlich stoppt. Mindestgates prüfen Identität und Scope, Vollständigkeit des Artefakts, bekannte Richtlinien, verfügbare Kapazität sowie einen beobachtbaren Rückweg. Das Gate liefert **bestanden**, **abgelehnt** oder **befristete Ausnahme** mit maschinenlesbarem Grund. Warnungen, die bei jedem Lauf ignoriert werden, sind keine Kontrolle; sie werden entweder in eine harte Bedingung, einen befristeten Behebungsauftrag oder eine bewusst entfernte Regel überführt.

Die Vorbedingungen müssen zum Risiko passen. mehr Parität verbessert die Aussagekraft, verursacht aber Kosten; entscheidend ist Parität bei den Eigenschaften, die das Risiko tragen Deshalb wird nicht jede Änderung durch denselben schweren Prozess geschickt. Kleine, reversible Schritte mit engem Scope können automatisiert freigegeben werden. Irreversible Datenänderungen, neue Vertrauensbeziehungen oder eine Vergrößerung der Fehlerdomäne verlangen zusätzliche Evidenz und unabhängiges Review. Die Risikoklasse stammt aus der beobachtbaren Wirkung, nicht aus der Zahl geänderter Codezeilen.

- Ist das Ziel eindeutig und der Scope kleiner als die maximal erlaubte Fehlerdomäne?
- Sind Eingaben und Abhängigkeiten unveränderlich referenziert?
- Existieren Abbruchsignal und benannter Owner?
- Ist der Rückweg technisch möglich und mit aktuellen Daten geprobt?
- Wird die Wirkung nach dem Übergang gegen eine Baseline geprüft?

### Fehlerbilder werden vor dem Ernstfall operationalisiert

Die wichtigsten Fehlerbilder sind **Neubauten je Umgebung, manuelle Hotfixes, geteilte Credentials und eine Vorstufe ohne produktionsrelevante Eigenschaften**. Für jedes Bild wird festgehalten, wie es erkannt wird, welche automatischen Schutzmechanismen greifen und welche manuelle Entscheidung übrig bleibt. Ein Runbook, das erst mit der Ursachenanalyse beginnt, kommt zu spät. Zuerst werden Nutzerwirkung und Ausbreitung begrenzt; danach wird die Hypothese mit möglichst kleinen, reversiblen Tests geprüft. Änderungen an mehreren Grenzen gleichzeitig sind zu vermeiden, weil ihr Ergebnis keine Ursache mehr isoliert.

Übungen testen nicht nur den glücklichen Failover. Ein sinnvoller Versuch nimmt zusätzlich eine Kontrollabhängigkeit weg, verzögert Telemetrie oder lässt einen Schritt nach erfolgreicher Außenwirkung mit Timeout enden. Das Team muss dann erkennen, ob die Operation wiederholt, fortgesetzt oder gestoppt werden darf. Beobachtet werden sowohl technische Metriken als auch die Qualität der Entscheidung: Zeit bis zur klaren Führung, Anzahl konkurrierender Änderungen und Vollständigkeit der Evidenz.

### Fehlerprobe mit begrenztem Scope

Ein Netzwerk-Controller wird einmal gebaut und mit getrennten Konfigurationspaketen durch Test und Produktion geführt

**Anforderungen**

- Explizite Hypothese und erwartetes Signal
- Begrenzter Zielscope mit Abbruchschwelle
- Aktueller Rückweg und erreichbarer Owner
- Zeitlich korrelierbare technische und fachliche Messung

**Schritte**

- Baseline sichern
- Eine Fehlerannahme auslösen
- Schutzreaktion beobachten
- Kontrolliert wiederherstellen
- Abweichungen als Arbeit erfassen

**Merksatz:** Eine bestandene Übung beweist den geprobten Fall unter den beobachteten Bedingungen, nicht die Abwesenheit aller Risiken.

### Telemetrie verbindet technische Signale mit Nutzerwirkung

Für den Betrieb werden **Artefakt-Digest, Konfigurationsdifferenz, Gate-Ergebnis, Promotionsdauer und unerklärte Drift** gemeinsam betrachtet. Einzelne Messwerte ohne Scope und Zeitbezug sind gefährlich: Ein globaler Durchschnitt kann einen vollständigen Ausfall einer Zone verdecken, eine erfolgreiche API-Antwort kann eine verzögerte Wirkung verschleiern. Jede Metrik nennt Quelle, Dimensionen, erwartete Aktualität und Verhalten bei Messlücken. Fehlende Telemetrie gilt bei kritischen Übergängen als eigener Fehlerzustand und kann die Fortsetzung blockieren.

Alarme werden an einer konkreten Handlung ausgerichtet. Ein Alarm nennt betroffenen Scope, beobachtete Invariante, wahrscheinlichen Owner und den ersten sicheren Prüfschritt. Tickets eignen sich für langsamen Kapazitäts- oder Complianceabbau; Paging bleibt akuter Nutzerwirkung oder unmittelbar drohendem Kontrollverlust vorbehalten. Dashboards und Auditabfragen verwenden dieselben IDs wie artifact-digest, damit Einsatzleitung, Plattform und Workload-Team nicht drei widersprüchliche Zeitlinien rekonstruieren.

> **Messlücke:** Wenn ein Übergang erfolgreich gemeldet wird, seine erwartete Wirkung aber nicht innerhalb des Messfensters beobachtbar ist, bleibt der Zustand unbekannt. Unbekannt ist kein Erfolg.

### Recovery beginnt mit einem sicheren Kontrollpunkt

Der Recovery-Vertrag lautet: **Promotion anhalten, zuletzt bewährtes Artefakt mit passender Konfiguration aktivieren und abweichende Umgebungseinstellungen dokumentiert zurückführen**. Er nennt den letzten sicheren Kontrollpunkt, die Reihenfolge der Schritte und die Daten, die nach einer Umschaltung fachlich geprüft werden müssen. Rollback ist nur dann ein Rückweg, wenn alte Software, Konfiguration und Datenzustand noch kompatibel sind. Andernfalls ist ein kontrollierter Roll-forward oft sicherer. Diese Entscheidung wird vor dem Vorfall für die wichtigsten Änderungsklassen getroffen.

Backups und Exportdateien zählen erst nach einem Restore-Test als Recovery-Fähigkeit. Ebenso zählt eine sekundäre Umgebung erst, wenn Identität, Quotas, Netzpfade, Schlüssel und Telemetrie dort unter realistischer Last funktionieren. Die Übung protokolliert erreichten Wiederherstellungspunkt, Dauer, Datenabweichung und manuelle Abhängigkeiten. Ein verfehltes Ziel führt zu einer priorisierten Architektur- oder Prozessänderung; das bloße Herabsetzen des Zielwerts benötigt eine fachliche Risikoentscheidung.

Schreibende Änderungen stoppen → **Sicheren Kontrollpunkt bestimmen** → Abhängigkeiten und Zielkapazität prüfen → Kleinste wirksame Recovery-Maßnahme ausführen → Technische und fachliche Konsistenz messen → Schrittweise in den Normalbetrieb zurückkehren

### Änderungsevidenz macht Entscheidungen später prüfbar

Evidenz ist ein Produkt des Ablaufs. unveränderliches Artefakt, signierte Herkunft, Konfigurationssatz und Promotion-Nachweis werden über artifact-digest verbunden und in einem Speicher abgelegt, den der ausführende Prinzipal nicht nachträglich unbemerkt verändern kann. Die Aufbewahrung richtet sich nach Betriebs-, Sicherheits- und Nachweisanforderungen. Sensible Werte werden minimiert oder maskiert; ein Audit-Log darf nicht selbst zum Secret- oder Personendatenarchiv werden.

Ein Abschlussnachweis beantwortet sechs Fragen: Wer löste den Übergang aus, was wurde freigegeben, welcher Scope war betroffen, welche automatischen und menschlichen Gates griffen, welche Wirkung wurde gemessen und welcher Restfehler blieb? Diese Struktur beschleunigt sowohl Incident-Diagnose als auch regelmäßige Reviews. Sie erlaubt außerdem, wiederkehrende manuelle Ausnahmen, lange Wartezeiten und häufige Abbrüche als Signale für eine schlechte Plattform-Schnittstelle zu erkennen.

Für die technische Abnahme wird eine kleine Nachweismatrix gepflegt. Ihre Zeilen sind Normalbetrieb, Grenzfall, abgelehnter Fall, Kontrollausfall und Recovery; ihre Spalten sind Eingabe, erwarteter Zustand, Messpunkt, Frist und Owner. Dabei werden **Build, Release und Laufzeitkonfiguration** getrennt betrachtet, weil eine erfolgreiche Probe der einen Klasse keine Aussage über die anderen liefert. Als gemeinsame Referenzen dienen `Artefakt-Digest, Konfigurationsversion und Umgebungs-ID`. Die IDs müssen bereits bei der Ausführung entstehen und durch Telemetrie, Ticket und Auditstrom weitergereicht werden. Nachträgliches Zusammenführen anhand ungefähr gleicher Uhrzeiten ist nur eine schwache Ersatzlösung. Die Matrix wird bei einer neuen Abhängigkeit, einem geänderten Scope oder einer geänderten Wiederherstellungsannahme aktualisiert und als Teil des Changes geprüft.

Der wichtigste Abnahmesatz lautet, dass **Produktion exakt das in der Vorstufe geprüfte Artefakt erhält**. Um ihn zu widerlegen, braucht der Test mindestens einen erlaubten und einen bewusst unerlaubten Fall. Zusätzlich wird geprüft, was bei einem Timeout nach bereits eingetretener Wirkung geschieht. Die Automatisierung darf einen solchen Schritt nicht blind wiederholen. Sie liest zuerst den beobachtbaren Zustand und entscheidet dann zwischen Fortsetzen, kompensierender Aktion und Eskalation. Für schreibende Übergänge existiert ein Idempotenzschlüssel oder ein fachlich gleichwertiger Schutz. Dadurch wird aus einem Transportfehler kein doppelter Infrastruktur-, Daten- oder Berechtigungseingriff.

Die regelmäßige Betriebsprüfung nimmt anschließend reale Veränderungen in den Blick. Sie vergleicht dokumentierte Owner mit aktiven Berechtigungen, erwartete mit beobachteten Abhängigkeiten, vereinbarte mit gemessenen Wiederherstellungszeiten und geplante mit tatsächlich genutzten Ausnahmen. Abweichungen werden nach möglicher Nutzerwirkung und verbleibendem Zeitfenster priorisiert. Ein Befund gilt erst als geschlossen, wenn die technische Ursache behoben, die Kontrolle erneut ausgeführt und die Evidenz am selben Objekt verknüpft wurde. Wiederholte manuelle Eingriffe sind ein Signal für eine fehlende Plattformfähigkeit und werden in einen standardisierten Self-Service-Pfad oder eine bewusst akzeptierte Sonderverantwortung überführt.

## Quellen

- The Twelve-Factor App: Config — https://12factor.net/config
- The Twelve-Factor App: Build, release, run — https://12factor.net/build-release-run
- The Twelve-Factor App: Dev/prod parity — https://12factor.net/dev-prod-parity
- AWS Well-Architected Framework, Operational Excellence Pillar — https://docs.aws.amazon.com/wellarchitected/latest/operational-excellence-pillar/welcome.html
- Microsoft Azure Cloud Adoption Framework: Environments and landing zones — https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/
- Microsoft Azure Cloud Adoption Framework: Landing zone design areas — https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-areas
- Google SRE Book: Release Engineering — https://sre.google/sre-book/release-engineering/
