I recently hear about the keyword “Immutable Infrastructure” as a new way of managing IT infrastructure (operation side). Normally, the upgrade process to a new system requires to upgrade existing system, keeping the backups somewhere. There are some pains on maintaining existing system. For example, someone may have changed the system parameters without documentation. Even if there is a documentation, the change history of existing environment may be too huge to comprehend by maintenance people. When things go wrong, they have to roll back whole system using the backups. The “Immutable Infrastructure” way is different. As the name suggests, the state of infrastructure does not change. There will be no modification to the existing system. In stead, when there is a change, the new system is build and deployed. Here are some technologies or solution of this approach.
- Use Blue/Green Deployment strategy.
- Use Cloud to build new system (either IaaS or PaaS).
Blue/Green Deployment strategy
Martin Fowler discuss about this strategy on this blog page (BlueGreenDeployment).
In this strategy, new system is build from scratch. Then, router changes to new system. If somethings goes wrong, then router can switch back to original box.
The problem in this strategy might be a cost of having redundant systems or setup a new system. That’s where cloud solution comes.
Use Cloud to build new system using container technology.
It is not easy to set up new hardware every time when the system get upgraded. Mostly, IT people choose cloud system, either using IaaS or PaaS. I also frequently hear about the use of operating system level virtualization in this area. Sometimes it is called “container”. IBM introduced container technology called WPAR (Workload Partitions) on AIX. And recently, the Docker technology is becoming popular as a solution of container on Linux. Good news about it is that Docker will now be a part of OpenStack (http://blog.docker.io/2014/03/docker-will-be-in-openstack-icehouse/). So eventually, IT people can create very light weight application container using OpenStack Heat technology.
Cloud Foundry also has container technology called “Warden”. For example, if we push new application to Cloud Foundry base PaaS, it will create a new container and runs the application on it. It will never touch existing system. I think this documentation is a good example of explaining blue green deployment on Cloud Foundry base system PaaS.
I see these emerging technology will cross the chasm very soon, and will be early majority.