Managing Change with Immutable Servers

| by Aslan Brooke Follow 0 Followers on Aug 14, 2013. Estimated reading time: 1 minute |

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

Adoption Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Typo in article by Roger Wilco

Harshicorp recently released […]

It's HashiCorp.

CalvinDB approach may just be the ticket by Arturo Hernandez

If you want a truly immutable architecture you also need immutable databases. There are some interesting examples out there. But to me the most interesting is CalvinDB. In my mind, this is a case where immutability meets scale and performance. I'm not sure this will be the exact successful technology, but it proves that immutable persistent structures can scale.

Re: Typo in article by Aslan Brooke

Thanks for noticing the company name, I've corrected it. -Aslan

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

3 Discuss

Login to InfoQ to interact with what matters most to you.

Recover your password...


Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.


More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.


Stay up-to-date

Set up your notifications and don't miss out on content that matters to you