By Chris Tozzi
RUM and APM are two important acronyms to know if you work in software development or DevOps today. Moreover, not only is it important to be able to define RUM and APM — It’s also critical to understand the similarities and differences between each type of software monitoring process.
Most important of all, it’s essential to understand what both monitoring solutions have to do with each other — because although RUM and APM are distinct concepts and practices, they can complement each other and help you achieve your overall goal of delivering quality software.
This article explains what RUM and APM mean, what the differences are between them, and how software delivery teams can leverage them to accomplish their goals.
RUM, which is short for real-user monitoring, means what it sounds like: It is the practice of using data from an application’s real-life users to monitor and understand application performance.
How does RUM work?
RUM tracks metrics such as DNS timing, time-to-first-byte, APDEX score, full page load time and the time it takes to load specific elements. These metrics are collected by monitoring actual user sessions. By monitoring real-user data in this way across a variety of end-user configurations, browser versions, operating systems, locations, etc. software delivery teams can identify problems that undercut the user experience and user satisfaction.
Real user monitoring vs synthetic monitoring
RUM is often defined in opposition to synthetic monitoring. Synthetic monitoring involves using synthetic transactions, such as pinging a service, to monitor application availability and response time. The performance data created by those transactions are distinct from data created by actual users when they are using your application. When used together, RUM and synthetic performance monitoring are typically known as Digital Experience Monitoring (DEM).
It’s important not to confuse RUM with what is sometimes called real-user testing. The latter is a practice that happens in the world of software testing when QA engineers study how real users use an application. Real-user testing is not a passive technique and does not directly relate to real-user monitoring.
What is Application Performance Monitoring (APM)?
APM stands for Application Performance Management or Application Performance Monitoring. I tend to prefer the former term because it emphasizes that APM is about not only monitoring application performance but also managing and optimizing it — Nonetheless, some people think of APM as being primarily about monitoring.
Why is APM important?
APM has two goals. The first is to ensure application availability and avoid downtime. The second is to optimize application performance by minimizing response time, avoiding bottlenecks and ensuring that an application can scale as user demand fluctuates. (Cost optimization is also a factor in optimizing application performance; you don’t want to spend any more money hosting an application than you need to spend in order to meet a required level of application performance.)
How does APM work?
There are a number of techniques and data types that can be used to perform APM. RUM, described above, is one. When working with an infrastructure monitoring solution you may need to do some infrastructure planning, which means tasks such as deciding when to increase server disk space or which type of virtual cloud server instance to use, is another component of APM, because it helps optimize application performance. Arguably, APM even extends into the realm of application development, since you need to optimize the code you write if you want to optimize application performance. For example, some Java monitoring tools include lightweight JVM profilers aimed at profiling applications in productions without creating a lot of overhead and slowing them down. Modern application stacks contain multiple components, often deployed as microservices and often running in orchestrated containers. They also often include web servers, databases, search engines, and message queues, among other things, all of which need modern observability tools that can correlate performance metrics, logs and traces, and help devops identify potential performance bottlenecks and minimize downtimes.
Thus, APM is a very broad category important not only to devops and other practitioners, but also to business. APM encompasses a range of processes and strategies that support the goal of keeping applications available and performing optimally.
RUM and APM
Perhaps the best way to think about the relationship between RUM and APM is to approach RUM as one specific technique that can support your overall APM strategy.
As noted above, RUM is a specific type of application monitoring that relies on the passive collection of data produced by real users to identify application availability or performance issues. On its own, RUM won’t provide all of the insight that you need to guarantee application performance in all respects. For example, it is typically not very useful for optimizing application performance at scale, since it is hard to know how your application will perform when the number of users doubles if the only data you are looking at is real-user data that reflects the current number of users. Synthetic testing is a better way of simulating and studying the conditions you’ll have to contend with if you need to support more users.
On the other hand, RUM provides insights that are difficult to achieve through other APM techniques. Above all, it is the best way of knowing how real users actually use an application. For instance, if you want to know which activity users engage in that triggers a slowdown in application performance, RUM can help you to do that. Other types of monitoring cannot; it’s hard to synthesize actual human users.
So a term like RUM vs. APM is a bit misleading. It’s best to view RUM as one of the key techniques for building an overall APM strategy.
RUM beyond APM
It’s worth noting, too, that the usefulness of RUM is not limited strictly to supporting a broader APM strategy. RUM can also help to achieve goals that fall beyond the scope of APM.
For example, RUM can help you trace a user’s journey within your application by identifying which features users use first when they open the application, how long they spend using different features, and what they are doing before they close the application. This type of data is valuable for planning updates to your application, as well as for marketing purposes.
Another key advantage of RUM is that it can help with crash reporting. When you perform RUM, your end-users typically interact with a client-side frontend that may crash or experience other stability issues independent of the backend. Getting this information via APM is harder because you usually don’t have a good way of collecting data from within an end user’s local environment; APM only helps you monitor the server-side and backend components of an application. Frontend performance and reliability are equally important for delivering a quality user experience, and RUM can provide important insights in this regard.
RUM and APM are both important techniques for optimizing application performance and achieving a happy end-user experience. One is not a replacement for the other — In fact, RUM is an important part of APM in many cases. And as we’ve noted, RUM can even help you achieve goals that extend beyond APM itself.
The bottom line: If you haven’t yet added RUM to your application management toolset, now is the time to explore the possibilities that RUM offers. It can help you do APM better, and it may help you optimize the user experience in other ways, too. Looking for a Real User Monitoring solution? You’ve come to the right place.
Chris Tozzi has worked as a journalist and Linux systems administrator. He has particular interests in open source, agile infrastructure, and networking. He is Senior Editor of content and a DevOps Analyst at Fixate IO. His latest book, For Fun and Profit: A History of the Free and Open Source Software Revolution, was published in 2017.