Starting heavily from the end of 2018 to now, new applications and platforms have been integrating AI-driven toolsets. When you learn about new tools in the SRE and DevOps realm, you may be hearing a lot about:
- Predictable outcomes
- System improved functionality
- Automated resolutions in monitoring tools
- Automated code testing
In a way, a lot of that is AI and ML driven. Vendors want to find a way to take software development and automation to the next level, and many believe that AI is the way.
In this blog post, you'll learn about what AI and ML are used for in DevOps and a couple of areas to keep a close eye on.
Before understanding why AI and ML are important for DevOps, you must first understand what they are.
Artificial Intelligence (AI) is a piece of tech that allows a machine to simulate human behavior. A lot of people's minds go straight to robots and Skynet, but it's a bit more in-depth than that. The idea behind AI is to simulate what a human can do, which spans a lot of areas. Anything from self-driving cars to automatically scanning a bag at an airport. It's the ability for a computer program to think and learn, much like our brains.
Machine Learning (ML) is a subset of AI (think parent/child relationship). It allows one machine or many machines to learn from past experiences (data). ML can then take the past experiences (the data) and perform an action without anyone telling it what to do (without someone writing a program to perform an action). The machines can learn how to do a "thing" without anyone needing to write a program to do the "thing".
Now that you know what AI and ML are, let's think about a few examples of how this could help us.
Imagine never having to wake up at 2:00 AM again for an on-call issue (do I have your attention now?). Instead, the monitoring platform (the AI-driven engine) can connect to the system (Docker, Kubernetes, serverless, a virtual machine.. wherever your code is running) and automatically fix the issue for you. The system can then learn from the monitoring platform (the system is now using ML) so it can automatically fix the issue next time without triggering an alert.
Engineers can now focus on big picture stuff (architecture, planning, building) instead of having to worry about a system or a piece of software crashing.
How about another example?
Unit tests - let's be honest, none of us like writing tests. No one wakes up in the morning and says "oh boy, I get to write tests today". However, it is something that we know we need to do. It's even more important than the actual application code itself (Test-Driven Development for the win). Imagine if instead of having to write a test yourself, AI can handle it for you? It would be amazing if a platform could look at functions and logic in code and create production-level tests automatically. You could then take those tests and put them in your build pipelines to ensure code is performing as expected before it's even built.
There are several different ways that AI-Driven automation can help CICD pipelines, orchestrating containers, and much more.
In this section, I'll list a few platforms and tools to keep an eye on in the AI/ML-driven space for DevOps, software development, and SRE.
- GitHub Co-Pilot - Copilot is a way to get suggestions for the code you're writing or even finish a complete function for you. This is AI for writing software. The code base is trained to understand and expect what you'll want to write.
- Test.ai - Instead of using a testing frame like Selenium for example, you can use Test.ai to automatically scan and test your code.
- New Relics Applied Intelligence - Allows you to set up a system that finds issues (hopefully) before you do. The idea is to prevent potential problems from ever occurring.
- Datadogs ML Based Monitoring - Provides you with anomaly detection so you don't have to spend hours finding the root-cause of an issue.
Here's a question that I'm sure is on everyone's mind.
Will AI and ML take over Site Reliability Engineering, DevOps, and software development? The answer when it comes to the monitoring and testing, yes. Since 2019, almost all popular monitoring and alerting tools have implemented some sort of AI. It typically comes in the form of predictable outcomes for an environment or automate what you can do with the data.
Most applications in today's world for a lot of organizations are in constant flux. New features added to an app and being deployed one, two, or even ten times per day. Hybrid cloud and multi-cloud models which means the data is constantly moving. That means there's a lot of engineering time involved with each and every environment. Without predictable outcomes and AI-driven monitoring, there will need to be engineers sitting there starring at a screen waiting for the next on-call issue to happen so they can automate it. We're at a critical point in the DevOps and development space today because everything is moving so fast. Because of that, we need automation for our automation.
Machine Learning will allow engineers to cover more ground.
When it comes to software and application testing, it's a no brainer that AI should be involved. At the end of the day, a software engineers job isn't to write code for 10 hours per day. It's to architect, build, and create applications. Typically, only a quarter of the day actually goes into writing code. With AI-Driven software and code testing, developers can spend less time saying oh, I missed a semi-colon on line 250 and say more of the system is handling the bug fixes so I can handle the architecture.
AI won't take away jobs, it'll just change the way we do them.