Welcome!

Gary Kaiser

Subscribe to Gary Kaiser: eMailAlertsEmail Alerts
Get Gary Kaiser via: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn


Related Topics: Application Performance Management (APM), DevOps Journal

Article

Transaction-Centric NPM | @CloudExpo #APM #DevOps #Microservices

When there’s a performance problem with a critical application, our immediate goal is to restore service as quickly as possible

Transaction-Centric NPM: Enabling IT Operations/Development Collaboration

In my last post, I wrote about the value of IT / business collaboration, and the importance of a common language, a common definition of end-user experience - user transaction response time - as the one performance metric both IT and business have in common. In it, I provided some background on the importance of understanding exactly how we define response time, since this definition dictates the usefulness of the measurement. For the sake of brevity, I'll summarize three common definitions here:

  • Session-layer response time: request/response measurements specific to an application
  • Application component response time: component-level performance unique to specific application functions
  • User transaction response time: click to glass, or end-user experience

These definitions remain important as we consider the other key part of the organization that IT operations must collaborate with: the development team. This is something that you probably already do, perhaps too frequently, and these encounters might remind you of attempting to use your high school French as you attempt to explain your indigestion to a harried pharmacy clerk in Paris. (I never claimed to be a master of analogies.)

Application Performance Triage and AA NPM: A Tenuous Partnership
Let's set the stage a bit more. When there's a performance problem with a critical application, our immediate goal is to restore service as quickly as possible. A triage approach begins with identifying the problem, progresses to isolating the fault domain, and leads to capturing enough diagnostic insight to prove the conclusion, facilitating efficient handoff to the appropriate domain team. Sound familiar? Not only is it something you practice frequently, it is the promise made by most AA NPM (and many other) solutions. But what constitutes appropriate diagnostic insight if the problem is related to application processing? (After all, they can't all be network problems.)

The answer is something more than a session-layer response time measurement, that ubiquitous metric present in virtually all AA NPM solutions since the late 1990s. These very basic measurements summarize all request/response timings on a given TCP connection without differentiating between transaction types, unfortunately and unavoidably mixing 10 millisecond queries with 15 second reports. While the label - "Application response time" - may sound promising, the measurements themselves are relatively unactionable in real life. Armed with this measurement, the information you are able to pass to the development team is only slightly more interesting than saying "my network tool says your app is slow." (Or, to the French pharmacy clerk, "J'ai mangé quelque chose de mauvais - I ate something bad.") The result? The now-proverbial war room. (I'll poke at some war room promises in another blog.)

Identifying Transactions
For probe-based solutions, deep packet inspection (DPI) approaches can add valuable insight into these rudimentary session-layer measurements by identifying the transaction that each measured request/response exchange represents. A web URI, a SOAP request and a SQL select statement are common transaction examples; each would be comprised of a single request message followed by a single reply message (and of course each message could be transported via multiple network packets). DPI can be used to extract the transaction identification from the HTTP header, the SOAP body, or the database-specific SQL syntax. Given this capability, unique transaction-specific measurements can be recorded, baselined, reported, assigned thresholds, and used to generate performance alerts. No longer is the measurement mixing a complex Java server page that takes 6 seconds with a simple JavaScript request that takes 100 milliseconds, or a 5 millisecond SQL select statement with a 15-second stored procedure.

In order for this DPI approach to be broadly effective, the analysis (decode) must be sophisticated and flexible enough to parse important transaction parameters. A contemporary example is a web application that uses a single URL for many different transactions, where the transaction parameters are not included in the URL string itself, but rather embedded in the request body. The decode must be able to understand and act on this complexity, and not use the single URL as the identifier for all transactions.

Transaction Visibility Is Just the Beginning
This application transaction or component measurement can be considered the lowest common denominator required for effective collaboration with the development team. It should provide enough diagnostic insight to accomplish two goals inherent in triage:

  • Accept that there is a problem related to an understandable application/code function (even though the data comes from a network tool)
  • Begin to investigate the application logic invoked by the transaction, along with underlying dependencies.

The development team may still have to work to reproduce the problem (especially if it is intermittent) and trace code execution (this isn't a Dynatrace PurePath, after all), but it achieves our stated goal of inter-team collaboration by defining the problem in language that the development team can relate to. (Ça va?)

If I were only concerned with highlighting the fundamentals of communicating with development teams, I might stop here. (In fact, in the extended AA NPM market, it's quite common to stop here.) But there remains a critical missing link, one that significantly impairs your ability to leverage this application transaction insight.

Click here for the full article

More Stories By Gary Kaiser

Gary Kaiser is a Subject Matter Expert in Network Performance Analytics at Dynatrace, responsible for DC RUM’s technical marketing programs. He is a co-inventor of multiple performance analysis features, and continues to champion the value of network performance analytics. He is the author of Network Application Performance Analysis (WalrusInk, 2014).

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.