Wie strukturiert man Terraform-Module und State Management für mehrere Teams? — Kodschul Wissen
Platform Engineering & DevOps7 Min. Lesezeit

Wie strukturiert man Terraform-Module und State Management für mehrere Teams?

Direkte Antwort

Bei mehreren Teams braucht Terraform klar geschnittene, wiederverwendbare Module mit definierten Schnittstellen, einen Remote State mit Locking (etwa über S3 und DynamoDB oder Terraform Cloud), und eine bewusste Aufteilung des States in mehrere kleinere State-Dateien statt eines einzigen monolithischen States, um den Blast Radius einer fehlerhaften Änderung zu begrenzen.

"

Ein einziger, riesiger State bedeutet, dass ein Tippfehler in einem winzigen Modul theoretisch die gesamte Infrastruktur des Unternehmens gefährden kann.

Ein einzelner, großer Terraform-State für die gesamte Infrastruktur funktioniert bei einem kleinen Team gut und wird bei wachsender Teamanzahl schnell zum Nadelöhr und Risikofaktor.

Modulschnitt entlang von Team- und Verantwortungsgrenzen

Terraform-Module sollten so geschnitten werden, dass sie sich an tatsächlichen Team- und Verantwortungsgrenzen orientieren, nicht an technischer Bequemlichkeit — ein Team, das für Netzwerk-Infrastruktur zuständig ist, sollte ein eigenes Modul mit klar definierten Ein- und Ausgabewerten haben, das andere Teams referenzieren können, ohne dessen interne Details zu kennen.

Diese Kapselung erlaubt es, ein Modul intern weiterzuentwickeln, solange die nach außen exponierte Schnittstelle (Input-Variablen, Output-Werte) stabil bleibt, ohne dass abhängige Teams davon betroffen sind.

Remote State mit Locking als Grundvoraussetzung für Teamarbeit

Sobald mehrere Personen denselben State bearbeiten, muss dieser remote gespeichert (etwa in S3, Azure Blob Storage oder Terraform Cloud) und mit einem Locking-Mechanismus versehen werden, der verhindert, dass zwei Personen gleichzeitig widersprüchliche Änderungen anwenden.

Ohne dieses Locking kann ein gleichzeitiger `terraform apply` zweier Personen zu einem korrupten oder inkonsistenten State führen, der aufwendig manuell repariert werden muss.

State-Aufteilung zur Begrenzung des Blast Radius

Statt eines einzigen State für die gesamte Infrastruktur empfiehlt sich eine Aufteilung in mehrere kleinere States entlang von Umgebungen (Produktion, Staging) und Verantwortungsbereichen (Netzwerk, Datenbank, Anwendung), sodass ein Fehler in einem State nicht automatisch die gesamte Infrastruktur betrifft.

Diese Aufteilung erhöht zwar die Komplexität bei der Verwaltung von Abhängigkeiten zwischen States (etwa über Remote State Data Sources), reduziert aber das Risiko erheblich, dass eine einzelne fehlerhafte Änderung unternehmensweite Auswirkungen hat.

Wann passt es — wann nicht?

Passt gut

  • Mehrere Teams arbeiten unabhängig an unterschiedlichen Teilen derselben Cloud-Infrastruktur

Passt nicht

  • Ein einzelnes kleines Team verwaltet eine überschaubare Infrastruktur