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


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.

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

Community comments

  • Typo in article

    by Roger Wilco,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    Harshicorp recently released […]

    It's HashiCorp.

  • CalvinDB approach may just be the ticket

    by Arturo Hernandez,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    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,

    Your message is awaiting moderation. Thank you for participating in the discussion.

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

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

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