DevOps implementation above all means a cultural shift. Because DevOps is mostly about soft stuff. And its key components are:
Empathy and collaboration
Empathy, meaning the ability to think about things from another’s perspective, is believed by many to be the true DNA of DevOps. It allows Ops people to understand the importance of quick releases, while developers can better appreciate problems caused by bad code. Plus, both parties are putting users at the center of everything they are doing.
Empathy powers collaboration. Collaboration powers productivity, encouraging everyone to commit to software development quality and speed.
A DevOps implementation journey involves setting up small cross-functional groups who will work autonomously, taking mutual responsibility for continuous delivery.
Loosely coupled product-centered teams, consisting of developers, operations engineers, testers, and project managers, enable microservices style, reducing the number of handoffs along the value stream — from version control to production deployment. However, individually, developers are still responsible for a piece of code they’ve written. “You build it, you run it,” Amazon CTO Werner Vogels once famously said.
Scrum standup meetings and retrospectives, held as part of DevOps transformation, allow teams to understand what was done yesterday, what was successful, and what can be improved. In a knowledge-sharing environment, DevOps engineers learn new things and grow continuously, adjusting their competencies. At a bare minimum, everyone on the team should have on-demand access to source code, logs, tools, test servers, production builds, and postmortem reports.
DevOps transformation centers around hypothesis-driven development. Failing fast to learn faster through a tighter feedback loop is key to successful DevOps implementation.
DevOps teams write code in small batches and push it to production as quickly as possible. This way, they have an immediate chance to put the solution right by fixing defects swiftly or removing a certain feature altogether. As The DevOps Handbook co-author Jez Humble said, “Users don’t know what they want. Users know what they don’t want once you’ve built it for them.” So, the DevOps mindset is about starting with intuition and learning lessons as you move forward to arrive at data-driven decisions.
A successful DevOps strategy relies on a product-first approach that cares about the needs of real users. DevOps teams should understand what they build and understand the people for whom they build. Continuous feedback is crucial.
This often means that (i) Ops take part in developing service-level agreements with users to understand user requirements, (ii) developers heed to end-user requests with fast updates, leveraging a loosely coupled, service-oriented architecture that allows utmost flexibility, and (iii) testers set up user focus groups for a controlled UAT, interacting with users directly.
A very strong emphasis in any DevOps transformation roadmap should be put on automation that reduces human error and amplifies speed, cutting overhead costs. In a DevOps culture, automation is extended virtually to everything, from development and testing to infrastructure provisioning, configurations, network tasks, databases, deployment, and monitoring.
Netflix is known as a fantastic example for DevOps implementation, with its fully automated deployment processes allowing engineers to run code thousands of times per day.