Sunday, April 12, 2015

What is DevOps

Image Courtesy- http://www.freedigitalphotos.net
DevOps is a software development method that encourages strong communication between the software developers and operations/ IT professionals.The adoption of DevOps is driven by factors such as
  • Use of Agile and related development methods and growing demand of faster and frequent releases from customers.
  • Growing differences between development and operations community where both see the roles differently. Each role strongly believes that they are doing the right thing for the business and both of them are correct in isolation.
  • The organization structure and the reporting of both the roles are different in most of the cases due to which there are differences in focus.
  • Difference in  mindset of the development  and operations teams.
  • Greater availability of virtualized and cloud infrastructure.
  • Greater focus on automation.

Some Organizations divide the development and operations into different department. Development team is driven by satisfying the end user needs and operations is focused towards availability, scalability and ensure cost effectiveness. While both of them are equally important from an organization standpoint, both the communities are not able to understand the big picture of this. Developers sometimes does not involve the operations in the architecture and design related decisions. Developers often do the configuration management and the environmental changes locally in their system and do not document each of the steps. These steps are evolved after lot of permutations and combinations. It is often very difficult to replicate the same steps in the target environment as there are differences between the environment of developer machine and target run time environment. Another anti pattern seen is that development focuses on delivering functional requirement faster, whereas, operations focuses ensuring stability. This in turn slows down the release of the new feature.

The need of moment is to have greater collaboration between the two teams , giving the development team more infrastructure related understanding and the operations team more application centric knowledge. Also build a team with a shared vision and appreciation for both the roles keeping the big picture of success in mind.

No comments: