Embrace has an exciting new dashboard capability in the wild world of network requests: the Endpoint Grouping feature. Mobile developers and SREs know the pain points that come with observing network endpoints. By rolling up many endpoints into a few groups, they can monitor networking more efficiently and build better APIs.
Measure real user experiences, not backend SLAs
No app is an island. Your mobile app lives, and dies, based on how smoothly it can POST
, GET
, and occasionally PUT
information over a network. The user experience hinges on network performance, and certain issues like connection errors are invisible to the backend. Your backend might send a 200, but how long did it actually take for the user to see anything change in their app?
These dependencies are often the root of performance problems. Imagine your login screen takes forever to present an authentication result, or image uploads fail more often than you’d like.
And even if your endpoints are impeccable, chances are you rely on other services and tech stacks. Internal engineering teams, infrastructure providers, ad suppliers, analytics capture services, observability tools… the list of potential causes is long! Good luck getting each party to use a consistent naming structure, too.
So, how do we keep an eye on all this?
Too many endpoints, too little time
Your app likely has more unique endpoints than you can shake a stick at. Reviewing them one-by-one adds an implausible amount of mental overhead for a team. You need a way to bundle related paths together, and luckily Embrace’s dashboard exists to aggregate high-cardinality data like this.
Consider an example eCommerce app. The app has five types of GET
endpoints:
/api/v2/product/<product_id>
: pass a product ID and receive attributes of that product./api/v2/product/latest
: a parameter-less request that receives a list of product IDs./api/v2/product/favorites/<user_id>
: pass a user ID and receive a paginated list of product IDs that user has saved./api/v2/product/repeat/<user_id>
: pass a user ID and receive a paginated list of product IDs that user has purchased/api/v2/product/suggested/<user_id>
: pass a user ID and receive a paginated list of product IDs that are generated by a recommendation engine.
With thousands of products and hundreds of thousands of users, any given day might have millions of unique endpoints, each one probably called only a few times.
Clearly, many of those endpoints are related: /product/123
and /product/789
differ by product ID, but the same service is used to receive, query, and return requests.
Our original grouping logic pulled together any endpoint with shared, common prefixes. But that kind of one-size-fits-all approach to endpoints left many getting over-grouped.
/product/<<wildcard>>
covers our product endpoint but also might cover unrelated requests at /product/latest
.
Attempting to group more broadly, by maintaining separation between products, would minimize the signal you get from monitoring endpoints. While each list-of-products endpoint is returning different results, they may all be called from the same spot in the app, and lean on the same backend stack with only minor differences.
In creating an optimal solution, we needed something that would provide flexibility for the teams that will use the feature. Endpoints need to be both rigid and precise when needed, and loose and general for any wider recall.
Build the rules that work for your system
With our update, you can set your own rules! Go as detailed or broad as you want. We provide a simple way to build regex-inspired pattern-matching rules to define a rollup.
We recommend starting with highly specific, exact-match endpoints. From there, add on generic catch-alls to broaden the groupings as needed. Here is how our eCommerce app above could go from millions of unique paths to three groups:
Note how the rollup pattern matching allows for multiple sub-patterns to be wildcarded. Our goal with the new Endpoint Grouping was to give developers the ability to write nuanced rules that reflect the patterns of their routes. Each component can be finely-tuned to go from general to specific.
Find problems faster
The ability to customize endpoint grouping means you can focus on major changes and not miss issues buried in the noise. Grouping related endpoints gives you a starting point for that search.
Once you’ve identified a problem with one group, you can quickly use Embrace’s network pages to drill down to specific paths or user sessions. You can even look into specific requests within specific sessions, including capturing the network payload that was delivered!
Grouping by endpoint and session allows you to quickly make sense of failures and triage their importance. For instance, if you notice a spike in 422 errors, you can quickly dig in and might see that the issue is isolated to sessions from an outdated app version and is connected to a user flow that no longer exists in your current app. You’ve learned that you don’t have to debug an issue in current versions, saving you from the headache of sifting through logs or manually testing the endpoint.
How to get started
With the ease of use that comes from grouping endpoints, there’s no time like the present to set up your first rule!
Head to your Network Performance page in the Embrace dashboard, select an endpoint, and click the ? (magic wand) button. A tooltip should pop up, informing you whether or not a rule already exists for that endpoint:
Add a name, a pattern, and (optionally) an example to test:
Your new rule will show up under “Wildcard rules” in the Settings tab. You can create, modify, or remove rules from here as well:
All new data from your app(s) will apply this rule, with matching endpoints grouped in one easy-to-monitor spot:
Flexibility for your unique needs
Embrace understands how mobile teams work, and we know that every team is different. That’s why we design our solutions to be flexible enough that users can solve problems specific to their applications.
Whether you’re a small startup or a large enterprise, you can tailor Endpoint Grouping to fit your specific needs. Need to watch a particular set of endpoints closely? No problem. Want to create broad catchalls to get a high-level overview? You can do it.
Our commercial product is here to make mobile networking less of a headache. With Endpoint Grouping in the Embrace dashboard, you can finally get a handle on your network endpoints, troubleshoot more efficiently, and customize monitoring to suit your unique needs. Happy monitoring!
Get started today with 1 million free user sessions.
Get started free