The idea of automating company operations is becoming increasingly favoured as a way of speeding up tasks, getting them done round the clock, and the six Cs of DevOps are no exception.
The six Cs of DevOps principles are:
- Continuous business planning
- Collaborative development
- Continuous testing
- Continuous release and deployment
- Continuous monitoring
- Collaborative customer feedback and optimisation
“The six Cs are just a way of explaining to a business audience what a software engineer does naturally as part of his or her innate problem-solving process,” said Ashley Coker, CEO of Slate.
“This involves taking a deep dive into the problem that needs to be solved and working to continuously deliver and iterate solutions.”
But how can companies go about automating these processes?
Start with release and deployment
One important aspect of DevOps to consider is release and deployment of software. Not only do companies need to make new software available, but they must make sure that this is deployed effectively, and automating both processes can help with this.
“You should start with release and deployment not only because it underpins many of the other capabilities, but because it has the most dramatic impact upon your ability to resolve issues in production and overall agility,” said Nigel Kersten, field CTO at Puppet.
“Patching security vulnerabilities, shipping new features, implementing disaster recovery and the provisioning of test environments are all sped up by automated release and deployment processes, and this ability to respond quickly is invaluable for all sorts of situations.
DevSecOps process — why security needs to be at the heart of DevOps
Continuously test release and deployment
“You should also start working on continuous testing as you implement release and deployment automation,” Kersten continued. “I see a lot of organisations struggle with continuous testing because they get hung up on creating a significant amount of test coverage before they actually implement it, and this is the wrong approach.
“The best approach is to create a “walking skeleton” testing process. Start by building a CI pipeline that simply takes a commit and deploys it into an environment without any additional tests or gates. From there you can add tests — lint, unit, acceptance, integration, monitoring — when it makes sense for your teams.”
Jon Hammant, head of DevOps & full stack engineering at Accenture UKI, added: “When it comes to release and development, flow should be automated all the way down to production, with deployment to a subset of users – known as canary deployment – and analysing automated metrics, a recommended way to test the success of a project.
“From there, A/B deployment should be practised, and once code is refined, it can be rolled out at scale.”
Accuracy is the key to trust
“The way to apply automation is to enable self-service on-demand without human intervention,” said Erik Costlow, developer relations, Contrast Security.
“Accuracy is the key to trust, so for automated analysis tools, it’s critical to have a good true positive rate and low false positive rate. Things should only be automated if they can be accurate. Otherwise, things that cannot be automated should reduce the number of choices for human involvement.”
Automate testing across multiple stages
Hammant went on to state that not only release and deployment testing, but testing across all DevOps processes, should be automated.
Life or death testing: when testing gets critical
“Everything that’s developed should be testable,” he explained, “as without a test case, something becomes immeasurable. Testing should also be automated amongst multiple stages, including check-in, unit, integration and acceptance.
“From A/B deployment roll-out, automated feedback metrics should streamline continuous monitoring. If issues are detected, self-healing processes should also be automated and flagged to teams via Slack integrations and ChatOps.
“This approach enables software engineers to focus on developing new features, rather than fixing issues at hand.”
Identify and eradicate potential barriers
As with any new venture within a company, automating DevOps will only pay off if any possible barriers are addressed and eradicated.
“Automation only makes DevOps more efficient if the existing business processes and development cycle have been thoroughly analysed to root out any issues, otherwise you’ll simply end up automating bad or redundant processes,” said Slate CEO Coker.
“Before automating DevOps, we go through a diagnosis and prognosis stage to identify any cultural or legacy challenges that are inhibiting agility.
“We get corporate DevOps onto the right track by bringing in small, capped teams of highly skilled software engineers who work with enterprise teams to explore challenges, inject fresh thinking, upskill in-house teams and accelerate their digital change so that they can continuously deliver solutions to the business.”
Monitor the performance of your applications
Finally, when it comes to automating the six Cs of DevOps, companies should be aware of how their applications are performing by watching them closely.
Tori Wieldt, senior solutions manager at New Relic, said: “Whether continuous or not, you should start with “what is the normal performance for our applications?” Surprisingly, not many companies can answer this, but can by easily monitoring the behaviour of their apps and infrastructure.
“Once that practice is set up, teams can begin to automate the process. Rolling instrumentation into standard build process makes visibility the default, instead of being viewed as yet another burden on developers.
Don’t miss the big Brexit automation opportunity to improve digital skills
“Modern build tools like Gradle can do almost anything; you can take advantage of that power to instrument your code quickly and efficiently.”
Paul Dix, CTO of InfluxData, added: “In order to be confident in your continuous delivery system, you need to have everything highly instrumented and you need to have continuous monitoring in place. To automate almost anything, you need to have tools in place to observe what is happening and then be able to act on it.
“Observability is a necessary prerequisite to making anything automatable and continuous.”
[emailsignup]