While the shift from monolith to microservices changed the game in regard to deployments and team velocity, it simultaneously introduced the monotony of daily repetitive work and manual tasks. SREs and DevOps now need to entirely rethink how teams manage their applications on a day-to-day basis.
To streamline this work, teams typically look to automated systems and smart alerts to help them stay on top of critical activity in their cloud environments. While a highly automated approach can certainly help with application management, these types of systems are not independently intelligent.
“Automated” and “autonomous” sound interchangeable and it seems like only a few extra letters are the difference, but there’s one important differentiator that bridges the gap between them: intelligence. An automated system can eventually graduate into an autonomous system. However, autonomous systems are not built on advanced automated systems. Confused yet? Let us define the basics.
Understanding the difference
- Automated systems are essentially automated actions that are based on thresholds and built into a system. A user owns the rules around a certain situation and if something falls outside specific parameters, the system follows the prescribed action as defined by the user. The user takes on the burden of continuous learning. These actions might be as simple as an alert to the user, or a preset action that the user selected (for example, IFTTT).
- Autonomous systems are rooted in awareness about situations and intelligence to take action to achieve and learn from an outcome. They are smart enough to identify change without user-defined parameters, and inherently know how to react to mitigate the change. Autonomous systems are capable of independently identifying and acting and are only driven by a user’s problem statement (for example, “Help me reduce my latency”).
In other words, autonomous systems represent a dynamic, progressive scale of intelligent capabilities, whereas automated systems are static — a predefined trigger yields certain results. Automated systems are not context-aware and are specifically told what to look for. In contrast, autonomous systems have a built in learning model and feedback loop and are told what to look at. Make sense?
So why are these terms so easily intermixed, and why is there so much confusion between the two? Two important reasons:
- When teams automate systems and begin seeing significant value, they tend to call it an “autonomous system” — but that’s wrong. Even the most valuable, super-fast automated system is not autonomous because it fundamentally represents a different approach. Automated systems are inherently built on user’s knowledge – which represents highly aware, informed, and intelligent decision making. That’s great, but it’s still simply synthesized down to “do X when you see Y.”
- Autonomy has its own scale, and its lower levels appear to share similar characteristics as automated systems.
The Autonomy Scale
Autonomous systems are responsible for handling decision-making, and leverage multiple inputs to monitor, evaluate, and measure information before feeding it back into the system. That’s one of the primary reasons they’re much more challenging to develop than automated systems — intelligence is critical to their success.
Autonomous systems can be judged by their level of intelligence and the complexity of their targeted action when scenarios arise. Let us look at an intelligence scale in regards to vehicles to illustrate the concept:
- Earth-bound: You drive a stick shift vehicle (and there’s nothing wrong with that).
- Smart (but assisted): While on the highway, you turn on cruise control to maintain your speed. Further along, your car detects that you’re within 15 feet of the vehicle in front of you and automatically adjusts your setting to reduce your speed to 58 mph to maintain the distance between vehicles. Once the other vehicle is out of the way, your car returns your speed to 65 mph.
- Intelligent: After your car reduced your speed while on cruise control, it analyzes the speed limit and determines how much faster your car can safely speed up to in order to make up for lost time while at the reduced speed.
- Space-Smart: You sit in the backseat of the car and safely arrive at your destination without touching the steering wheel, gas pedal, or brakes.
- Beyond: Your car learns that on Mondays you tend to be tired in the morning, and adjusts your typical route that day to pass by your favorite coffee shop to pick up a cup.
To be clear, we haven’t yet achieved the highest levels of autonomy yet. But the point is that the ultimate goal is to create a system that can think independently like a human to take the best and safest action possible. Most importantly, these types of systems need to be designed to allow a user to choose how they want to use it based on their comfort level — after all, the user should always be in control.
3 Reasons to Build an Autonomous System
How do you decide if an automated or autonomous system is right? As mentioned earlier, automated systems are capable of helping manage your applications. But being capable and being helpful are two very different things. Your team should consider the following when assessing what type of system your organization needs:
- Increased innovation & release velocity: Developers used to release code monthly or biweekly but the new norm is to release new code in increments of sub-seconds, around the clock — which supports innovation and improves speed to market. That means your environments are constantly in a fluid state, and the chances of breaking something increase. Automation alone isn’t capable of effectively managing this ever-changing production environment.
- Proliferation of microservices: In past decades, it was common to have from a handful to hundreds of services powering operations. In today’s cloud though, that’s grown to hundreds of thousands of services working together to create a technology infrastructure. But observing, managing and taking action on all of these services is difficult. Dashboards that once gave visibility into hundreds of services now share “insights” on thousands of processes. Expecting an SRE to effectively manage this volume of services is an untenable solution.
- Scale impacts everyone these days: Five years ago scale was a challenge that only large companies like Google, PayPal, and Facebook faced. However, digital transformation has rewritten the narrative so that scale now impacts any organization in any industry, regardless of your customer count. Scale brings a litany of new problems, but most importantly it highlights the critical challenge that multiplying isn’t realistic. If your plan to scale involves a 1:1 ratio of assigned work to employees, you’re on a runaway train.
At the end of the day, “autonomous” versus “automated” isn’t simply a debate between which approach works best for your team and organization, nor is it about strategy in how to beat your competition. It's about having a system that can still operate efficiently without burdening teams-similar to the safety, agility, reliability and efficiency Tesla offers its drivers. In today’s world of microservices, automated solutions for application management are increasingly a more challenging approach and will continue to be tested given the growing complexity of microservices. However, adding intelligence to these systems and evolving them into a truly autonomous system can help drive innovative transformation for the future.