Eine wichtige Entscheidung, die bei der Automatisierung der Infrastruktur mit Infrastructure as Code (IaC) und bei der Auswahl einer IaC-Lösung zu treffen ist, dreht sich um die Frage, ob eine veränderliche oder eine unveränderliche Infrastruktur eingerichtet werden soll.
Eine veränderliche Infrastruktur ist Infrastruktur, an der auch nach ihrer ursprünglichen Einrichtung noch Änderungen oder Aktualisierungen durchgeführt werden können. Eine veränderliche Infrastruktur gibt den Entwicklungsteams die Flexibilität, Ad-hoc-Anpassungen an Servern vorzunehmen, um beispielsweise den Entwicklungs- oder Anwendungsanforderungen besser gerecht zu werden oder auf ein aufkommendes Sicherheitsproblem zu reagieren. Sie untergräbt jedoch auch einen wichtigen Vorteil von IaC, nämlich die Fähigkeit, die Konsistenz zwischen Bereitstellungen oder innerhalb von Versionen aufrechtzuerhalten, und sie kann die Überwachung der Infrastrukturversionen erheblich erschweren.
Aus diesen Gründen wird die IaC meist als unveränderliche Infrastruktur implementiert, d. h. als Infrastruktur, an der nach der ursprünglichen Bereitstellung keine Änderungen mehr vorgenommen werden können. Wenn eine unveränderliche Infrastruktur geändert werden muss, muss sie durch eine neue Infrastruktur ersetzt werden. Da neue Infrastrukturen in der Cloud schnell eingerichtet werden können – insbesondere mit IaC –, ist eine unveränderliche Infrastruktur sehr viel machbarer und praktischer, als es sich anhört.
Unveränderliche Infrastruktur befördert IaC zur nächsten logischen Phase und schottet IaC-Systeme im Prinzip ab, um die Vorzüge, die IaC bietet, weiter zu wahren und zu festigen. Konfigurationsabweichungen werden nahezu ausgeschlossen und die Konsistenz zwischen Test- und Bereitstellungsumgebung kann noch einfacher aufrechterhalten werden. Außerdem ist es auch einfacher, Infrastrukturversionen zu pflegen und zu verfolgen und bei Bedarf sicher per Rollback auf eine beliebige Version zurückzugreifen.