Is Your Environment Optimal?
Is your application running in its optimal state? Perhaps you have auto-scaling enabled, and your application can scale up and down dependent on user load. Perhaps this may appear optimal. But the reality is: there are so many parameters that can be modified that the meaning of optimal is always in flux, and true cloud optimization often lies just out of reach.
It doesn’t need to be this way. By understanding your application, it is at least possible to determine what optimal may be. It is even possible to gather an understanding of how to define “optimal” for any given application. The secret lies is understanding the Key Performance Indicators (KPIs) of your application, and how to leverage them in determining cloud optimization.
Determining the Right KPIs
Anytime someone talks about monitoring or performance, the first question we should ask is: “What are the KPIs here?”
Often, people answer this question without thinking too hard. They blurt out the standard defaults: “Throughput!” “Latency!” “Duration on Site!” However, even these defaults are only valid if they really define your application. If you have a highly active website that has a very dynamic content base, then perhaps these are the right KPIs. But not all applications are the same, and these might not be the appropriate metrics, especially when it comes to cloud optimization. People forget this. (I’m looking at you, Data Ops and Machine Learning types!)
For example, in some cases, batch- or data-processing style applications may use duration of run as the KPI. But a more appropriate KPI might be transactions per second, especially in cases where the batch size may be inconsistent, such as when a batch is run at a consistent time, and processes the transactions that happened per day. In these environments, it’s important to select a KPI that is relative to the processing element rather than the process.
In other cases, such as classic web performance, the optimization of the application doesn’t only depend on the specific KPIs of the application of interest (e.g. the web frontend). It also has dependencies on additional services, such as authentication services, the backend databases, and other related services (e.g. a ratings engine, or social interaction engine). While it’s important to define the right KPIs for the actual application under review, it’s also important to understand the impact of the adjacent services KPIs and how they impact the performance and optimal running solution of any application. Without this approach, optimization of any kind, especially cloud optimization, is nigh on impossible.
Optimizing Your KPIs
Optimization can sometimes seem simple: just figure out how to get the best latency, or the best performance out of your application. However, if one truly investigates the KPIs that define performance, then an actual optimization of the system, rather than just the individual application, can be accomplished.
For more, read our post on why your apps are running hot, and how you can cool them down.