AppDynamics recently released Mobile Real User Management (RUM), a sophisticated solution for end-to-end monitoring of mobile apps. AppDynamics offers application performance monitoring (APM) which lets users not only analyze their applications but complete end-to-end transactions. Therefore monitoring with AppDynamics supports database systems, application container, web-applications and mobile apps.
InfoQ got in touch with Maneesh Joshi, senior director and head of product marketing and strategy at AppDymanics, to talk about AppDynamics and the recently release services:
We are working on of the fastest growing industry - especially when looking at mobile. We can't have long release cycles but need to respond to customer demands more or less immediately. This is where AppDynamics excels: It basically answers three important questions for developers and business people: How is my performing? What is the behavior of my users? Who are my users? Based on these answers, the app can be improved and rolled out.
"How is my app performing?"
According to Maneesh, "in the field of mobile, performance issues usually result from problems in the backend layer or from poor or unreliable network performance". AppDynamics offers end-to-end monitoring to identify transactions that are too slow. Furthermore, developers are able to collect data for crash analytics up to one year for free within a SaaS offering. To enable crash analytics for a mobile app, a developer has to download and include AppDynamics' SDK - available for iOS and Android. A background process then starts to collect information about crashes, network status or call times. The data is not sent immediately but in a resource friendly way when there is enough battery capacity and network bandwidth.
"What is the behavior of my users?"
"The mobile development cycle is different", Maneesh continuous, "it is agile, strongly based on how customers actually use the app." While there are many offerings for A/B-testing to build up knowledge about user behavior, AppDynamics focuses on analyzing how much time a user spends on certain screens or what UI elements are clicked. Developers can use to mechanisms to collect this kind of data: "Info Points" and "Timer APIs". With the help of Info Points, it is possible monitor specific methods in the application and gain insights on how often a method was called and how long it took to return a value.
private void downloadImage(URL url) { CallTracker tracker = null; try { tracker = Instrumentation.beginCall("com.example.android.awesomeapp.ImageDownloader", "downloadImage", url); //download image. } finally { Instrumentation.endCall(tracker); } }
The Timer API lets developers measure arbitrary time intervals during application execution. Timers can span various method calls and levels and might also be nested.
public class MyActivity extends Activity { @Override protected void onStart(){ Instrumentation.startTimer("Time Spent on MyActivity"); //your code here. } @Override protected void onStop(){ Instrumentation.stopTimer("Time Spent on MyActivity"); //your code here. } }
"Who are my users?"
Another piece of information that AppDynamics is able to provide in this context is deeper knowledge about the user and the user's device. AppDynamics lets developers analyze data by platform, device type or for example location data.
Maneesh:
Developers can now plan their roadmaps based on this data. You can analyze what devices are slow in what cases and prioritize bugfixing and feature development. Customer engagement can easily be visualized, so features can be planned on business data to maximize conversion rates. Business people and technicians can now look at the same data to improve their product."
There is a free AppDynamics "Light" plan with all services also contained in the "Pro" edition. The difference is the time range available for data analysis and the number of agents to monitor parts of the application stack. The free plan only covers one agent per application component (Java, Node.js or PHP).