IT and SRE / DevOps teams rely on application performance monitoring to efficiently resolve end user complaints, troubleshoot application performance issues, and proactively optimize end user digital experience. There are a number of ways to monitor application performance in production, including APM (application performance monitoring), NPM (network performance monitoring), RUM (real user monitoring) and synthetic application performance monitoring. Application performance monitoring tools broadly measure application availability and response times, and provide insight into the main infrastructure layers and components that define application performance including servers/hosts, networks and end-user devices.
APM – Application Performance Monitoring
APM application performance monitoring solutions typically rely on agents running on application servers to measure response times, track errors, monitor and inspect code execution. Many software companies have developed agent-based application performance monitoring solutions including Introscope APM from CA (now Broadcom), Dynatrace, AppDynamics (now part of Cisco), NewRelic and Elastic.
These application performance monitoring solutions cover a specific set of application frameworks they can inspect and perform measurements on. This class of application performance monitoring tools require additional processing from the servers hosting the monitored applications, but deliver deep insights into how the application is performing, and which part of the code executes slowly.
The main challenges around implementing APM application performance monitoring tools are:
- Coverage of application frameworks (new frameworks, client-side executed code, micro-services based architectures)
- APM solution performance overhead
- Inability to access and monitor SaaS, PaaS, and 3rd-party application components and services
- Lack of in-depth network (path), transport and session layer monitoring capabilities (OSI layers 3, 4, 5)
APM can be great at revealing the execution of the application itself, but does not provide visibility into the path, services and infrastructure between users and application frontend components, or how they impact user experience and application response times.
NPM – Network Performance Monitoring
NPM network performance monitoring–or NPMD: network performance monitoring and diagnostic–solutions rely on capturing network traffic and analyzing the network communication between clients and servers (or between servers). NPM performance monitoring tools inspect the different layers of network communication to deduce response times and errors at the network level (TCP/IP), and at the application level (HTTP) when traffic is unencrypted, or can be decrypted in near real-time.
These solutions extensively cover low-level network and transport protocols, TCP and UDP to a lesser extent, and selected application level protocols (HTTP, database protocols, VoIP, FTP, DNS). Examples of NPM vendors include Extrahop, Netscout and Riverbed, all which have broadened their focus toward security and infrastructure management as NPM techniques become increasingly less effective and more difficult to deploy.
The main challenges around the implementation of NPM network performance monitoring solutions are:
- Traffic capture is often impractical:
- in virtual, software-driven data centers / SDNs, private and public cloud environments.
- when application components and / or users are highly distributed.
- Encryption impairs traffic analysis: The latest implementations of TLS rely on dynamic / ephemeral key exchanges that prevent man in the middle interception / decryption.
RUM – Real User Monitoring
Real User Monitoring is an application performance monitoring approach that consists of inserting a javascript reference into web application code. When a user visits the site, their browser executes the script and consequently shares browser level analytics with the RUM platform. RUM solutions include Datadog, New Relic and Dynatrace real user monitoring tools.
RUM is great at providing visibility into the actual experience of real users from their context. End-to-end application performance is measured from their vantage point, as they perceive it, reflecting their connectivity, device type, browser version, etc…
The main challenges facing RUM solutions are:
- RUM only applies to web applications.
- RUM provides little insight into performance issues occuring within application platforms (front and back end servers and their interaction); its insight is limited to the breakdown of response times for the main infrastructure elements between users and the application platform.
- RUM only provides analytics when actual users access the application.
Synthetic Monitoring
Synthetic monitoring–or active monitoring–simulates users with software agents that replay predefined scripts, then measures the resulting performance of these transactions. Synthetics testing can be tailored to monitor typical user scenarios (e.g. application availability, page load times, etc.) to check the proper execution of the application.
Synthetic monitoring is an ideal approach to verify the performance of an application’s main features, establishing baselines and trending performance over time. Splunk, ThousandEyes (Cisco) and Catchpoint offer synthetic monitoring solutions, competing with a wide range of open source solutions.
The main challenges of synthetic application performance monitoring solutions are:
- Testing coverage and accuracy is only as complete as the number of scenarios created; it’s incapable of simulating all the ways real users interact with applications.
- Synthetic testing can never represent the variety of user locations, connectivity, devices, and browsers that influence application performance and end user experience.
- User experience measurement: traditional page load and performance metrics captured by synthetic monitoring tools do not accurately represent the user experience of transaction-centric, single-page applications.
- Maintaining test scenarios is an ongoing, time consuming and defensive activity. Frequent application updates can break scripts when site navigation and behavior changes.
- SaaS and 3rd-party applications are likely to change without notice
- Updates may not be applied to all users and regions at the same time
- The increased adoption of CI/CD and microservices-based architectures exacerbates these issues
Comparison of Main Application Monitoring Techniques
Application Performance Monitoring Techniques | Pros | Cons | Limits |
APM |
|
|
|
NPM |
|
|
|
RUM |
|
|
|
Synthetic Monitoring |
|
|
|
Combining Application Performance Monitoring Approaches
No single application performance monitoring approach covers the full spectrum of infrastructure, layers and hosts that constitute modern cloud-hosted web and SaaS applications. NPM, APM, RUM and synthetic application performance monitoring tools each offer a unique perspective, but even taken together they can’t resolve network path performance, the contribution of SASE/CASB security solutions, highly distributed poly-cloud hosting, composable apps and the impact of bring-your-own devices like tablets and Chromebooks.
Kadiska takes a different approach. Our platform combines the best of APM, NPM, RUM and synthetic testing to overcome the visibility gap left by traditional application and network monitoring solutions. With full 360° visibility into network path performance, application performance and users’ digital experience, IT teams can quickly collaborate to resolve vexing performance issues and proactively optimize applications and infrastructure to drive enhanced business productivity.