The increasing adoption of mobile applications as part of a company’s online services leads to the question whether we need to monitor like other parts of our IT infrastructure. As they are part of our shipped application services we need to ensure they are working properly. However, not every application must be monitored the same way. Additionally monitoring always comes at a certain cost. We need people to take care of the monitoring, we have to prepare our applications to be ready for monitoring and we potentially also have to buy or at least integrate new monitoring tools.
So before talking about how we have to monitor them we need to figure out whether and how much to invest in monitoring. As with classical applications not every application is worth the effort of detailed production monitoring. An obvious decision criteria is business value. If the cost of monitoring exceeds the business value or if no specific requirements for uptime exist then we should not invest in monitoring – at least not beyond basic monitoring.
Business value, however, is not the only criteria to decide whether to invest into monitoring or not. There are also apps which provide business value – or revenue – which do not need any specific application monitoring; simply because there is not a lot to monitor. So whether we need to monitor an application or not, strongly depends on application characteristics and it’s architecture.
In order to find an easy way to decide whether to invest into application monitoring for your mobile apps As shown in the image below we can categorize applications into a set of categories depend on how the utilize online service. Let’s look at the different types of applications a bit more closely.
First we have to differentiate between online and offline apps. The obvious difference is that offline apps do not require any online service to provide full value to the end user. Examples are games or utility applications like a calendar or a cookbook application. If the app does not depend on any external services we do not need to establish any specific monitoring.
For online apps the story, however, is a different one. Online apps are all applications which need some sort of online service to provide at least some part of it’s value to users. This online connectivity does not necessarily need to be real time. Let’s say an online game can post results to a leaderboard or our cookbook app downloads the recipe of the day.
Online service ,however, is not online service. For some services it might not be too much of an issue of the connection to an online resource fails sometimes. If we cannot download the recipe of the day now, it will also be ok to do so in three hours. For other services it is however crucial that they are available right in the moment we interact with the applications using them. We refer to this kind of application as real-time apps as we expect real time access to the service as the offline app itself does not provide any real value. Examples would be a social app like facebook or Twitter or a video streaming application. All these apps require being online to provide any value.
When talking about real-time applications we need to further distinguish between applications that are most likely to be used with a high(er) bandwidth connection like wireless and those which are most likely used with a mobile network. Examples of the first category are online games or video streaming applications. While you most likely use them on your mobile device because it is more convenient you are in a location that provides adequate connectivity. Other applications are primarily used in a purely mobile environment and their main value is that they can actually be used while you are somewhere out in the wild. Examples are twitter mobile, Google Maps, foursquare or similar. These apps provide a specific service for users who use them on the go and they depend on real time data services. A GPS application in contrary is also used while being out in the streets, however, all data was downloaded beforehand so real-time data access is not an issue.
A kind of in between category are apps which depend on external Third Party services. This means that parts of our application services is not under our control. In some cases the unavailability of these services might affect the value of our own application. Examples are Third Party authentication using twitter or facebook or online payment services. If an external login service is not available the user will not be able to user our application at all.
Summing all up the importance of the availability of online services for proper application service is besides business value the main driver for application monitoring. The higher the dependency on external services, the higher the need for application monitoring.
Based on this categorization we can define the monitoring requirements for the individual application types. The table below provides an overview which kind of monitoring is required by a specific application type. The various levels are cumulative meaning that a more online dependent application needs to include the monitoring capabilities of less dependent applications.
|Application Type||Required Monitoring|
|Offline Apps||No specific monitoring required. Collection of crash reports and optionally usage statistics|
|Online Apps||Monitoring of service endpoints in the datacenter and monitoring of global availability. User geography and connectivity analysis for service optimization|
|Broadband Apps||Monitoring using devices or emulators from real networks using defined locations|
|Pure Mobile Apps||Monitoring on real users devices. 100 percent coverage to understand performance which depends on the actual environment devices is used|
|Apps with Third Party Services||100 percent of real user behavior including performance of Third Party Service for both Mobile and Broadband apps as we have no other way of monitoring Third Party service quality otherwise|
Unless your mobile app is purely designed for offline usage, you will require at least some sort of monitoring to ensure service quality. The more your app depends on online service and real-time access to them the higher the monitoring requirements. True mobile apps will require monitoring from a user’s perspective while for others synthetic monitoring might be enough. A pure datacenter centric monitoring however will definitely not be sufficient to optimize mobile apps for user performance.