You’d think that computers would have beaten the Turing test by now.
Developed in 1950, the Turing test is a series of questions designed so that a human can figure out whether or not they’re talking to a computer or another person. While computers have gotten better at beating the Turing test, they still haven’t quite mastered it.
Computers are processing power behemoths. They are the reigning, undisputed, international champions of competitive logic games like Go, chess, and Texas Hold ‘Em, and they are already better airplane pilots, doctors, and lip readers than their warm-blooded counterparts. If a computer can discover groundbreaking new science, why can’t they figure their way around human behaviors?
Or even pass a simple test like this?
Given the limitations of modern computers, expecting “intelligence” from them seems more like something you’d find in a dystopian novel than in the real world. Not only that, but there’s a lot of confusion about artificial intelligence, especially concerning what it’s capable of doing (or not doing), what it will be able to do in the future, and what it means for business now.
For software developers, especially those enmeshed with Agile and DevOps, the growth of AI is even more confounding—if you’re expected to automate everything, where should one’s trust in a computer end? How is artificial intelligence molding today's processes? And what should DevOps leaders anticipate when looking from today into the future?
For all things AI for DevOps and DevOps automation, I’ve got you covered. From a clear definition of what artificial intelligence is to current applications for AI in software development to suggested AI-enabled DevOps automation software stacks to theoretical AI future use cases, this article has everything you need.
Let’s begin with the basics.
What is artificial intelligence?
There’s little consensus on what artificial intelligence is—the term was coined the same year MIT researchers started to use keyboards to input information into computers (1956). At that time, “artificial intelligence” just meant “make machines use language, form abstractions and concepts, solve the type of problems now reserved for humans, and improve themselves.”
Essentially, “make machines do stuff humans can do.”
But artificial intelligence is more complicated than that, isn’t it? And shouldn’t the definition be a bit more narrow? As Gary Lea points out in Popular Science, “From a philosophical perspective, ‘intelligence’ is a vast minefield, especially if treated as including one or more of ‘consciousness,’ ‘thought,’ ‘free will’ and ‘mind.’” He adds that until the mid-2000s, “there was a tendency in the AI community to contrast artificial intelligence with human intelligence,” which meant that it was up to psychologists to determine the true meaning of “artificial intelligence.” All of Lea’s points lead up to a problematic ultimatum: we don’t yet have a way, and may never have a way to define artificial intelligence without pointing to humans as a grounding point.
Back in 2017, I wrote an article about project management and artificial intelligence that used the following definition: “Artificial intelligence is an umbrella term for technology that goes beyond routine calculations into deep levels of analysis that only humans could accomplish until now.”
“Until now” is particularly important; it establishes that what is artificially intelligent matters when it was created in time.
For example, until automated credit card fraud detection, that pattern-identifying service was only possible with a human at the helm. That kind of software is artificial intelligence. So is Spotify’s “Discover Weekly” playlist, Siri and Cortana, and your room-scanning Roomba.
These examples aren’t exactly the science fiction depictions of AI like Hal 9000, Skynet, Westworld, or the Iron Giant, and that’s important to note—the potential of AI in most people’s minds is still primarily relegated to fantasy alone, even as we work with artificial intelligence on a regular basis.
What are the business benefits of AI?
Artificial intelligence, sometimes codified as “machine learning” (I personally believe that the difference is predominantly semantic, but for those interested, there’s a good investigation of the two terms available on Medium), has the potential to help all businesses in the future.
Consider this: machines and algorithms have the benefit of cold, quick, calculated decision-making. Looking toward the future, AI can—and already does, to an extent—provide the following benefits beyond robotic rule adherence:
- AI can save businesses a ton of cash.
The most basic function of artificial intelligence is automation. Today’s knowledge workers need the time and space to use their big ‘ole human brains to solve human problems; automation, via artificial intelligence, roots out repetitive administrative work so that people can get back to the work that innovates and inspires. For example, one study found that the average white-collar employee spends just shy of four hours a day on work-specific email. If a program could reduce that time to just one hour a day, the cost savings on the median software developer’s salary would equate to $721.73 saved per week or $37,530 per software developer per year. Who would say no to that?
- AI can make software more natural to use.
If a program is adaptive to the end user’s needs, then, inevitably, the program would prioritize reducing sources of human error. That means simplifying interactions between AI and humans—and that job will no longer solely rely on people.
- AI can rip out existing business silos.
Eventually, AI will have the ability to detangle the knot of various applications weighing down modern businesses (just how many integrations does one really need with Slack?). Streamlining these business processes and communication systems can make these more concrete barriers disappear. That way, business leaders can focus on what’s more likely to be the cause of the issue: misaligned cultural values.
DevOps enthusiasts, this means automation, continuous integration, and emphasized communication. If you revel in developing and releasing software efficiently, you’ll love DevOps automation via artificial intelligence.
Let’s get to the good stuff.
DevOps automation is an ideal use case for artificial intelligence
Automation, AI, and DevOps: we tend to think about them synonymously, and there is a good interdependency between them.
DevOps is a business-driven approach to delivering software. AI makes up the technology that integrates into that system. AI has two intersection points: with the tools DevOps teams use and the people who run them.
The system ends up looking like this. You’ve got DevOps automation, and you’ve got AI tools that help move the process along quicker or slower based on the software you’re using.
We all know that Agile principles are at the core of DevOps: individuals and interactions over processes and tools. That foundational value is the “oil” that greases this DevOps “machine,” allowing the gears to move effectively. As the path slicks, businesses can comfortably apply more pressure on their DevOps process with tools made to make it go faster than humans could go on their own.
Another way to think about this cycle in regards to tools is not in which part of the sequence they perform, but where in DevOps automation requirements they exist.
In this graphic, you can see that there’s a balancing act between DevOps Automation and DevOps Culture for every single business, and the balance is rarely perfectly even. But what you must understand is that there cannot be DevOps without the presence of automation supporting processes, methods, and quality across integration, deployment, and delivery.
Artificial intelligence and DevOps automation
If we’re in DevOps, we automate many of our systems. So how can we use smart technology to get ahead while doing so?
The first is in infrastructure automation, which is founded on the principle of infrastructure as code, or IaC.
1. Infrastructure as Code
IaC means two things.
First, it introduces Agile software development concepts to infrastructure management. Under IaC, infrastructure isn’t a physical object (or entirely a physical object) and can improve and shift over time—in other words, machines need to be able to read that code. Second, IaC embodies the idea of a business’s initiation, development, and provisioning of its network and storage network infrastructure as source code.
The benefits of IaC are plentiful, but the most significant takeaways are that it automates documentation and the audit trail and gets rid of a ton of potential human error.
IaC creates the right environment to automate your testing further than you may be doing it now, especially on the infrastructure end of things.
Additionally, your logs are about to get better. Way better. So much better that the average human can’t process it, especially since infrastructure growth is anything but linear. Can you succinctly define your infrastructure? Can you reduce its complexity?
What artificial intelligence can do with this bulk information is take the log file to help analyze and give informed suggestions for sustained infrastructure management.
One major problem that businesses struggle with is continuous improvement and continuous delivery for infrastructure.
If you have an advanced DevOps team build its readiness for AI, first consider automating your team’s resolution process for infrastructure incidents. The pipeline should look like this:
- Set guidelines for your orchestration software (tools like Jenkins or Microsoft VSTS / TFS) to record data, and define where that dataset will live. Be sure that the repository is version controlled!
- Create separate and defined orchestrators for production and development. Plan to scale both to several instances over time.
- Enable your automation server to connect to the versioned repository.
- Define triggers for both improvement and testing. Connect your automation server to sources from which those triggers come and establish validation processes for those triggers.
- Code and deploy preferred actions in response to those triggers.
- Code and deploy verification processes that the above actions worked.
Uniform code is essential when creating the pipeline for trigger, action, and validation sequences for the purposes of scaling. This framework, while broad in definition (as implementation is so tool dependent), creates the right Agile environment to introduce artificial intelligence in the future. Without such a system in place, infrastructure stills then stagnates.
2. AI-enabled automated testing in DevOps, or "Why we will never manually test anything again"
The second use of artificial intelligence is in testing.
And I mean all the tests: deployment tests, acceptance tests, and functional tests.
Remember how AI can take information from multiple sources and streamline it for the end user? Consider this: you’ve got activity logs and repository logs. As AI reads through both systems, they can not only provide quick access and analytics to their overlapping behaviors but also use pattern recognition to predict how that code will behave.
That “predict” is what’s particularly exciting. AI provides a powerful combination of analyzing what exists and what will likely exist; it’s both reflective and predictive and spans the entirety of your process and toolchains.
There’s a cool inevitability here. Artificial intelligence in DevOps automation creates a system where the program is set up to learn about the end-to-end process of your DevOps system.
3. Automated DevOps process improvement
AI won’t just identify your weak points, but the process builds a backlog of information to create better intelligence automation as a whole. Nothing else about artificial intelligence is more critical than this concept, especially when applied to DevOps. We can use AI to improve the DevOps process and AI software itself. Continuously.
What does such a system look like?
Thinking back to the “greased-up” infinity symbol of how AI and DevOps automation integrate, DevOps teams need to inject these machine learning tools at points in their systems where consistent analytical care can be most effective.
It might end up looking a bit like this:
If you’re wondering about continuous integration, delivery, and deployment, remember this: there is a tremendous amount of data generated from these logs and process flows.
Some more practical uses include:
- Rooting out code that breaks builds
- Scoring software packages
- Simulating production environments
There are plenty of other use cases across the DevOps production line, but I want to hone in on a space where artificial intelligence is particularly exciting: quality assurance, quality control, and continuous improvement.
AI in DevOps quality assurance and control: The future of product excellence
AI and quality assurance and control go well together, in part because the idea of “quality” is an incredibly subjective thing.
For example, some companies measure quality by self-reported customer satisfaction levels. Others look at more internal quantitative metrics like lines of code, defect density, or test coverage.
Regardless of how you measure quality, though, it’s always a tradeoff between quality and cost—though the amount of tradeoff tends to vary from project to project.
The purpose of AI in quality control, then, is to improve quality while maintaining or reducing costs. There are, once again, three steps involved, and the first is in requirements.
1. QA/QC, artificial intelligence, and requirements
According to GS Lab, software requirements are a:
Detail[ed] description of the system under implementations. It outlines the practical usage of product or Service, Condition or capability to which a system must conform. Requirements can range from high-level abstract statements of services or system constraints to detailed mathematical functional specifications.
When it comes to DevOps, the first question one should ask when setting those requirements is, “Is the product customer-driven?” When QAs evaluate technology, they should have the same question in mind.
In traditional firms, a lot of this analysis is left to marketing departments, but it doesn’t have to be that way.
Imagine if you had a tool that could give you customer recommendations like Amazon does with their products. You’d get automated buyer personas, and then whatever AI you’re using could evaluate—on its own—how close to that estimation you’re getting.
(To be clear, that concept is still mostly theoretical, but it’s the direction we’re headed.)
However, we do already have an applied use case for AI in QA/QC, and that’s in administrative tasks.
2. Goodbye, QA/QC busy work; hello, AI
I use this kind of tech all the time—for example, if someone sets up a calendar appointment with me, I use a plugin called Crystal that tells me about his or her interaction preferences based on their previous interactions with me.
That’s how I know my boss is an ENTJ Taurus Gryffindor who wouldn’t be opposed to playing full-contact football. As a LEO Hufflepuff, Crystal advises me to challenge her but also cautions me to know when to stop pushing and offer a conciliatory you-were-right-all-along coffee.
(She likes it scalding hot. And black.)
Learning the personalities of your colleagues is the least of what AI is already doing. You can email a tool that will mimic a human assistant to set up appointments. Machines can review thousands of outputs to determine who is best suited and available for a task. They can comb through documents in seconds and highlight just the good stuff. The use of AI in admin work is endless.
For those in QA/QC, that means:
- Document management gets way easier
- No need to manually check in on training and testing completeness
- Automated audits
- The end of calendar ping-pong
Many other benefits are a little more industry-specific (for example, checking compliance requirements or coordinating with manufacturing services), but it would shock me if your QA/QC department couldn’t figure out how to eliminate at least ten discrete tasks with an AI-based tool at hand.
The final application of artificial intelligence to product quality is in quantitative scoring.
3. Let’s get data centric with AI in QA/QC
Would you consider your development program reliable? Sustainable?
Mean time between failures (MTBF) is so 2012.
Research is already emerging on how machine learning can make quantifying QA/QC far more effective. For example, the IEEE published a study out of Google X about a “machine learning approach for predicting individual component times until failure” that was”far more accurate than the traditional MTBF approach.” If you’re interested in this specific facet of QA/QC, I recommend checking out this article from TechBeacon.
This list of requirements-setting can go on for a while, but the takeaway is this: AI integrates into goal setting for DevOps teams. What I’m recommending is that businesses have the opportunity to start using these metrics so they can then shape their goals around them.
What should you know before selecting AI tools for DevOps automation?
By now, you know that those in DevOps automation who use AI techniques have a significant advantage over those who don’t.
We’ve gone over how AI fits into the DevOps chain and how to automate automation. We’ve gone over how artificial intelligence improves not just product quality, but process quality too.
What’s left is not just the future, but where we are now. Consider this graphic:
Your company exists somewhere on this graph. I caution you to consider if your tools support or hold back your work processes, or if your work is slower than necessary because of excessive reliance on human analysis. If the problem is the latter, you may be ready for an introduction of AI tools to your DevOps processes.
If the problem is the former, focus first on your people. You will never be able to use the full power of artificial intelligence, let alone DevOps, if your culture isn’t in order.
Agile should be at the heart of your business (Agile business cultures are the best cultures, after all). If you’re not yet considering scaling Agile across the enterprise, do so. If metrics like individual velocity aren’t clear, clarify those processes first. If your culture is still struggling with top-down managerial techniques and can’t effectuate non-judgemental communication techniques, those problems must be of priority before adding the complexity of new tools.
Think of all the other tangible applications of DevOps that are impending or already implemented:
- Root-cause analysis
- Quality analysis
- Fast reaction time
- Continuous experimentation
- User risk analysis
- Automated approvals
- People management
Where are you in the quadrant above? If you are ready to use artificial intelligence for DevOps automation, consider upgrading your system to one of the following software stacks.
AI for DevOps automation software stacks
These software stacks were configured with the following principles:
- Quality and version control are at the heart of DevOps; tools that enable these processes are prioritized. This value does not just extend to code, but to planning, testing, deploying, operating, and performance monitoring as well.
- Tools were made for the people who work most closely with them; all-in-one tools aren’t customizable or robust enough for today’s Agile DevOps team.
- DevOps tools that have many integrations were given a higher-weighted level of importance.
Smart Infrastructure as Code Software Stack
Smart DevOps Automation Software Stack
Given those requirements, we created the following software with specific AI functions in mind: to enable IaC continuous improvement, and to enable CI/CD across the software development process.
The Future of AI and DevOps Automation
Lean, Agile, and DevOps—none of these concepts are exiting the conversation. If anything, they’re exploding in the business world. I’d also argue that the idea of artificial intelligence has captured the imagination of generations of people and that its application in business will only continue to inspire us.
There’s a strong interdependency between AI and DevOps—sure, AI enables DevOps automation, but let’s not forget that DevOps enables AI as well.
There’s a tricky allure to that reality, and I can’t tell you how many SMBs to enterprises have made the mistake of trying to develop custom algorithms to support their company instead of using previously-made resources. My first suggestion then, ironically, is to hold off on diving straight into your own artificially intelligent system.
As brilliant and valuable as data scientists are, most IT departments don’t need to make such an investment to get started. Use a tool like Dynatrace that already have predefined algorithms—for a majority of businesses represented here, anything more would be overkill.
Next, don’t forget that there are opportunities for AI to kickstart your decision-making process. Often, we forget that artificial intelligence isn’t limited to automation. As an analytical tool, leverage your resources to identify parts of your DevOps sequence that are lagging behind.
My final recommendation is to learn how to do DevOps first.
As enticing as it may be to dive headfirst into AI, you’re not going to be as effective as you can be if you lose the humanity from your dev team. You don’t want to be so reliant on robots and so dysfunctional as humans that when it comes to complex problems, you are functionally unable to process or resolve them.
The future of AI and DevOps is bright. There’s a future here where the rote business of work that we all deal with every day will be as archaic as accounting by hand. We’re in an exciting time. You might even say I’m feeling a little Code 125: The data connection is already open, and our transfer is starting.
I’d love to hear stories about how you’re already using AI in your DevOps program. What lessons have you learned? What should those considering trying it out know going in? Do you have any objections to what I’ve written here? Hit me up in the comments or @RachelBurgerPM and @Targetprocess; let’s get nerdy!
And if you found this article useful, consider giving it a share so that we know to keep this kind of content headed your way.