What Is Real User Monitoring? Definition, Examples, and Benefits
Read all about real user monitoring, how it compares to synthetic, its benefits, and the author's personal RUM testimonial.
Join the DZone community and get the full member experience.Join For Free
Real User Monitoring, (RUM), aims to prevent these problems and more. Using a small piece of code, RUM collects data on your end user via their browser then surfaces information like slow load times and performance bottlenecks in a central dashboard.
In this article, we’ll take a look at how Real User Monitoring can help decipher performance problems with real-world examples.
Synthetic Monitoring vs. Real User Monitoring
Let’s start with a common comparison. Synthetic Monitoring, (also known as synthetic testing) creates synthetic interactions with your website to predict performance and monitor uptime. Because it uses scripts to predict behavior, it can’t account for the complex ways users navigate your apps—it will only test for what you ask it to.
Real User Monitoring, on the other hand, takes data from how real users are experiencing your app. RUM is a passive form of monitoring and sits in the background constantly analyzing how your application is performing for end users.
Real User Monitoring vs. Google Analytics
A common question about RUM is “Can’t I just use Google Analytics to find slow loading pages?”
Well, yes you can, but Google Analytics (GA) isn’t a competitor to RUM, and you’ll need to run both as part of your monitoring and analytics strategy. The main difference is that GA looks at where site visitors came from, and how effective marketing channels are in terms of traffic. RUM, on the other hand, is designed specifically for development teams to identify and solve problems within their control, for example, which assets are slowest.
A few more differences are:
- GA uses sampled data for reporting purposes, which can show different results for large datasets
- No code-level performance view. You can see that there is a slow loading page, but GA doesn’t tell you why
- GA can’t give you any user identifiable information, unlike RUM, which allows you to reach out to frustrated users easily
Although both include browser, platform, and device data, RUM should be the choice for your development team.
How Real User Monitoring Collects Performance Data
RUM collects data via a small piece of code embedded on each page. The code sends information directly from a user’s browser. As the user explores your website or mobile app, the code collects the information, which is sent back to a centralized dashboard.
There is usually no performance overhead, as there is no agent, and data is collected both non-blocking and asynchronously.
Here’s a rundown from Alistair Croll and Sean Power in the book Complete Web Monitoring, published by O’Reilly.
Data Collection Process
- Sessionization. The system takes data about these hits and reassembles it into a record of the pages and components of individual visits, along with timing information.
- Problem detection. Objects, pages, and visits are examined for interesting occurrences—errors, periods of slowness, problems with navigation, and so on.
- Individual visit reporting. You can review individual visits re-created from captured data. Some solutions replay the screens as the visitors saw them; others just present a summary.
- Reporting and segmentation. You can look at aggregate data, such as the availability of a particular page or the performance on a specific browser.
- Alerting. Any urgent issues detected by the system may trigger alerting mechanisms.
Good presentation and customization of data is arguably the most important feature of a RUM tool, so the tool you choose needs to do the heavy lifting when presenting the data
Who is Real User Monitoring for?
As a front-end developer, you spend most of your time in the thick of the code-base. You are all about code quality, and how performance issues are affecting end users. When it comes to page performance, pinpointing where the performance issue is usually the most time-consuming task. RUM gives you an easy way to see individual resources causing issues, fix issues across multiple pages, improve performance and prioritize fixes.
If you are a product manager, you are responsible for ensuring your products are meeting the requirements set out in the roadmap. You don’t need the deep code-level knowledge, but you do need to discover high-value pages that perform poorly. The dashboards in a RUM tool will be most important. Monitor trends over time, too.
Where RUM helps a technical lead the most is to assess the health of an application at a glance. There’s no need to interrupt your development team and ask them to manually crawl your website for issues. Prioritize the worst pages in your backlog so you get peace of mind that users are having a great experience.
Benefits of Real User Monitoring
Limitations of RUM
For all it’s benefits, RUM does have some limitations:
- RUM is useful in pre-production environments, just not many people may have the traffic here to get useful information. This is where synthetic testing can help
- RUM can’t track server performance or server level API calls. Rather, RUM tracks users where they are interacting with your application. Many teams use a Real User Monitoring tool alongside an Application Performance Management tool for this reason.
How Real User Monitoring Saved Our Customers 75 Hours per Month
Here at Raygun, we also leverage our own tools to make our product better. When we reviewed our website performance using RUM, we noticed that the XDReceiever calls were not very fast. The reason was that the connection limits to the same domain were saturated, and no caching occurred on the response.
After checking why, it was because the file was being called a lot—which makes sense as every page load in the web app needs to call the API to fetch data.
Because Real User Monitoring collects all the timing data from every request and gives the average amount of time plus the total call count, we could see that even though the call wasn’t expensive, it was called a lot:
USING RAYGUN, WE COULD SEE THE TIMING DATA EASILY
When I multiplied how often it was happening with the amount of time it took to load, it stacked up to a staggering 75 hours of time spent every month just to set up for the cross-domain calls!
Turns out we added this code to support IE9. We cleaned the code, removed support and saved our customers 75 hours per month.
6 Essential Features of Real User Monitoring
For any monitoring tool to be useful in a development team, the huge amount of data should be presented in a way that the whole team can digest. The data must be both actionable and customizable to your needs.
So with those criteria in mind, let’s look at the features a RUM tool must have for developers to improve their web and mobile performance.
Detailed Page-By-Page Session Tracking
Are users getting stuck, and was the problem a third party script or a software error? As RUM tracks individual users, you’ll also be able to see a user’s journey through the application and see where they got stuck. Your development team should be able to isolate the problem from here so no-one else runs into the same issues.
RAYGUN’S SESSION TRACE SHOWS ALL THE INTERACTIONS A USER, MAKING IT EASY TO REPLICATE ISSUES
Performance Data for Every Asset, Web, and Mobile View
Real User Monitoring offers performance timings for every page of your application, with a full waterfall view of assets. This is important data but made even more powerful as it is from the specific user sessions of customers interacting with your application.
Integration with Crash and Error Data
Because each user gets their own user profile, RUM can record a full history of crashes and errors that user experienced. With Raygun’s Real user monitoring integrated with crash reporting, you can cross reference user experience with crash reporting data.
What does UX success look like in your team? Performance monitoring may look very different across job roles. High-level charts don’t help developers, while code-snippets are useless for product managers. A RUM tool should present data in an easy-to-digest way but also provide the diagnostic details you need to fix an issue. Customizable dashboards are a great way to do this.
If your development team knows there’s a problem with a certain browser caused by a deployment, you can save a tremendous amount of time with a filtering system. Raygun, for example, has filters for:
- Anonymous user
- Browser and browser version
- Country code
- Operating system
- Data comparison
Performance success is different for every development team, so customizing data is also an important feature of a RUM tool. Analysing and comparing performance data like browser, country, device, operating system, and version helps developers understand how these dimensions affect performance.
Country, State, and City Geodata
For example, is your target market large shipping companies in Asia, specifically China? You need to make sure anyone accessing your website from large coastal cities is having an optimal experience. Real user monitoring will surface performance data and correlate it to a city so you can prioritize your target market, and spend your resources where they matter.
RAYGUN SHOWS COMPREHENSIVE GEO DETAILS RELATING TO PERFORMANCE
So, What’s the Future of Real User Monitoring?
All monitoring tools must provide details on your end users and give actionable data to help you improve customer experience.
Raygun’s Software Intelligence platform, for example, uses both RUM and Crash Reporting to make discovering and resolving issues easy. Raygun then presents this in data customizable dashboards. You can see exactly who the problem affected, what caused the problem, how many users this problem affected, then all the details you need to fix it.
Published at DZone with permission of Freyja Spaven, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.