When you’re trying to fine-tune your application performance, VM utilization matters. VMs are an integral part of a microservices model, and you want to have them functioning as well as possible.
This is why lots of APM (Application Performance Monitoring) services place such a focus on VMs. They look at your AWS logs or bills, and one of the first things they will do is tell you which of your VMs have low utilization, so that you can reduce their size or even delete them, and cut costs.
Utilization is good. But this is an oversimplified and unhelpful way of approaching things. Most people aren’t using independent VMs; they are running a service with multiple VMs. In any such system, there will be a high degree of interdependency between the VMs. The way the VMs function is highly interlinked, and the performance and behaviour of one can affect that of another.
You end up with a signalling issue, where what looks like chronic underutilization in one VM is actually a problem with a different VM. For example, a back-end VM might look underutilized, when it’s only getting low traffic (and thus using fewer resources) because the front-end VM is too small to process more traffic. A simple bottleneck at the front shows up as a problem in the back.
And in reality, most systems have for more issues going on than one simple bottleneck.
Ultimately, tweaking utilization is a slow, inefficient way to try and performance tune. You can audit the whole service, and adjust VM types to provide more resources here, fewer resources, test for bottlenecks and try and get things smooth. But it’s like whack-a-mole. You’re always playing catch-up, you never have real visibility.
What you need is a tool that can continually monitor all of your VMs, while possessing full insight into the network of interdependencies at play, and tweak resource allocation with real accuracy. At Opsani, we’ve built a Continuous Optimization tool that does this job – and tunes all other relevant app parameters at the deployment level.
Opsani slots onto the end of the CI/CD chain, and automatedly examines millions of configurations to identify the optimal combination of resource and parameter settings. Opsani is perfectly reactive, tuning parameters in response to new traffic patterns, new code, new instance types, and any other influences. Your VMs become optimally tuned, and so does everything else.
Opsani engages with those app parameters that are routinely ignored, left to run at too high a cost and too low an impact. The outcome is that infrastructure is tuned precisely to the workload and goals of the application. On average, when they implement Continuous Optimization with Opsani, customers experience a 2.5x increase in performance, or a 40-70% decrease in cost.