Constants of Cloud Application Performance Management

lanir-shachamWe are seeing more and more awareness of application performance management these days in less mature IT organizations who until recently were solely focused on infrastructure performance. New sites that are dedicated to helping those less familiar with the art are being launched, Application Performance Engineering Hub is a good example of one which covers “The latest news and opinions about application performance engineering”.

The newest wave of best practices and methodologies for application performance management is, of course, around cloud computing.

Application performance management in the cloud can be a frightening prospect. After all, how is one supposed to manage things like end user experience monitoring, analytics gathering, and transaction monitoring when everything about cloud management seems to scream change?

At first blush, it would seem like trying to build a house on quicksand. Agile development, on-demand servers, rapid deployment of virtual servers… you want to try to build an application performance management scheme on that kind of infrastructure? Good luck with that.

But it’s not as crazy as one might think, and people are getting it done all of time. So how do they do it?

Instead of focusing on all the things that do change within a cloud environment, application performance management vendors should really focus on the things that don’t change: the constants that must be measured no matter what. Break it down in that method, then it becomes a lot clearer.

What doesn’t change are business transactions and the users’ expectations of performance. Those are the constants in any APM metric that will always be true. If you keep transactions and user expectations as you anchor in monitoring a cloud environment, then monitoring all of the rest becomes a whole lot easier.

That may sound good, but how does that actually work?

One way would be to track every step of a transaction, and maintain the user and business context along the way. That’s a brute-force application, though, that requires a huge amount of planning and configuration, since–as has been thoroughly pointed out by now–cloud environments can be exceedingly complex. Still, it can be done, and with the right tools, it can be done pretty well.

Another way is to take a higher-level approach and model real-time transaction behavior. Look at what’s supposed to happen with a user’s transaction and see how reality differs from the expected. You can then compare the the results with what’s expected and use the delta to start figuring out where the delays are coming from in the application.

Focusing on the application in application performance management is, utlimately, the best approach for cloud-based application performance management, because at the end of the day, the user’s interaction with the application and the transaction metrics will be the best determinate of what’s right and what’s wrong with the app.