Effective Application Performance Monitoring (APM)
How do you achieve jaw-dropping APM?
Begin with a complex multi-tiered application with web servers, app servers, database servers and thousands of users accessing the app from desktops, laptops, smart phones, and tablets. Gradually after a new roll out and a few upgrades, the app starts causing you more headaches than you ever imagined.
What do you think it would take to achieve jaw-dropping or effective APM to make sure that there's no downtime or slowtime for that app and alleviates your headaches?
The solution would need to include monitoring, troubleshooting, and infrastructure performance data for sure.
But what else?
How about nice looking graphs with summaries of aggregated data over the last 5, 10, 15, or 20 minute intervals and historical data stored in hourly, daily, and weekly roll ups?
No, that would not even catch your attention, let alone cause any pauses for staring or jaw dropping. It would be more interesting if the data scaled to one-second granularity if needed for any time period that you wanted to troubleshoot, right?
Basically, aggregates from performance data must show what affects individual users accessing the application and where to focus priorities. Anything else is not that useful. In fact, user experience issues could be hidden in plain sight. Check out Jon Hodgson’s three-part series, titled "Hidden in Plain Sight":
Continuing on our quest for jaw-dropping APM, how about colorful alerts that show which thresholds have been violated?
You bet, if there’s more to it than that. In other words, you can find the root cause for the alert within seconds instead of having to reproduce the issue first. And, you should be able to do correlations that help you find something that might initially be considered unrelated but actually ends up being the root cause. For example, your app might be sharing a resource with other apps that you're not even aware of until you dig deeper.
How about a nice dependency map of a typical transaction, such as a page view, download, or a search activity that shows all the components involved in the transaction?
Sure, the actual transactions with the processing time of each transaction at the code level during run time catches most people's attention. Many app tools can recreate a crime with the right data but do not have a recording of the crime. And besides, re-enactments are for historians only! Just kidding—it’s good to have both as we do at Riverbed.
Interested Faces at Industry Events
As a SteelCentral Technical Marketing Engineer for Riverbed Technology, I see a lot of interested faces when I demo our APM solution at trade shows and events including VMworld, Java One, Interop, SharePoint Conference, Gartner IT Expo, and Microsoft TechEd to name the bigger ones.
I've learned that having true APM visibility makes a huge difference for keeping competitive in an application performance = business performance world.
In fact, I'm reminded by the phrase, "Ask not what your app tools can do for you but what you can do with your APM" -JFK*
Seriously, it’s the value you can add with the proper APM tool in place that helps you do the following:
- Protect apps from crashing
- Keep your revenue streams running
- Mitigate any upgrades and new roll outs that have been big headaches in the past
When application coders visit our Riverbed booth, guess what happens? Their jaws do in fact drop when they see the visibility that our solutions provide. They are certainly not impressed with my middle-age, slightly overweight persona, or even the booth giveaways and the charming greeters we typically have.
Here's what it is.....
Many of them have never seen an APM solution that shows them all the transactions of every user from all the tiers of that application with performance metrics at one-second granularity all the time coupled with the ability to warehouse this data as long as they want and view instantly whenever they want.
What really blows them away─or in keeping with the metaphor─makes them start to drool is that all of this can be accessed in seconds. Once they find a transaction of interest like a particular SQL call, Java or .NET code-level execution, they can find out how often this transaction occurred for anyone using the app. They can quickly address the stuff that has been bugging them. Did they implement the code most efficiently? Does the code scale in production? They quickly find out if faulty code is starting to get slower over time.
With a proper APM tool like Riverbed SteelCentral AppInternals, you can find out how often the slowest transaction of the app occurs for all users. You can then do a quick search to find out if a specific transaction takes more time based on the time of day or with what specific users and what platforms and browsers they are using. This list goes on, and people who come by the booth often bring their managers back to show them how it works and ask them if they can have it.
I’m telling you, it’s like shopping with your kids during the holidays.
I have heard many times from a quiet, coder - a shy type who is typically hard to impress - unassumingly blurt out, “Dang, I really wish we had this tool when we were rolling out such and such.” The next question is, “How much does it cost?”
They want what we're showing so badly and need to figure out how to get the ball rolling within their organization. Those who don’t understand typically just admire the solution and are pretty darn polite but those who actually do coding and are responsible for the apps in their organizations are immediately impressed and engaged. Jaws dropped.
Jaw-dropping APM video
For a quick video of jaw-dropping APM in action, click here:
- What's New in AppInternals 9.0?
- Guess what happens when you use APM to zoom in—and then zoom back out again?
- 3 Guidelines for Troubleshooting Application Performance
Google+ Hangout June 27th (this Friday):
*Just for Kicks (JFK)