Die beste Erklärung findet sich (wie immer) in Martin Fowlers Wiki-Artikel über unveränderliche Server .
Auf einem Server, sei es Hardware oder ein virtueller Server in der Cloud, wird normalerweise ein Betriebssystem und eine Anwendung ausgeführt.
Häufig erfordern die Anwendung und die Komponenten des Betriebssystems eine Konfiguration und Änderungen. Zum Beispiel Sicherheits-Patches, Bereitstellung neuer Versionen der Anwendung und Konfigurationsänderungen.
Wenn Sie bedenken, dass jede Änderung eine Veränderung des Serverstatus ist, wird der Begriff immutable
sinnvoller. Dies bedeutet, dass auf einem solchen Server keine Mutationen zulässig sind.
Es ist häufig der Fall, wenn Personen an der Änderung des Serverstatus beteiligt sind - sei es die Bereitstellung einer Version oder eine Konfigurationsänderung oder ein Sicherheitspfad. Das Ergebnis ist ein Server, der nicht mehr wie erwartet funktioniert. Beispielsweise wird die Anwendung jetzt möglicherweise aufgrund einer Fehlkonfiguration usw. nicht ausgeführt.
Aus diesem Grund wird eine Vorgehensweise zum Erstellen unveränderlicher Server festgelegt. Bei unveränderlichen Servern wird ein Image eines Servers mit allen darin enthaltenen Konfigurationen, Patches und Anwendungsversionen erstellt. Dieses Server- Image kann dann zum Erstellen von Servern in verschiedenen Umgebungen verwendet werden.
Die erste Umgebung, in der ein solches Bild verwendet wird, ist eine Umgebung, in der das Bild getestet werden kann, um zu funktionieren. Etwaige Abweichungen werden erkannt, und nur dann ein solches Bild kann gefördert in einer Produktionsumgebung , um die Server zu ersetzen es mit der neuen Version (die Arbeit gut bekannt ist).
Sobald der Prozess des Erstellens der Images und des Promovierens der Images automatisiert ist, erhalten Sie einen sehr störungssicheren Prozess, bei dem nur sehr wenig menschlicher Aufwand anfällt und die Wahrscheinlichkeit sehr gering ist, dass ein Fehler in Ihren Service einfließt.
Häufig bieten unveränderliche Server nicht einmal die Möglichkeit, sie "einzugeben", beispielsweise fehlt der SSH-Server. In diesem Fall wird häufig auch die gesamte Metrologie eines Servers (Metriken, Protokolle) an Systeme außerhalb der Metrikdatenbank oder des Protokollaggregationsdienstes gesendet.
Bei Containern (siehe: Docker ) gibt es auch einen Prozess, um Bilder zu erstellen und diese dann in laufende Container zu spawnen. Diese werden häufig durch neue Container ersetzt, die auf aktualisierten Bildern basieren, und werden niemals mutiert. Das bedeutet, dass kein Mensch in den Container eintritt, um durch die Einführung einer Änderung "etwas zu reparieren".