The term Immutable Infrastructure refers to (compute) infrastructure, that is never changed after it is setup. No updates, no fixes, no nothing. Instead of changes, new versions / iterations of the infrastructure replace the existing one.
This paradigm requires an underlying Programmable Infrastructure, which is then instrumented via Infrastructure as Code, OS Configuration Management - or other alike automation - that are stored in a Version Control System.
The benefits of this approach are multifold:
- Consistent State: As the system is in a defined state that is (usually) described in a specific version / revision in the VCS it does not suffer from Configuration Drift
- Reliable State: As the system is understood / known and can be fully tested in a different stage
- Recoverable State: As the system’s state can be re-created by re-deploy of the VCS revision
The antithesis of Immutable Infrastructure are Snowflake Systems.
Martin Fowler coined the term Phoenix Server for a computer system in an Immutable Infrastructure, as they can “rise again from their ashes after being burned” - can be re-created from scratch when shutdown & deleted.
- Martin Fowler: ImmutableServer
- O’Reilly Radar / Josh Stella: An introduction to immutable infrastructure
- Digital Ocean Community: What is immutable infrastructure?