Immutable infrastructure can significantly reduce the amount of toil required to maintain a large fleet of production servers. It does this by reducing the number of variables in the system and making it easier to swap pieces out because all instances of a service are identical.
SRE has perhaps become overloaded, but at its core, the definition boils down to a few things: driving scalability, reliability, and performance for web operations at scale. A challenging, but incredibly powerful, piece of that is through immutable infrastructure.
Immutable infrastructure is the practice of starting each build of a software component with a small base image and then installing your software onto that image. For every release, this image is rebuilt before being released to production. After it is released, the image is never changed or updated. It is only replaced with a new image. The process is called “immutable” because the released software is frozen and never changed, only replaced. The running instances are never updated via a tool like Puppet, Chef, or even Secure Shell (SSH) after they are launched (they might still have SSH running for debugging purposes).
Immutable infrastructure delivers scalability and performance by allowing horizontal scaling of your infrastructure. One of the challenges of adding and removing nodes from a running cluster is making ...