logo
banner image

Embrace - Upgrading Mobile Observability

The Mobile Challenge

There are a huge number of observability tools on the market addressing a wide range of scenarios - server outages, cpu spikes, applications errors, latency issues, connectivity failures, 404's etc etc. What is remarkable is that, given the huge strategic importance of mobile for many companies, there are very few tools for providing visibility for failures specific to mobile development.

According to this study, native mobile applications account for nearly 90% of mobile device usage. This means that native apps are not only a key component of digital strategy but also that they need to be factored into overall observability workloads. This is especially true for markets such as India, where mobile accounts for over 75% of internet traffic.

This report, commissioned by New Relic, serves as a valuable reminder of the importance of high quality of service on mobile platforms. They found that slow load times and application freezes were a major turn-off for users - 60% of survey respondents said they wouldn’t stay on an app for more than 10 seconds if it showed slow buffer speeds.

Another report, commissioned by Embrace, highlights challenges facing app users and mobile engineers. Half of end-users said they experience some type of mobile app issue (crash, slow startup, unresponsive interface elements) on a daily basis. Mobile engineers reported that monitoring app performance is their top priority, both now and in the future.

Embrace - Mobile First Observability

One product aiming to address these pain points is Embrace, which describes itself as a 'mobile-first observability platform'. As well as providing the typical application-level instrumentation, it also captures mobile-specific diagnostics in areas such as networking, device and OS performance to provide a full picture of the user experience. The Embrace toolkit provides SDK’s to integrate with all the major mobile development platforms.

Given their focus on mobile, they do not aim to be a full spectrum observability provider. Instead, they have developed partnerships with other players such as DataDog and Grafana whose technologies can complement the Embrace toolkit. This seems to chime with the Grafana philosophy that the observability space is an ecosystem rather than a zero-sum game.

Their pedigree is impressive - their technology team includes engineers previously in leading roles at the likes of New Relic, VMWare and GCP. In addition, the leadership team includes Alumni of DataDog, Apple and Google. The company's founders were previously involved in building large scale mobile businesses and their frustration at the lack of enterprise grade observability tooling was the primary motivation for creating Embrace. For example, CEO and co-founder Eric Futoran previously co-founded Scopely, the largest US mobile games publisher.

Putting Mobile First

The problem with most observability SDKs is that they are geared towards applications running on, essentially, a server-side platform. They are not geared for being installed on mobile/IoT systems or for recording mobile-specific telemetry. The Embrace UI has a whole dashboard dedicated to ANR's - to most of us that acronym will be unfamiliar - to mobile developers though, it means Application Not Responding and it is a critical signal.

An ANR is a broken user experience caused by a prolonged app freeze. Getting to the root cause requires understanding the app conditions that led to the freeze. However, virtually every existing mobile monitoring solution only surfaces ANR data that Google exposes, which is a single stack trace taken several seconds after the app became frozen. The result is that mobile engineers waste time looking at snapshots that don’t provide actionable data.

In contrast, Embrace built a thread profiling feature specifically to profile apps as soon as they begin hanging. Mobile engineers can thus review the app state at the time of a freeze instead of several seconds later, which provides a more accurate picture of what actually caused the freeze. For mobile developers, dealing with these issues is not just important in terms of user experience. It is also critical for their application profile, as "badly behaving" apps will be penalised by Google and Apple. Mobile app developers also have to contend with the challenge that their apps will not only be running on different operating systems but also on an enormous variety of devices and networks. Most of these concerns have not really been catered by the existing solutions in the market.

Another major differentiator of the Embrace approach is that, by default, the runtime applies zero sampling at source. This means that clients operating in real-time observability mode can have instant visibility of any exceptions and apply immediate hotfixes before the issue spreads across the user base. Naturally, the flip side of this is that default retention periods are also short.

A Tour of The Platform

So how does Embrace shape up as an Observability platform? If you want to evaluate the system you can sign up for a free trial. Sign Up is very simple and you don't need to enter any credit card details.

Sign Up

Once you have signed up you will see this screen where you select a mobile platform and an environment
This then takes you to the main dashboard where you can either immediately integrate the SDK into your application or take a tour of the system using simulation data.

Integrating The SDK

For our evaluation, we used Android Studio. There are two options for integrating the SDK into your mobile app. You can either manually update your gradle build files and add the Embrace config file or you can install the Embrace Assistant plug-in. We opted for the plugin - which is downloaded from the JetBrains marketplace. Once you have downloaded the plug-in you just follow these steps to install it into your IDE:
Once the plug-in is installed, an Embrace menu option will appear at the bottom of your tools menu:
Once you click on the Embrace menu, option the Embrace Assistant will appear and walk you through the steps to integrate the Embrace SDK into your project:
At Step 4 of the process, the Assistant expects to find a class named Application in your project. If you don't have a class with that name, you will need to add it manually.
Next you need to make sure you have added the Embrace Start method:
After this, you just need to build, run and Verify your app.
Once verification has succeeded, telemetry will begin to flow into the Embrace API and within a minute or so you will be able to explore your app in the Embrace dashboard.

Exploring Your App

As you can see from the screenshot below, on the left hand of the screen there is a navigation pane, with icons to take you to your dashboards and Issues list.
One of the most powerful features in Embrace is the ability to drill down into individual user sessions. This provides rich analytics as well as a step-by-step chronology of the user session. This includes details of user actions, network activity and system events:
The crash screen will attempt to identify the exact cause of a crash as well as providing session metadata:
You can also view a full stack trace for the site of the exception:
As we mentioned above, there are also dashboards covering mobile-specific concerns such as ANR's:
As well as key performance indicators such as User Terminations:
In addition, there are also built-in dashboards for viewing crashes, OOMs (Out Of Memory errors) and network connectivity issues:
Overall, we found the system to be highly intuitive. Even as someone with no previous mobile development, I was able to integrate a basic 'Hello World' mobile app with the SDK in around five minutes. The SDK itself also offers a number of extensibility points for customising log and trace data as well as retrieving attributes relating to the session and runtime environment. Whilst integrating with Android Studio was pretty painless, our initial preference was to use Xamarin - which is not currently supported.

We found that the various dashboards offer useful overviews but for more detailed analytics you will need to use an external tool such as Grafana. This is not problematic however, as the Embrace API exposes a Prometheus endpoint and ships with a dashboard template populated with common queries. There are also integrations for exporting metrics to DataDog, New Relic and Honeycomb. You can then use these platforms for building more advanced custom queries e.g. total crashes broken down by app version/os/device model etc. Unfortunately, though, it seems as though custom metrics are only supported in the Enterprise version.

Pricing

From a pricing perspective there are three subscription tiers:
  • Free
  • Pro
  • Enterprise
The pricing model is interesting as it is not based around users or device installs but on user sessions. The free tier allows for a million free user sessions per year for up to five users. The Pro tier offers pay as you go pricing starting at $80 per 100k sessions, with discounts for annual contracts. The Enterprise tier offers several benefits, including event data forwarding, longer data retention, gold-tier support, and a 99.95% uptime SLA.

Our Conclusion

This is a first-class product. There is no other solution on the market providing a comparable observability solution for mobile developers - whether for gaming, IoT or e-commerce. The UI is intuitive and the feature set is comprehensive.

Pro's
  • Ease of Integration
  • Intuitive UI
  • Mobile-first functionality
  • Extensibility via SDK
Cons
  • lack of support for Xamarin
  • Custom metrics only available in Enterprise edition


Embrace web site: https://embrace.io

Comments on this Article

You need register and be logged in to post a comment
Top