Saturday 22 March 2014

Infrastructure as code. What!!! ? Why ???

I logged into my facebook account today and see a different look and feel. Honestly I was quite happy the way it was earlier , I hope facebook roles back. But as a Software Developer myself what amazes me is the ease with which facebook is able to roll such updates regularly and takes several decision based on sentimental analyses of how the new features are perceived.

I thought of digging in more and understand how do they do this.?

Just imagine a seasoned operations engineer who does regular tasks of provisioning and managing the plethora of environments.The tasks could be know all the admin consoles . The engineer now exactly when the next application release is due and also know when to expect the next update to the OS. The engineer is the master of his domain. Is that good enough in today's environment. With systems becoming virtualized and as developers have started practising Continuous Integration (CI), things have started to change. The number of environment and their instances you have to deal with has gone up by several orders of magnitudes. Developers now don’t release updates and new versions every few months; they are pumping out CI builds daily. In fact, multiple builds a day. All of them need to be tested and validated. That requires new environment instances to be spun up, fast. These builds also often come with configuration changes. Logging into consoles to make each one of these changes individually is no longer a viable option. Furthermore, the need for speed is critical.

So then how to deal with this situation ?

By modelling IT infrastructure and application delivery as code. When soft wares work reliably on code why not deployment and delivery.A code can Can Accelerate Time to Market, Code Can Encourage Innovation since the time being consumed in repetitive tasks can be taken care by the code.Code Can Scale.Code is Consistent.

Code provides a way to describe and automate infrastructure and processes. Infrastructure becomes testable, versioned and repeatable. It becomes part of Agile process.

By automating your application deployment and delivery vehicle, it becomes easy  to quickly roll out changes ..
FaceBook is great example of successfully implementing infrastructure as code .

Coming posts we will try to do this .


3 comments: