Yesterday I had a chat with the folks at Codeship, a continuous integration and continuous deployment platform. The topic of immutable infrastructure came up and was intriguing to me, so I thought I would write about it. So what is immutable infrastructure? The concept of immutable infrastructure is to never change your existing production servers. Instead, build new automated servers and destroy the old. This concept falls in line with the “fail forward” belief system of many modern-day DevOps evangelists who believe that tweaking servers or rolling back code from servers in highly distributed systems is too risky and causes more problems than it is worth.
This concept is not really new. Google has pioneered the concept for years with the use of disposable COTS hardware that they use for their search engine. Google found that is was more cost effective and manageable to deploy cheap compute nodes and simply throw out failed nodes and replace them with new nodes when troubles arose. Fast forward to the days of cloud computing, where the infrastructure is virtual not physical, can be represented with code, and can be highly automated. We can now take this concept to the next level.
What are the advantages of immutable infrastructure?
- Easier to manage infrastructure
- Lowers risk of changes in production
- Easy to create dev, test, and staging environments that exactly match production
- Easy to recreate older version of infrastructure
- Easy to isolate new infrastructure for testing
- React faster to issues in production
- Spend less time configuring and researching environment issues
- Speed to market
Of course, to adopt the concept of immutable infrastructure, one should have a completely automated build and deployment process. I have written many times about the advantages of continuous integration, continuous delivery, and continuous deployments. Codeship is making those processes much easier for companies to implement by offering their continuous integration and deployment platform as a SaaS solution. Just as cloud management platforms (CMP) like RightScale, Enstratius, ServiceMesh, and others have become attractive for managing multicloud environments, deployment platforms like Codeship are emerging to centralize the build and deployment processes across multiple technology stacks and cloud platforms. One of the challenges for enterprises these days is that in a multicloud environment it becomes cumbersome to consistently manage and operate many different cloud platforms. Tools like Codeship can simplify, standardize, and accelerate these processes.
The team at Codeship is always looking at improving the build and deployment process. They recently started working with Docker and Packer to make creating environments even easier. Check out this post where they discuss building Vagrant Machines with Packer. Clearly, the automation of infrastructure is becoming extremely important in today’s complex and highly distributed cloud implementations. There is not a surplus of people with the experience in this space, which is why platforms like Codeship are becoming increasingly important. In Q1 of 2014, Codeship will be adding OpenStack support to their portfolio, making their offering even more attractive to companies with hybrid cloud implementations. I’ll be keeping a close eye on this space, so look for many more posts about continuous deployments, immutable infrastructure, and the tools and platforms that make implementation easier.