Operations | Monitoring | ITSM | DevOps | Cloud

Request Metrics

Measuring First Input Delay (FID)

First Input Delay (FID) measures how long the browser took to respond to the first user input event. It’s one of several Core Web Vital metrics that measure how real users perceive the performance of modern web applications. New measurements like First Input Delay are increasingly important as JavaScript and SPA’s do more work on the client side.

Web Performance Profiling: Nike.com

Google has long used website performance as a ranking criteria for search results. Despite the importance of page experience for SEO, many sites still suffer unacceptable load times. Poor performance is often a confluence of factors: slow time to first byte, hundreds of resource requests, and way too much JavaScript.

Privacy and Ethical Web Analytics

Web analytics is often based on invasively collecting and aggregating user data. But web analytics doesn’t have to be an invasion of privacy. A growing movement of businesses, including performance monitoring services like Request Metrics, are working to create sustainable web analytics tools. Tools that give web developers the metrics they need to improve their websites without compromising the privacy of our users.

Fastest News: Best Performing News Website

News teams often compete to break the story first. We think they should also compete on being the first to load their website. Let’s apply our web performance skills to a real world example: which news website has the best performance? Let’s solve this question by loading the homepages of some large news sites. A sampling of Alexa’s Top Sites gives four test candidates: Google News, CNN, The New York Times (NYT), and Fox News. Take a look, which feels fastest to you?

Breaking Out of Webpack Based Build Chains

Javascript build chains have gotten outrageously complicated. Let's create one that isn't. Request Metrics monitors how real users experience the performance of your production websites. We need a JavaScript agent to pull performance data out of the browser. Watch as I calmly Bob Ross my way to a Webpack-free Typescript build pipeline with just a few NPM packages.

Using the Beacon API

Users are so annoying! There they go, leaving the page before we can save the data to the API. Back in the old days, we would attach a `window.unload` handler and try to send an AJAX request, but this was slow and unreliable. Enter the Beacon API to give us a better way. The Beacon provides a reliable way to send a small amount of data *after* the page has been unloaded. It's not bound to the lifetime of the page and it doesn't slow down the user.

Using NGINX as a Queue for JSON Payloads

Request Metrics is a performance analytics tool. As such, we need to build a data ingestion pipeline that will consume performance data and process it. One common approach to ingest is to shove incoming data into a queue. We like simple things, and figuring out fancy distributed queues is anything but. So we're going to eschew best practices and use NGINX as our queue!

Episode 17: User Sign Up and Simple Access Control

Request Metrics won’t be very successful if users can’t sign up! We recently completed cookie based user authentication and distributed session using Redis in ASP.NET Core but neglected initial sign up. Now we finally go back and write some boring forms and CRUD logic. A rich set of internal admin tools helps with customer support, system monitoring and visibility. We’ll start our suite of tools with a user admin page that lists all users in the system.

Episode 16: Using Redis for Distributed Sessions in ASP.NET Core

We need distributed session. Spoiler: We DON'T roll it ourselves. In-memory sessions stop working as soon as there is more than one server. Most production environments have more than one server so the session issue needs to be dealt with. There are two options for sessions in a web farm. First, a load balancer can be used to lock each user on a specific box. This lets us continue to use in-memory sessions. The second is switching from in-memory to distributed session storage.

Episode 15: Cookie Authentication in ASP.NET Core

Core Identity is the officially encouraged method of authenticating users in ASP.NET Core. As you might have guessed, we're not fans of the heavy handed, black box approach needed to make Core Identity "Just work". We want to use as much of the existing ASP.NET Authorization framework as we can while avoiding Core Identity. Thankfully, ASP.NET Supports cookie authorization without Core Identity!