Begriff
Immutable Infrastructure
Warum wichtig?
Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.
Früher waren Server wie Haustiere (Pets). Man gab ihnen Namen ("Gandalf", "Zeus"). Wenn sie krank waren (Fehler), pflegte man sie gesund (SSH, Restart, Patch). Das führte zu Configuration Drift (jeder Server war ein bisschen anders). Immutable Infrastructure behandelt Server wie Vieh (Cattle). Man gibt ihnen Nummern ("web-01", "web-02"). Wenn ein Server krank ist, repariert man ihn nicht. Man tötet ihn und ersetzt ihn durch einen frischen Klon. Ein Server wird niemals nach der Installation verändert (Immutable = Unveränderlich). Updates? Baue ein neues Image, starte neue Server, lösche alte.
Merksatz: Ein Paradigma, bei dem Infrastrukturkomponenten (Server, Container) nach dem Deployment niemals modifiziert werden. Änderungen erfolgen ausschließlich durch Ersetzen durch neue Instanzen.
- Backen (Bake): Du erstellst mit Packer (von HashiCorp) ein "Golden Image" (AMI für AWS, VHD für Azure). Darin ist das OS und deine App fertig installiert.
- Deployen: Du startest 10 Instanzen von diesem Image (Auto Scaling Group / Terraform).
- Update: App v2 kommt?
- Baue neues Image v2.
- Starte 10 neue v2-Server.
- Lösche die 10 alten v1-Server.
- Kein SSH: Niemand darf sich einloggen. Debugging nur über zentralisierte Logs.
1. Security Benefits
Wenn niemand schreiben darf, kann sich auch kein Hacker einnisten ("Persistence").
Ein Rootkit oder Malware würde beim nächsten Re-Deploy (oft alle 24h) verschwinden.
Noch besser: Read-Only Filesystems. Angreifer können nichtmal Tools (wget) runterladen.
2. Testing & Rollback
Bei Mutable Infrastructure: "Ich habe den Patch auf Prod installiert, jetzt geht nichts mehr. Wie war der Zustand davor?" -> Panik. Bei Immutable: "v2 ist kaputt? Okay, schalte den Load Balancer zurück auf v1 (die Server stehen ja noch da)." -> Sofortiger Rollback. Du testest das Image im Staging. Wenn das Image auf Staging geht, geht es exakt so auf Prod (Bit-Identisch).
3. Stateful Services?
Immutable Infrastructure funktioniert super für Stateless Apps (Webserver). Für Datenbanken ist es schwer. Du kannst nicht einfach den DB-Server löschen (Daten weg!). Lösung: Trenne Compute (Server) von Storage (Disk/EBS). Beim DB-Update:
- Fahre DB runter.
- Löse Disk (Volume) vom alten Server.
- Lösche alten Server.
- Starte neuen Server mit neuer DB-Version.
- Mounte alte Disk. Trotzdem: Für Datenbanken wird oft noch "Mutable" Management (Ansible) bevorzugt.
The Baking Pipeline (Packer & Ansible)
Das Erschaffen der Immutable Images (das "Baking") ist nicht profan, sondern ein eigener CI-Prozess. Oft bedienen sich DevOps-Ingenieure hier einer Tool-Kombination aus HashiCorp Packer und Ansible. Packer fährt kurzzeitig eine nackte VM hoch, holt sich ein minimales OS-Template (z.B. Ubuntu) aus dem isolierten Subnetz und übergibt dann die Kontrolle an Ansible. Ansible installiert agentenlos SSH-Härtungen, Logs-Shipper (Fluentd) und Abhängigkeiten. Ist das Provisioning fehlerfrei durchgeführt, macht Packer einen Shutdown der VM, friert das Block-Device als AWS AMI (Amazon Machine Image) ein und löscht die Reste. Ab diesem Moment ist das Image versiegelt.
OS Hardening & Read-Only Root Filesystems (Roofs)
Ein extremes High-Security-Setup kombiniert Immutable Infrastructure mit einem Roofs (Read-Only Root Filesystem).
Auf Kernel-Ebene wird das / Verzeichnis der Instanz unveränderbar gemountet (mount -o ro). Selbst ein Hacker, der als root im System einwandert (Privilege Escalation), kann keinen bösartigen Cronjob in /etc/crontab installieren oder /bin/bash durch eine Backdoor überschreiben.
Applikations-Daten oder Caches werden strikt in separierte temporäre Mounts (/tmp als im RAM liegendes tmpfs) oder dedizierte externe Block-Storages (/var/lib/mysql) ausgelagert. Das Betriebssystem selbst ist betongleich und schimmelresistent.
Chaos Engineering (Chaos Monkey)
Netflix hat das Paradigma der Immutable Infrastructure zum Extrem getrieben: Die Simian Army (Chaos Monkey). Wenn jeder Server jederzeit gefahrlos terminiert und durch Neu-Spawns aus dem Image Pool ersetzt werden kann (da stateless und immutable), testet man das Vertrauen ins System durch absichtliche Sabotage. Ein Skript loggt sich zur Mittagszeit per API in die Cloud ein und erschießt zufällige Produktions-Server. Das zwingt die Auto-Scaling-Groups und Load-Balancer dazu, perfekt kalibriert zu bleiben. Wäre auch nur ein einziger Server "Mutable" konfiguriert worden (mit lokalen manuellen Änderungen), würde dieses Chaos das System zerstören. Im Idealfall merkt der Kunde jedoch keine Unterbrechung.
Quick-Check
Ist Docker immutable?
Ja! Container sind per Design wegwerfbar. Wenn dudocker execmachst undapt installausführst, brichst du das Prinzip (und verlierst die Änderung beim Neustart). Docker erzwingt das Mindset.Was ist "Snowflake Server"?
Das Gegenteil. Ein Server, der so oft manuell verändert wurde, dass er einzigartig wie eine Schneeflocke ist. Niemand traut sich, ihn neu zu starten. Der Horror jedes Admins.Kostet das nicht mehr?
Kurzfristig ja (doppelte Server beim Deployment). Langfristig spart es massiv Kosten durch weniger Ausfälle, schnelleres Debugging und fehlenden "Admin-Nachtschichten". Cloud Computing (Sekundengenaue Abrechnung) macht es wirtschaftlich.