If you were to pick two tools that would appear on most enterprise APM (Application Performance Monitoring) evaluation shortlists it would be AppDynamics and Dynatrace.
Both didn’t become leaders in APM overnight but did so through different journeys, despite having similar foundations in Java diagnostics. Dynatrace started more as a pre-production performance tool in 2005 for developers and QA testers, while AppDynamics was founded in 2008 with production use cases focusing more towards operations and application support teams. Today, pretty much both of them have expanded into each other’s territories covering nearly all performance monitoring use cases an enterprise could want.
In the following post we will uncover the truth behind “Newspeak” (Or marketing speak) and help you understand what each tool offers, and which one best suits you.
Psst! Concerned about application performance? Harness continuously analyzes applications at runtime and provides actionable, code-level insight for all new or increasing errors and slowdowns across the software delivery lifecycle.
If you want to monitor how your application performs and behaves in production, you have 3 common ways to get an inside view:
Before drilling-down into both AppDynamics and Dynatrace it’s important to understand the history behind each of the product sets as both vendors have evolved through several acquisitions and years of organic growth.
For the benefit of this comparison we’ve decided to take on the core on-premise APM offerings from AppDynamics and Dynatrace using Gartner’s five dimensions. Dynatrace’s APM is also featured in a separate SaaS product called Ruxit which was not covered in this post.
The first dimension of APM is End User Experience Monitoring (EUEM). It’s a term used to describe the multiple approaches to monitor what an end user might be experiencing.
The company divides its EUEM capabilities into 3 products: “User Experience Management”, “Synthetic Monitoring” and “Data Center RUM (Real User Monitoring)”. Don’t be scared of the names, they are meant to sound explosive and expansive while they simply monitor the user experience from different perspectives.
The “Synthetic Monitoring” service displays stats from different locations around the world. It’s also helpful for simulating test executions, comparing performance across problematic behavior patterns, monitoring host availability and third party services or even simulating high volume traffic.
“Data Center RUM” is the last solution which offers an agentless approach to end user monitoring by sniffing incoming HTTP requests (and other protocols) so it can piece together the latency of end user requests without needing to explicitly instrument web pages or native mobile apps.
To sum up: JS injection / SDKs, simulating visitors from different locations and network activity.
The “End-User Monitoring” category also expands into 3 different products: “Browser Real-User”, “Browser Synthetic” and “Mobile Real-Time” monitoring. In simple terms, you’ll be able to monitor user experience and interactions and benchmark your performance from specific regions.
“Browser Synthetic” will monitor the availability of your app 24/7 and will report its latency around the world. Similarly to Dynatrace, it simulates traffic from browsers to assess the actual end-user experience. You can also retest conditions in order to eliminate erroneous results, or confirm them.
“Mobile Real-Time” is all about native mobile apps, offering the same measurements and options, only across mobile apps and devices. It allows to triage the steps the user took before the app crashed, view latency across services as well as errors so you’ll be able to identify and
Bottom line: Dynatrace has breadth and depth in this area through their various acquisitions of Gomez, Keynote, Adlex and organic growth but their products are less modern and unified than AppDynamics. For example, there is no single-pane-of-glass across User Experience Management, Synthetic Monitoring and DC RUM whereas with AppDynamics their products are less mature but easier to use and navigate.
This is perhaps the coolest dimension of APM where you get a live topology map of how end user requests traverse the many application run-time environments. For example, in a microservices architecture, a single user transaction could touch up to several hundred different components and servers, with each hop potentially contributing latency. With topology maps, you should be able to understand where the latency is spent for the application.
Both Dynatrace and AppDynamics have similar application architecture modeling capabilities.
Captures all user requests with limited stack traces (that include only the topmost elements). These profiles are known as “PurePaths” which visualize the journey of every request. Transaction profiling has always been a strength of Dynatrace, and they were one of the first vendors to trace transactions across heterogeneous run-time environments (e.g. hybrid JVM and CLR architectures). Dynatrace provides multiple drill-down options from a given PurePath so it’s possible to slice and dice data from different angles.
Captures business transaction anomalies with complete stack traces. Similar in a lot of respect to Dynatrace but perhaps more intuitive without the need to frequently drill-down/rotate views. The rest of the available information is automatically bubbled up to you, so it’s visually easier to understand and act on.
Bottom line: While on the outside both vendors successfully profile business transactions, they do so in very different ways. Both solutions capture the response time of every transaction execution across distributed environments.
Dynatrace has designed its agents to capture limited stack traces for every transaction execution, whereas AppDynamics has opted for the anomaly diagnostic approach, meaning that more complete stack traces is only captured when a performance baseline or threshold has been breached. Each approach has its pros and cons depending on your monitoring use cases and requirements.
The look and feel of Dynatrace is very similar to that of an IDE so navigating stack traces and metrics is more user-driven, meaning you can pretty much customize whatever view you want using the dashlets inside Dynatrace.
Captures stack traces and performance metrics for Java, Scala, .NET, PHP, Node.js, Python, C/C++, iOS and Android. The first difference you’ll notice is that the AppDynamics data is laid out in a more progressive/intuitive way, it also displays less data on screen at any given time. Instead of right clicking on data you can use the left-hand side navigation to switch contexts. Stack traces are richer than what Dynatrace provides but the tradeoff is that you only get this data for anomalies.
Bottom line: Honors are fairly even for both vendors in this category. Both tools were built to provide stack traces/metrics and this has become a core competency and differentiator against some of the other older vendors in APM like IBM, HP, CA and Microsoft.
You’ll find similar levels of code diagnostics for the most common platforms (Java/.NET) with both tools but it’s worth checking in advance if you’re running on other programming languages like PHP, Node.JS and Python as stack trace data and metrics will vary.
New in Dynatrace 6.3 is the PureLytics feature. The PureLytics stream is optimized to send data in realtime into Elasticsearch for analysis, including user visits and actions, with Kibana’s dashboard on top.
AppDynamics has another product called “Log Analytics”, a new capability that indexes and analyzes log files, similarly to Splunk and ELK. It collects structured and unstructured data, displays application issues and present errors that occur in real-time. You can search through these errors and create custom alerts or dashboards, to understand how.
Bottom line: AppDynamics provides log management features.
While both Dynatrace and AppDynamics offer you performance monitoring features, they don’t offer granular support when it comes down to runtime errors or exceptions when your application breaks. You’ll be able to identify performance issues, understand how long it takes for a business transaction, page or request to load or even experience what your users are experiencing, but the lowest level of granularity you’ll get to in production is the class and method names of where latency is spent.
Many teams who use an APM tool also choose to add Harness to their monitoring stack. With both tools combined, you’ll be able to identify errors, and view the source code related to the issue with the exact variable state at the moment it happened.
Harness analyzes exceptions and log errors in production, and overlays the variable information from the moment of error over the actual source code of each method in the event’s stack trace. This will give you the ability to analyze the exception or log error as if you were there when it happened.
Bottom line: Whether you’re using an APM tool or not, the only way to get down to the real root cause of each error is to get its full source, stack and state. If you’re a Java or Scala developer, you should give Harness a try.
We were actually quite impressed with the installation process, which is completely self explanatory. The company offers several installers for Windows, Linux and Mac OS, that contain everything – agent included. You can also run it all in a preconfigured Docker container.
After the installation you’ll be asked to connect the agent with the server, and you’ll be presented with video guides for each environment, if you’ll need assistance.
In large scale environments you will have to install multiple components so that Dynatrace can scale. For example, Dynatrace agents communicate with collectors which then communicate with the central Dynatrace server. You’ll need to add more collector servers as the number of agents increases over-time.
After signing up to the service, you are presented with an installation screen that has 4 steps and no further information. We looked for a download kit or instructions, but couldn’t find them. It turns out that AppDynamics needs some time to set up your environment, and you can’t start using it straight away. Although it makes sense, this was not explained on the main screen, and it took over an hour until we got our welcome email and full dashboard.
The AppDynamics architecture is simpler than Dynatrace to deploy as it only requires agents and a central management server known as the controller. AppDynamics collects and transmits much less data than Dynatrace so it doesn’t require additional collector servers to scale. Although it requires an additional agent per machine for infrastructure metrics.
Bottom line: Both tools are relatively simple to get up and running. Due to the differences in data collection and transmission, AppDynamics is slightly easier and cheaper to scale for larger environments.
The company offers 2 dashboards: a local desktop client (that feels like a weird version of Windows 2000), and a web dashboard.
The web dashboard displays high level information, that includes user experience and satisfaction, your app channels (web or mobile) and the list of processes currently running.
If you’ll find an issue or error and would like to analyze it or get more information about it, you’ll have to switch to the desktop dashboard.
The good news are that AppDynamic are no longer using a Flash based dashboard! The somewhat bad news are that the company still requires Flash support, since some parts of the dashboard still need it to tun. You have a full, detailed web based dashboard that offers an overview, and an option to drill down into the information you want.
Bottom line: Dynatrace 2-dashboards-setup could be a hassle for some, and it feels a bit outdated, especially if we need to switch between the two if we want to get more in-depth information about different scenarios. AppDynamics has a unified UI across all products/features but still has elements of Flash present.
The Dynatrace plug-ins page is displayed by categories, including ecosystem (Docker and SharePoint), Big Data (Splunk and Apache Cassandra), Notification (JIRA, PagerDuty) and many more. However, we’re not sure if it’s the lack of design or the relatively short list, but the library feels pretty basic to us.
The company has an open platform for developers, allowing them to add their own plug-ins to the Exchange marketplace. The marketplace currently contains 140 plug-ins, and you can even send requests for the plug-ins you need and can’t find.
Bottom line: We are always in favor of community based plug-ins that keep on growing thanks to the community.
Both companies offer a valuation period to try out the pro version, followed by a downgrade to the free-and-lite version. If you want to know how much the pro version will actually cost, you’ll have to work hard in order to find it out.
Price is influenced by a number of factors, such as number of application servers, web servers, user sessions and other factors. You will have to talk with the sales team in order to get a proper quote, as pricing is not available on the Dynatrace website. The average deal size from other sources states is $10,000 for a yearly subscription.
The company’s free plan offers limited agent units per product module and limited data retention. Pro pricing is published on the AppDynamics website and starts at $3,600 per unit per year (e.g. JVM/OS Instance/Processes). If you’re not from the US, a different pricing page loads up without the exact pricing details.
Bottom line: Both companies offer a free plan, but both differ when it comes to pricing transparency. AppDynamics publishes pricing, Dynatrace does not. However, both vendors have multiple products which are priced using different metrics so it’s inherently complex to price for both unless you speak to someone in sales.
Both tools have been around for quite some time, although it feels like AppDynamics are the more relevant, up-to-date choice while Dynatrace is the old and “legacy” option. But we know that we can’t judge an APM tool by its cover (or website, in this case).
Each company offers a wide range of analytics and analysis tools, so that you’ll be able to understand what your users are experiencing and of course, monitor your systems. So if you’re looking for a cut-through definitive decision, you’re out of luck.
AppDynamics and Dynatrace offer a variety of features, some that might be ideal for you and some that might seem redundant. We encourage you to use the free trial with both companies in order to get a better sense of what you’ll be dealing with and see which tool works better with your stack.
Enjoyed reading this blog post or have questions or feedback?
Share your thoughts by creating a new topic in the Harness community forum.