I recently participated in an Agile & DevOps conference in UK, in which I delivered a brief presentation on “AI-powered DevOps”, this piece is a slightly modified version of that talk.
DevOps is a business-driven approach
Contrary to the perception that DevOps is a technology-driven approach, I strongly believe that it is primarily a business-driven paradigm. The essence of DevOps is a seamless collaboration between all stakeholders in the software supply chain to ensure continuous delivery of customer value. In practice, this is possible only with a high-degree of automation across all phases of software development and delivery.
Dev vs Ops: Agility vs Stability
In a typical organization Dev and Ops work towards different goals. Focus of development is on agility, and always aspires to build new features and go-to-market with new functionality, at the fastest pace possible.
On the other hand, focus of operations is on stability and quality of software that is shipped to the customer. The Ops side of the organization is usually worried whether the new functionality is going to add business value or increase the maintenance load. Therefore, it is not at all a surprise that in most cases, Dev and Ops are organizational and functional silos.
The challenge is to figure out a way to break down these silos, and integrate Dev and Ops. Even though there is no one-size-fits-all approach, from a practitioner’s perspective, I recommend a shift-left strategy. In a nutshell, this approach calls for bringing the Ops into the picture at a very early stage and not waiting until the Dev is complete. With this strategy, as the software moves right in the Dev pipeline in terms of process, the Ops people move left to become more involved with the Dev team. This strategy calls for:
- Functional reorganization to integrate Dev and Ops, i.e. the same functional team should consist of people from across the software delivery pipeline without artificial silos
- Culture change should lead to organizational focus on delivering continuous business value, with high quality software at speed
Embrace agile and extend it to Ops
With the advent of agile, barriers between business, development, and QA are broken, yielding tangible benefits, such as:
- iterative releases
- early and frequent deployment
- continuous testing & integration
- improved quality
- ability to respond fast to changing needs
But most importantly, embracing agile also ushered in a profound cultural change in software organizations. For the first time, there are no artificial silos between business, dev, and QA and they all started working together with a common purpose to build software that customers really wanted and needed. In other words, the entire Dev organization is geared to delivering business value.
But agile stopped at Dev, and didn’t extend to delivery, deployment, and support. As a result, until recently, Ops remained as an isolated and separate silo. DevOps is all about breaking this last barrier and extending agile to the Ops side of the software organization.
It is no longer feasible to keep separate people who develop the software (Dev) and people who deploy and maintain the software (Ops) that is produced. Need of the hour is to make sure that they work together, and the challenge is in making sure that it is done in the right manner with the right tools.
Automate everything and break the last barrier
If the end goal is to produce software that delivers business value to customers with consistent quality, it is essential that everyone across the organization should speak the same language. The best way to achieve this is by using a common set of tools and processes that everyone understands. This is where automation becomes indispensable.
Even in organizations with mature agile development processes, very often the last step, i.e. the delivery and deployment is still done manually, which limits the effectiveness of continuous delivery.
“The best way to break this last barrier is to extend automation all the way from development to delivery and deployment”
For continuous deployment to work, it is absolutely essential that the last step between delivery and deployment should be automated, as shown in the above illustration. Automation achieves two important goals for continuous software delivery, namely reliability, and repeatability. By removing manual intervention and using automated tooling, you now have an end-to-end, reliable and repeatable process that can be leveraged for quick changes, frequent releases, and continuous deployment and delivery.
Use bots to automate CI/CD pipeline
Over the past few years, the evolution of sophisticated technologies such as AI and ML had a significant impact on core software engineering practices, ranging from rapid prototyping to intelligent programming assistants. But, the biggest impact is in using AI/ML to automate software testing, defect identification, and integration. This is where the first generation of bots are being introduced as part of the CI/CD pipeline. High-performing software organizations are increasingly deploying bots in combination with their collaboration tools (ex: Hubot and Slack) to automate some of the routine tasks as part of the CI/CD workflow, such as:
- capturing information on build failure/success and generating automated alerts to all stakeholders
- classification and root cause analysis of build data
- predictive analytics to flag potential areas of concern for future builds
- allocation of bug fixes and issues to relevant persons, based on build/commit data
- code freeze and unfreeze
I believe that we are on the cusp of a major disruption in how software is conceptualized, developed, tested, delivered, deployed, and supported. Automation and cognitive technologies will play an increasing role in reducing the scope of manual effort and enhance the reliability and repeatability of end-to-end processes in the software supply chain. It is an excellent opportunity for software businesses to leverage these emerging technologies, achieve true continuous delivery capabilities, and transform into high-performers.