What is application performance monitoring (APM)?
Application performance monitoring (APM, for short) is the practice of using real-time data to track an application’s performance and the digital experiences of your end users.
A good APM tool should answer the following questions:
- “Is an application broken or slow?”
- “If the application is broken or slow, what’s causing the issue?”
DevOps and engineering teams can use APM tools to answer these questions and quickly find and fix issues before they affect real users.
The terms “application performance monitoring” and “application performance management” are often used interchangeably, and you may also see terms like performance monitoring or application monitoring used as well.
Why is application performance monitoring important?
Nobody wants to deal with a broken or slow app, whether that’s end users or the teams maintaining and building an application.
End user experience
End users expect speed and reliability when they use web applications. They want optimized performance and fast response times.
Users will abandon a website within seconds if it’s not loaded. Even worse, if someone has a bad user experience, they’re more likely to move on to a competitor. One study suggests that 12% of users would actually warn friends and family against engaging with a particular app or site, which can have a detrimental impact on business success, customer satisfaction, and brand reputation.
Ease for engineering teams
Application performance issues also cause huge headaches for engineering teams. An on-call engineer might get a critical system alert at 3 AM regarding business transactions that leads to entire teams trying to solve a problem in the middle of the night.
It’s even worse when there’s a critical issue that has no context, meaning that engineers aren’t sure where the problem is coming from. The issue might be coming from an API, Kubernetes cluster, cloud service, or any number of other locations from code to cloud, and the longer it takes to solve, the more it negatively impacts customers and the company’s bottom line.
Application performance monitoring helps engineering teams pinpoint issues quickly—and solve issues proactively. For example, an engineering team could set up a critical threshold that sends an alert when page loading times become too slow, then combine that with detailed tracing to quickly pinpoint the cause and fix it before end users are affected.
The alternative is learning about the issue from end users, which means they are already impacted—and then scrambling to solve the problem without the additional context that application performance monitoring provides, resulting in longer mean time to detection (MTTD) and mean time to resolution (MTTR).
What can you monitor with an application performance monitoring solution?
A software application often has many different services and layers to monitor, and APM can be used to monitor each of those layers. For example, an APM solution can be used to collect current and historical information about the following layers:
- Infrastructure including memory usage, CPU utilization, and application availability
- Application backend such as database query performance and error analysis
- Application frontend including web browser rendering, user experience monitoring, and performance metrics
APM isn’t limited to monitoring websites. You can also monitor mobile applications, servers, networks, APIs, internal (employee-facing) applications, cloud-based services, and other technologies.
Let’s drill down and take a closer look at the kinds of tools that are generally included in an application monitoring solution.
Operational dashboards provide a high-level overview of how your application is performing. You can customize operational dashboards to display your most important metrics, ranging from golden signals to custom KPIs to any services you are monitoring.
Real user monitoring
Real user monitoring, also known as RUM, provides insights into what real users are doing in your application, and how well the application is performing for those users.
Synthetic monitoring involves using a headless browser to mimic the behavior of real users. Practitioners can test specific user flows proactively without relying on data from actual users.
Serverless monitoring allows you to monitor the performance of applications that use cloud-based services such as AWS instead of on-prem servers.
Database monitoring allows you to monitor the performance of your database so you can determine how long queries are taking.
Mobile monitoring allows you to monitor iOS and Android applications, including latency issues and crash history.
Infrastructure monitoring is necessary for getting insights into how your infrastructure is performing, whether that’s your hardware, cloud infrastructure, or Kubernetes clusters.
Service maps allow you to quickly see your application’s connections and dependencies, which is especially important in large applications that use thousands of services.
A good APM solution also gives you the opportunity to query your telemetry data to get deeper insights, examine logs, and use distributed tracing to examine a series of events and find the root cause of any issues.
What are the benefits of application performance monitoring?
A good application monitoring solution provides many direct and indirect benefits.
- Proactive approach to managing incidents
- Lower mean time to detect and mean time to resolution for issues
- More time spent innovating and creating new features
- Less toil and stress for site reliability engineers and incident response teams
- Fewer and shorter outages
- Better user experience
- More efficient and cost-effective usage of cloud-based and other consumption-based services
- Positive impact on your bottom line, including increased profits and gross margins
Who uses application performance monitoring?
Application performance monitoring is an important practice for all enterprise companies, whether or not they are in the tech industry. Because most companies have a web presence, it’s necessary to monitor the performance of any web assets and the overall experience of their end users. But which teams are using and benefiting from APM? That can vary based on the size and scope of the application.
- DevOps engineers automate processes related to testing, deployment, and maintaining applications in production. Application performance monitoring is an essential DevOps best practice.
- Site reliability engineers (SREs) take a software-based approach to operations. Their work is focused on ensuring that applications are reliable. It’s absolutely essential for SRE teams to use APM to proactively monitor site reliability.
- Software engineers write code and build new features. At smaller companies, software engineers may be involved in every part of the process, including monitoring code in production. Even at larger companies, engineers are increasingly involved in many parts of the software lifecycle.
What steps are involved in setting up application performance monitoring?
In order to integrate application performance monitoring, you need to install agents that track the data flowing through your application. This process is known as instrumentation, and it’s often as simple as using a command line interface (CLI) to automatically install any agents you need. These agents collect and report information on both web and non-web transactions. You can also use custom instrumentation to add additional detail to transaction traces or to block the instrumentation of transactions you don’t want to track. When using a CLI to automate the instrumentation process, you can start sending telemetry data to your APM solution within minutes.
Complex distributed applications use many different services, and ideally, every part of an application should be instrumented. A comprehensive APM tool provides integrations to many popular services such as AWS and Azure, so you can quickly instrument any third-party dependencies in your application.
Ultimately, you can pick and choose which features you need for your application and what exactly you want to instrument. You will see the most benefits from an “all of the above” approach, meaning that you have full end-to-end monitoring, also known as observability, for your applications.
What’s the difference between application performance monitoring and observability?
APM is about monitoring an application’s performance, but many modern application architectures are too complex to monitor and manage with just APM. APM provides a high-level view of how an application is performing, but to get to the root cause of an issue in large, complex applications, it’s necessary to take a more technical approach.
Observability is about having deep, technical insights into the state of your entire system, no matter how large or complex it is. While APM provides aggregated metrics, you also need other tools like distributed tracing to drill down into your data.
Application performance monitoring is one piece of observability, and observability is a superset of APM. With many applications, it’s necessary to have a full observability solution.
To learn more about the differences between APM and observability, see APM vs. observability.