Friday, August 8, 2014

What is DevOps

The new term doing round now a days is DevOps. Simply mean Development Operations. The notion of DevOps is all about alignment of Development and operations. and is quite relevant in many modern day web based applications where multiple deployments in a day are norms and not exceptions. The three important aspects that DevOps emphasizes on are:
  • Communication
  • Collaboration
  • Integration
Nothing new in those terms. Pick any book or article on Project management and you will find traces
of these things. In fact take any facet of life and you will find these three attributes to be present as an important element for success. If the terms are so common then why to put a wrapper term around it. Let's look into the history of software development methodology to understand it better.

In good old days, when software started becoming big and large scale software development started to happen with tons of people involved in it, the industry needed a process to put its arm around the notion of Software Development. The looked around and found the traditional way of project management in various other industries. People design and then develop and then test and then hand it over to sales to sell in a pretty much linear fashion. That methodology has worked pretty well in many industries like construction for ages. However there was an element in those industries which was completely missing in the Software industry. It's the ability to visualise. For example in construction industry with models and architectural diagram, in every stakeholder's head the model of how the home is going to look like will be more or less same. However in software industry in spite of all the documentation, everyone carries a different model of how the end product is going to look like. And that's where the contention started especially between Product Managers/Sales/Marketing  and Development teams.

Entered Agile and it tried to fix the issue by bringing the stakeholders together. You can take the above three terms of Communication, Collaboration and Integration between Development team and Product stakeholders and in a sense you get Agile. Agile broke the linearity of waterfall between Requirements and Developments. The piece that was missing in the puzzle is the operations part where the software is deployed and maintained. In earlier days, the ball game was different. Softwares used to develop in multi month cycle and then shipped as hard media's like CD/DVD. With the advent of web based applications we have come down to multi deployment cycle in a day at times. 

With this changed scenario it required more communication, collaboration and integration between Development and Deployment teams and that's where the concept of DevOps appears. The notion of devops is about building a framework which is highly automated in terms of processes and can handle multiple iterations. It puts a lot of emphasis on development and infrastructure teams working closely so that raised issues do not bury under finger pointing but are suitably dealt in a comprehensive way. The emphasis is on fixing the process and the execution framework.

The concept DevOps at the moment does not gives an execution frameworks like Agile but it helps in appreciating the need for closer cooperation between development and operations team. Identifying that notion itself is a big win for an organization as then people can start working to achieve the goals of better quality in a more shared way.

No comments:

Post a Comment