Six DevOps principles for more efficient workflows
Build a positive, collaborative culture
Eliminating crunch and heroics isn’t just about cold, hard efficiency (although it will boost productivity). It’s also about creating a positive, sustainable work culture where teams can flourish and produce their best work. In a collaborative culture, employees feel more confident, ideas are shared more widely, and there’s a greater sense of togetherness and accountability – all of which have a positive impact on your product output and bottom line.
To build a collaborative environment, encourage openness, transparency, and feedback (both positive and negative), while emphasizing that there are no bad ideas. Put systems in place that allow cross-pollination of work across teams, and give public recognition to both individuals and teams for their successes. Having the right tools – like a version control system everyone can use – is also crucial.
“Shift left” with CI/CD
In DevOps, the “shift left” principle refers to reorganization of steps in a workflow. Processes that typically happen further down the development pipeline are “shifted left” to an earlier stage to align with DevOps lifecycle best practices.
CI/CD is one example of how shifting left can help teams work with greater agility. Continuous integration (CI) is the process of automatically merging work into a central repository. Changes are validated by creating a build and running automated tests against the build.
Continuous deployment (CD) picks up where CI leaves off, deploying releases from the build and performing automated system level testing. Traditionally, this process is done manually, slowing down the pipeline. Implementing CI/CD provides a consistent, automated way to build, package, and test your software.
Implement automated testing
Eliminating manual processes that waste time and are vulnerable to human error is a core principle of DevOps. Automated testing and error tracking tools save teams the tedious work of hunting down and squashing bugs while making these processes more efficient overall. In fact, the right set of error monitoring and reporting tools can actually help you turn the tables on bugs and use them to your advantage by making them into signposts that point toward optimized code and, ultimately, a better product.
Automated testing is another example of the “shift left” principle of DevOps. In a traditional workflow, a build is pushed live and tested manually. Workflows that incorporate automated testing can monitor for errors before code changes are released to the build – and also prior to production. When errors are flagged before they go live, programmers can troubleshoot in real-time and minimize service interruptions like patches and hotfixes.
Monitor and measure the right metrics
To quantify pipeline performance and find optimization opportunities, you must track several key performance indicators (KPIs). The big four DevOps KPIs are:
- Deployment frequency: How often code is deployed to staging, testing, or production
- Lead time for changes: Time taken for a commit to go into production
- Change failure rate: Percentage of deployments halting production
- Mean time to repair (MTTR): Mean time to recover from product or system failure
Other KPIs include:
- Time to deployment: Time taken to deploy code into staging, testing, or production
- Pull request cycle time: Time taken to write and deploy code
- Number of errors
- Mean time to detect (MTTD): Mean time to find errors
Focus on relevant, actionable KPIs. Tracking too many can cause information overload and data that lacks context, making optimization difficult.
Use Agile project management
Teams implementing DevOps principles can benefit from Agile practices – the two are complementary, with Agile values being core to effective DevOps collaboration.
DevOps focuses on iterative development across the entire production process – from pre-production to release – with updates pushed on a consistent basis up to several times a week. Agile focuses more on the production phase and follows a sprint model, with new builds being released at a more drawn-out cadence, every few weeks or even months.
DevOps practitioners can benefit from the Agile approach to project management. Agile practices like Kanban and Scrum ensure workflows are organized. There’s also a greater focus on process and meetings, with tools used primarily for productivity tracking, calculating burndown charts, and backlog organization.
Shorten feedback loops
In DevOps, a feedback loop is when an input is relayed to an output and back again and reviewed, with the goal of improving one or more processes or outcomes.
There are two types of feedback loops. In a reinforcing feedback loop, a positive update to one process benefits another related process, compounding the value of the original update; this is sometimes called “a loop of accelerating change.” With a balancing feedback loop, a positive update to one process results in a negative outcome for another, putting the value of the original update into question. In general, you want to maximize reinforcing feedback loops and minimize balancing feedback loops.
The shorter feedback loops are, the easier they are to maintain, monitor, and optimize.
Explore more resources to learn about version control systems and other DevOps tools and processes.