To get a better understanding of DevOps, it’s important to go back in time to uncover how and why DevOps emerged. Around ten years ago, internet, cloud, big data and IoT became more widespread. With these advancements, many new challenges emerged. These challenges created a need for efficiency and a need to be responsive to rapidly changing business conditions. Any savvy digital entrepreneur wants to go to market fast, fail fast, gather feedback, and change the product to better suit customer needs. Therefore, it became very important to understand why development slows down and how to tackle this issue. It quickly became clear that many issues were created because of a lack of collaboration between different development teams.

The Culture of blaming

The following scenario happens quite often: development completes their work and sends code to QA to be tested. After a week of testing, QA sends the code back to development with all bugs identified. This creates a lot of blaming, as development is sure that the code is good, and accuses QA of not testing it correctly. QA is certain that code is bad and their process is good. On top of this, when fixed code ends up in operations for the deployment, it turns out that the application is consuming too many resources, creating contention with a workload in a shared virtualised environment.

Fixing the mess

It quickly became clear that the mindset and the culture had to be changed. Better communication between different teams was encouraged, and by streamlining the movement of code through different stages reduced manual tasks and the potential for human errors. With this mindset, some IT organisations began to see significant approvements. Many of them claimed that their failure rate was reduced, and that failure recovery time was reduced. Features are now often deployed to production more often with significantly shorter lead times.

To conclude, DevOps is not a job title, a team, or some miracle tool. It's a culture or a philosophy that promotes efficiency, and through this, reinforces the production of high-quality software with little to no bugs in production. DevOps is about instituting cross-functional autonomous teams where developers, testing, security, and operation work together with the common goal of automating workflow, measuring success and continuously improving.

Important tenets for perfect DevOps

It is important to note that the most important principle of successful DevOps is a cultural shift. Without this, you will not be able to solve problems. If teams do not trust each other or collaborate well, they will not be efficient, and this process will not work. In addition, embrace failure, don't fear it. Failure can and will happen, and it's crucial to recognise its inherent value to the process.

Learning from failure leads to another very important principle: continuous improvement. In the DevOps culture, a great focus is placed on the need to adapt to continuously changing circumstances such as customer needs, legislation changes, and new technologies. It's important to improve continuously to optimise for speed, cost, and ease of delivery. Therefore, experimentation must be embedded to develop a means of continually learning from failures and enhancing.

Automation is another crucial element. In general, this is a technique or method of controlling or operating a process by automatic means, by reducing human interventions to a minimum. Not only should your pipeline be coded, your infrastructure should also be coded, source controlled, versioned and tested. This provides a greater level of predictability, consistency, and scalability.

Last but not least, measurement. Measurement is paramount to measuring success. If you do not know how your hard work compares with a previous sprint, it will not be possible to determine if your work has improved or declined. To do this, define what DevOps means to your organisation or your project and identify the challenges. If your project has a tight deadline, it's important to concentrate on speed and measure your deployment in frequency and time, as well as in lead time for deployment. It's also important to aim for high-grade quality and measure automated test pass percent and defect escape rate. Availability, mean time to detection (MTTD), and mean time to recovery (MTTR), are also important metrics to track your project.

DevOps is a very broad topic, but its goal is simply to be as efficient as possible and to improve with each iteration by any and all means necessary.