Learn why implementing DevOps best practices is essential for successful project delivery
What is DevOps?
DevOps is an essential part of any software development process. For those who haven’t yet come to appreciate the necessity of these improvements, a definition has been coined by computer science researchers at the Software Engineering Institute. They define DevOps as:
“A set of practises intended to reduce the time between committing a change to a system and the change being placed into normal production while ensuring high quality.”
What are DevOps best practices?
Emphasis here should be on high quality. There is no benefit to rushing out a release, only to be swamped by bug fixes later. DevOps best practices concentrates on four areas:
1. Continuous integration
Continuous integration, and therefore automated builds and deployments allow digital partners like us to monitor and test changes as they are committed to a codebase. This allows us to quickly identify problems and prevent them making their way to production. It also means we can prevent work grinding to a halt if problems do arise.
2. Branching strategy
A robust branching strategy is essential to allow development teams to quickly integrate separate features and bugs into a release. It should mean that a branch exists that is a definite representation of the current production code.
3. Unit testing
Unit testing allows us to automatically catch problems that may otherwise be missed. With the complex nature of code, it is easy for a change to have unseen consequences that may be overlooked on QA testing so end up in production.
4. Automation of other processes e.g. backups
DevOps best practices considers any part of the overall process that can be sped up. There’s a long list of questions that an organisation’s technical team should be considering:
- Are support and project enhancements getting in the way of each other?
- Are separate QA environments needed for them?
- Is continuous integration being used?
- Are website builds being tested?
- Where are the bottlenecks?
- Could parts of environment be automated and setup with scripts?
- Are there separate systems for project management and bug tracking? Can these be merged into one or can the two be synchronised?
- How will the Sitecore deployment be approached?
- Does your organisation have a system, like Azure DevOps that will carry out backup tasks before deploying?
- Does the branching strategy enable the technical support team to select separate features and bug fixes for a release?
The problem with not adopting DevOps best practices
Not following DevOps best practices comes with unnecessary headaches that waste time and budget. For example, organisations that are still manually copying zip files to servers and manually copying to the site folder to deploy a live release will rapidly fall behind the digital curve (if they haven’t already). Neglecting to implement source control or relying on archaic communication processes is simply poor practice that will inevitably snowball into chaos.
At SUGCON Europe this year, keynote speaker, Donovan Brown, Microsoft’s Senior DevOps Program Manager gave a talk on DevOps and the Azure DevOps software. As a support developer at Kagool, working on around twenty different Sitecore sites, I understand the time penalties attributed to bad operations and process. He began with a brilliant analogy of a motor race pit stop, showing a clip from yesteryear of a team taking three minutes to change two tyres and refuel a racing car. The next clip showed a modern-day Formula 1 pit stop where the team changed all four tyres and did not need to refuel in six seconds.
The argument for DevOps best practices was that there was no argument saying that, “The debate on whether to do DevOps or not is over.” and in regard to a business’ competitors, “You either implement DevOps or you lose.” He stated the need to be continuously monitoring your software and DevOps pipelines for improvements. These small improvements will have a big impact on your overall process. DevOps best practices provides continuous value to end users without needing to change the software you’re producing to add that value.