Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Managing Change with Immutable Servers

Managing Change with Immutable Servers

This item in japanese

Immutable servers make infrastructure scalable and reliable in spite of change, however this can require fundamentally new views of systems, patterns, deployments, application code, and team structure as Chad Fowler, CTO of,  writes in his recent blog post "Trash Your Servers and Burn Your Code: Immutable Infrastructure and Disposable Components".

Servers accumulate change for better or worse over time, including: new applications, upgrades, configuration changes,  scheduled tasks, and in the moment fixes for issues.  One thing is certain, the longer a server has been provisioned and running the more likely it is in an unknown state. Immutable Servers solve the problem of being certain about server state by creating them anew for each change described previously.

Chad appeared online in the bi-weekly podcast "food fight show" as a follow-up to discuss immutable servers.  In the show he picks up where his blog post leaves off by digging into the details of his immutable server solution.  During the show he built the analogy of treating his servers like living cells, which similarly die and are replenished with new cells in natural growth processes.

Kief Moris, software delivery consultant at ThoughtWorks, recently wrote a blog post explaining immutable servers in which he states:

Automated configuration tools (such as CFEngine, Puppet, or Chef) allow you to specify how servers should be configured, and bring new and existing machines into compliance. This helps to avoid the problem of fragile SnowflakeServers. Such tools can create PhoenixServers that can be torn down and rebuilt at will. An Immutable Server is the logical conclusion of this approach, a server that once deployed, is never modified, merely replaced with a new updated instance.

Hashicorp recently released a utility for creating machine images usable as immutable servers named "Packer". The same company also develops the "Vagrant" utility used in DevOps for automating usage of virtual machines

The DevOps community in Los Angeles recently discussed packaging machine images as part of deployment by using "Packer" and "Docker" in their July LA DevOps meetup. Mike Fielder, Director of technical Operations, also gave a talk covering similar material at chef conf 2013 called "Treating Your Infrastructure Like Garbage".

Rate this Article