What is DevOps?
DevOps, easily one of the most popular tech terms from the last few years is an amalgamation of ‘development’ and ‘operations’ It represents a fundamental way of working within the technology industry that aims to produce and support applications throughout there life-cycle in an ever more efficient and automated way. Some of the core concepts of DevOps aim to bring together the development, testing, quality assurance, and operations teams into a cycle of development that’s bolstered by ‘DevOps tools’ designed to make the process easily manageable. When you think of DevOps think of the infinity symbol and you’ll get a good idea of the underlying principle here, an applications life-span can be an indeterminate length of time and as these applications grow and develop they require all of the aforementioned teams participation in ensuring each release goes smoothly. As the business reliance on the applications increase, so does the need for a speedy release turn around with fewer bugs and more resilience.
- Improved deployment frequency.
- Shortened lead time between fixes.
- Faster Mean time to recovery.
- Faster time to market.
- Lower failure rate of new releases.
DevOps looks to automate a lot of the processes that businesses often do manually. Testing, integration and release all form part of an automated approach to the application life-cycle. The actual stages of this look a little like this:
Where’s the automation?
well let’s look into that shall we. Here is a short list of some of the most well known forms of automation that sit within the DevOps cycle:
- Automated builds
- Automated testing (Unit Tests)
- Automated deployment
These three things form the bedrock of DevOps automation. When a developer checks out code to perform updates or bug fixes and checks back in their remediation automation kicks in. Of course the builds can be automated at this point so if you’re using something like Azure DevOps (formerly Visual Studio Team Services, or VSTS), then the build system starts compiling the solution including your freshly checked in code. After this automated testing is fired off, applying a serious of pre-determined unit tests against the solution to look out for common problems, expected results and a whole number of different validations that might apply to the solution as a whole. If this is successful then the system can be set up to deploy this code to the development environment, ready for manual testing, and then to the pre-production environment (UAT) to ensure that no problems arise from the environment. At each stage these services can fire out emails, notifications or prompts to inform the relevant team members of the progress, or required actions against the check-in or the solution as a whole.
There are of course plenty of different varieties of these three types of automation, as well as more complex and wondrous ways of making the cycle more efficient. However a business must bear in mind that you need to carefully access based on it’s merits whether automating certain aspects of your DevOps process are really giving you any benefit, if the answer is no, then that particular stage should not be automated.
That’s interesting and all, but where does AI fit into this?
Well that’s the real question isn’t it. Artificial intelligence, or it’s subset machine learning have been used in a lot of different sectors within the technology industry to showcase a wide variety of interesting and unique abilities. If you’ve not realized it quite yet one of the biggest benefits of the DevOps process is the continuous feedback of information that the whole cycle provides back to your team. But like with any data-set it’s only as good as the questions that you ask of it.
- Anomaly Detection
- Pattern Detection
This information can be used to help streamline workflows, help monitor production, pick out common times of the day that systems are being overworked etc. With the adoption of machine learning, we can start to look at trends rather than failures when accessing the success of a project. We could use AI to investigate our running defects per 1000 lines of code metrics, what iterations suffered from more bugs and what was different about the work committed at that stage to the others. Using artificial intelligence to help you predict problematic areas within your development and operational processes can help you add levels of resilience to your DevOps process that you wouldn’t otherwise be able to attain.
One of the development paradigms that fits so well with DevOps is the agile methodology. This is designed to evolve over time as per the needs of the project. Your DevOps process should be no different, so using all the technology that’s available to you to do this is paramount to success. Integrating AI into your DevOps process an let you detect critical events in real time.
So what does that all mean?
Right now AI in DevOps is an emerging market, and it’s absolutely worth tracking the progress of companies that are trying to provide new tools to integrate AI and machine learning into the DevOps process. Moving projects into DevOps gives you the ability to get to market quicker, cut down on manual testing times, identify issues quicker and allow for expedient remediation. All of this generates a large amount of data, so layering machine learning over the top to help detect these issues quicker and with more accuracy simply and plainly makes your DevOps process more robust. It’s an exciting time to be part of the DevOps movement, make sure you don’t lag behind, innovation is ahead of us all.