‘It Depends’ — Kubernetes Excuse or Lack of Actionable Data?
That’s not exactly the answer someone is looking for when they ask a question about Kubernetes and application performance. But it is a response we’ve become accustomed to giving. Because the truth is, it really does depend. Kubernetes is complex and every application is unique. There is no easy one-size-fits-all answer. There are, however, lots of questions thrown at developers every day as organizations move to Kubernetes and a containerized environment:
- Is it better to tune my application for throughput or response time?
- Should I run fewer larger pods or many smaller pods?
- Should I break my application apart into more pods?
- Will we save money if we optimize our Kubernetes apps?
- Isn’t more always faster and better?
Well… it depends.
It may sound like a cop-out, or like you’re hedging your bets because you’re unprepared to answer, but what do we really mean when responding with “it depends”?
We mean there’s not enough data right now to give you the right answer. And if we can’t confidently give you the right answer, we’d rather not give any answer at all. Of course, that can be frustrating for the people asking us, the ones who believe that providing an answer to these complex questions should be easy. Or at least easier. And they aren’t wrong.
While we’ve become accustomed to responding in this way, it’s no longer good enough when it pertains to how organizations make decisions in a Kubernetes environment. After all, the whole idea is that we need to move faster, learn more rapidly, iterate and get smarter. We need to do better. But how?
It’s natural for people to want to be in a steady-state. It’s our comfort zone, after all, because facing unknowns or variability makes us uneasy. When someone hears “it depends,” it becomes something of an emotional rollercoaster, like reaching the top of the ride without knowing what to expect when you start the plunge back down. And, unlike an amusement park ride, you can’t just close your eyes, wave your hands in the air and hope for the best — even if sometimes the complexity of Kubernetes does make you want to scream.
Finding the right answer more quickly needs to be easier. It needs to require fewer cycles and get us to a higher degree of confidence in our answer. If we have an assured way to get there, we’re more likely to lean in — “It depends” and “I have a way to get the answer we need to make an informed decision.” Sure, there’s the initial discomfort (and stomach lurch) of the inverted loop, but there’s also a way to come out of it with a positive experience while you go along for the ride.
The question then becomes how? In the past, the only way to identify all of the variables, understand the dependencies and their impact, and then make an informed decision was to approach it manually. We could do that by observation or experimentation, two approaches to learning that have their place in the application optimization process. But let’s be honest, a manual approach is just not viable, both in terms of the resources needed and the high level of confidence needed in the results — not to mention the lack of speed.
Fortunately, today, machine learning and automation can help (such as the tools StormForge provides). Now we can leverage experimentation in preproduction to explore variables and dependencies without waiting until an application is in production to see what happens.
With ML and automation, we can quickly, efficiently and cost-effectively find out what those variables are, understand the dependencies and determine the impact of decisions moving forward. In production, we can go even deeper to draw performance insights on all the data collected (for example, from observability tools) to inform and optimize cloud native environments for the best application performance.
Yes, every application will always be unique. And, yes, we will always be tasked with getting better answers, even faster, as the speed of business accelerates. And, yes, it will always depend.
But we shouldn’t shy away from solving these difficult problems or answering the challenging questions. We just need to use the right tools to get us there.
“It depends” is not the end of the conversation. It’s just the beginning of a new one.