Updated: Dec 14, 2020
For the audience uninitiated with DevOps, it brings development and operations together by using cross-functional teams. Wikipedia defines it as, “DevOps is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and software operations professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment where building, testing, and releasing software can happen rapidly, frequently, and more reliably.”
Why is DevOps so critical for organisations today? To answer this question I would like to quote Steve Jobs from his famous interview with Inc Magazine in 1998, “You can't just ask customers what they want and then try to give that to them. By the time you get it built, they'll want something new.” DevOps allows the organisations to optimize their SDLC to increase efficiency and address their customer’s ever changing expectations. Organisations’ willingness to embrace DevOps will directly impact their ability to compete by allowing them to rapidly deliver high quality solutions under constantly changing business conditions.
Agile and Devops
The agile development was supposed to address the issues created by changing customer expectations but it was not without its drawbacks. Though agile development focused on speed and agility, operations team focused on rigorous change control processes to maintain application stability so there were issues created by development and operations teams working in silos. Moreover agile covered only the first part of the application life cycle which is development. As DevOps is the practice of operations and development engineers participating together in the entire application life cycle from design to development to production support hence agile and DevOps combined together address the inefficiencies in the whole application life cycle.
In addition, the automation brought by DevOps solves certain challenges agile poses. For example, automated testing helps to complete the regression testing within the sprint. The amount of regression testing to be done increases multifold as you move to later sprints and it's simply not possible to complete the regressions testing within the sprint unless and until it's automated. Also continuous integration and automated deployment helps to test frequent changes on the fly. In a 4 week sprint you simply don't have time to manually test, integrate and deploy.
How do you do DevOps?
The DevOps practitioners Damon Edwards and John Willis who started the movement coined the acronym CAMS (Culture, Automation, Measurement and Sharing) which pretty much summarises the key implementation aspects of DevOps:-
The DevOps journey starts with establishing trust and respect between development and operations team. Development teams have to trust that the production performance information from operations can actually help in making the software better. Operations teams have to trust that new application design patterns will help them reduce the maintenance issues. Unless and until the communication channels are opened between development and operations and they start trusting each other no DevOps program can be successful.
Automation is probably the most visible aspect of DevOps and the productivity gain achieved by automation is the key reason for organisations to adopt DevOps. While I would not go into to the details of the tools here, there are wide range of tools available which can enable automation for continuous integration, deployment, infrastructure provisioning, testing, test data provisioning etc. Organisations operating at the highest level of DevOps maturity have typically all the lifecycle stages after build fully automated with one touch deployment.
Well if you want to improve something you must be able to measure it. You do need to decide the success metrics for DevOps and then measure it so that you can adjust the direction accordingly. Also the metrics designed to measure the success of DevOps should have direct correlation to business metrics on one hand and to the technical initiatives supporting DevOps on the other hand. For example to achieve a net promoter score of 9 IT needs to deliver software releases and new functionality faster. This can be supported by release automation.
When you start your DevOps journey there should be a shared view on what the current situation is. It could be the share view on goals of improvement or on the current practices or shortcomings. It’s very important for all the stakeholders to participate at this stage as shared input typically creates shared responsibility and ownership. It’s equally important to have a shared view on the benefits to be achieved. During the DevOps journey it’s important to share the tools, discoveries and lessons learned.
I hope my article helps you to start with your DevOps journey. Looking forward to your thoughts and comments.