What is our primary use case?
We use multiple APMs, but for smaller projects AppDynamics is too cost-prohibitive. It is a more expensive APM among the competitors, which is fine because it also does a lot more on the auto-detection and the AI side. It also supports a lot more languages. So whenever we hit a project that has the budget and the need, we look to use AppDynamics, especially if the technologies are complicated.
If somebody has a very simple two-tier Python or Node, we can use almost any APM. When we're dealing with somebody who has 50 or 60 tiers, some traditional stuff, some microservices; some stuff is in containers, some stuff is in real instances; there's Node and there's PHP, and there's a bit of C code in there somewhere. This is where we hit a complex case. It's usually a larger app, an app that has existed and evolved over time with many modules at play, making it almost different products, but it's all one big product. This is the type of case where we look towards AppDynamics because we can just drop it in and have it work.
We can't do that with the other APMs that we work with because they just wouldn't work. They'll do this little silo or that little silo, but they won't work with everything. With few exceptions, we have not found any production code that we couldn't make work with AppDynamics.
How has it helped my organization?
I can't compare how it makes things better within my company. That would be like asking someone how air makes their life better.
I don't say that lightly. I've been in other companies in the past without APM. Some of our projects don't have budget for APM at all. They're smaller projects, or they're from a smaller client who can't afford it, or in some cases, they don't want APM. Comparing it to that would be the easiest thing. In those cases, if the project is going right and there are no problems that are noticed, it's fine. But we've had a few carrier projects where there are unknown performance issues or unknown crashes or we're seeing, at 3 p.m., when it's not even a high-traffic period, that everything falls apart all of a sudden: The database is not good on connections; or we see the connections, but we don't easily understand why they're there. In those situations, the projects that don't have APM usually spend more on people hours than the APM product would have cost.
In that case, it's made things better by making it faster to troubleshoot and easier to troubleshoot. We don't want our most skilled people spending 40 hours to find one hotspot, when it could take them 30 minutes. It's not a value-add to let them do that manual, old-school troubleshooting. In fact, even on the projects that have, in some cases, not had the budget to buy the agents that we need, sometimes it has boiled down to using a PoC license, with their permission, to try to prove the value. Some of those clients went ahead and bought it. They understood it was, "Look guys, we can charge you 80 hours of troubleshooting, or you can just buy this license." I don't want to claim that that's every case, but there have been a couple cases where we've converted people and the client has accepted APM - where they might have been hostile toward it - after seeing the value of it.
What is most valuable?
In every APM tool, and this is true in AppDynamics as well, it's that waterfall view where I can see my code hotspots. In APM, it always comes back to that. It's great to have reporting. It's great to have that alerting: Tell me when something deviates from my normal conditions. All the analytic functionality is good for telling me what code to look at. But ultimately, I can't live without that code-level trace. I have to know where things are hot so that I can help the developer with what they actually need to fix. I can't just tell them the app is slow. That's always been the most important thing. In AppDynamics, they make that easier.
There are other products I won't name where you go in and you're looking at 50,000 traces. There's no way to sort and organize those particular traces. In AppDynamics, everywhere I go, there's some sort of grouping and aggregation function, or there's some sort of timeline that lets me zero in more quickly on the traces that I need. They go to more pains to aggregate and bubble the important ones to the top. That removes a lot of manual work; for example, sorting by the ones that took more than a second. I don't have to do that in AppDynamics. Sometimes I do so, in the course of troubleshooting, but for the most part, it tells me. I click on a trace. It's usually a trace that matters, that I can take action on, and that I can have a real impact on.
All those millions and, in some cases billions, of traces, over the course of a couple months, get aggregated into one view that's manageable. The other APMs are good if we don't have millions of requests. As soon as I get into that threshold, I can't look at that many traces anymore, they don't have great ways of looking at the traces in aggregate.
What needs improvement?
What I would like to see might exist, but if it does I haven't seen it. I would like to see something that lets me set real dollar figures, not just to outages, but to the solutions as well. It seems like a gimmicky feature, but for anyone who has to justify their budget within a larger area of the company, or to a client, it would be helpful. I don't want to have it in my face constantly, but I want to be able to access it when I'm looking at problems and have found a problem that I know I need to address. I could flag it off and have AppDynamics estimate how long a person would have taken to find that without it. That would give me a lot of leverage for justifying the existence of APM, which I really need.
Also, I know this is a holdout, we saw this ten years ago, where APM products were starting to crosstalk between each other. I would like to see a return to that because we do use multiple products. I understand that some of the information is in silos, but some of it isn't. If some of this exists, I might have missed it, but I would love to have an integration where I'm looking through logs in Elasticsearch and I could click on my AppDynamics link, because they have a little module, type in the credentials and be logged into AppDynamics. And similarly with the AppDynamics interface: "Oh, look. This server is having an issue. Okay. All this is good info, but maybe I want to take a look in Grafana." I would click over and it would take me to that spot in Grafana: the same time frame, the same filters and place to get me to that particular server, or instance, or container, etc. I would like to see that cross-functionality with some of the more common tools.
Most people run Elasticsearch or Kibana or similar things. Most people run a Grafana or something like that. I'm not expecting them to integrate with their competitors - that might be a hairy situation, although a nice one for us, on the consumer side - but if that type of integration was possible with some of the major, open-source, complementary products, that would be nice, and some of the commercial ones too.
We saw that in the APM space ten years ago, a little bit. There were a couple movements towards that, but I haven't seen that since as much.
For how long have I used the solution?
More than five years.
What do I think about the stability of the solution?
I've been using AppDynamics for almost a decade. In that time, I've seen it run on literally hundreds of applications in that time, and I can quite honestly think of only one situation where it introduced stability problems. I pegged a little of the blame on AppDynamics but a little bit on the app as well. That's pretty good.
There are a lot of products in the APM space, and I've used a lot of them, that have very consistent performance problems, stability problems, or crashing that they'll introduce into the app. The fact that we've only encountered that once, and it was almost a decade ago and it was an exceptional case, is pretty good.
I've never really heard of stability problems and we've used it in some pretty highly important, high-volume apps.
What do I think about the scalability of the solution?
The scalability is excellent. We've never encountered a situation, under loads that we've seen, where we could not scale to meet the needs. We're not running the world's top-ten websites, but we are doing some very high transactions on some very large properties, with a lot of calls. There are very few applications I can imagine that would have scalability issues using AppDynamics. We've seen that across technologies: Some of them are PHP apps, some of them are .NET apps, some of them are a mixture of all of the above. We have yet to see it cap out or not be able to scale.
How is customer service and technical support?
We've received technical support in two areas.
On the pre-sales side, it's always been extremely professional, really great, even in smaller license situations. If there's somebody available and within a radius that can realistically come to a meeting, they often will. They've worked through some very peculiar application setups with us, where we're not sure how we're going to approach it. We've always been very pleased on that side.
On the post-sales side, as well, once it's deployed, we haven't had to use them a lot. There haven't been a lot of things we've had to contact them about, but where we have, the issues have mostly been around things like training, or understanding. We just haven't seen that many problems. We've always found the training material to be very descriptive. They've always taken the time to hand-hold us through: "Okay, this is what you're seeing, and this is why you're seeing it. Why don't you go look at this in the app." They've always taken the time.
I can't comment on the troubleshooting side because we haven't needed to do it. We may have had a minor case where we needed a quick answer to a license issue or we couldn't figure out why an agent wasn't connecting. They've always been excellent there, but we haven't encountered an "Oh my God," big issue, where it wasn't just something stupid, that we were overlooking. They've been great on that. They've been able to identify those things, but we haven't had to use them a lot on the post-sales side of things.
How was the initial setup?
In terms of the integration and configuration of AppDynamics in our AWS environment, it's been pretty seamless. It doesn't matter if we've been using real instances or if we're using a Kubernetes environment or a docker environment - we've got quite a few different environments. We've never encountered an integration problem, or any issues deploying either manually or via our automation scripts. It's always packaged in very nicely with them.
I can't think of any problems we've encountered that I could critique.
The Kubernetes deployment is three lines of code or one command. They've made it amazingly simple. We just put in into a config file and everything pretty much just goes in a modern environment.
The only one that's been hard is some of the compiled apps on C, but that's such a rare case and it's only hard because it's been a non-.NET compiled app. Everything else has been seamless and just one click. The C apps are rare and we know they're going to be hard, that's just the nature of the way they're designed.
What was our ROI?
With very few exceptions, we can justify the cost per project and definitely, in the wash of things, it saves money, overall. The only problem that we've had with this is sometimes trying to show that justification.
It's really easy sometimes, where we spend 30 minutes or an hour on the interface and we find a laundry list of problems that we've got to address; big problems. Somebody who's not familiar with APM on the client side will look into and say, "That's it. Why did we need that product for that?" You needed that product because it took 30 minutes instead of weeks and customer complaints, etc.
The product has always been worth it, but trying to bubble up the value has not, I admit, been easy, because there's no value attached to a problem that we find. That's the only problem we've encountered around cost. We have always been able to justify it.
Which other solutions did I evaluate?
We actively use Instana for some cases as well, and sometimes we use Instana and AppDynamics side-by-side. We do use Dynatrace and have used Dynatrace in the past. Those are the ones that we're using today.
We've used and evaluated, at some point in time over the last ten years, another dozen vendors. The choice is not made lightly. We've actually tested all the other ones.
There is some stuff that everyone supports. Every APM supports Java. If somebody has a simple Java app, any APM is usually going to work. It's not going to be as stable, sometimes, but when we get into the real-world apps where you have a heterogeneous network of different technologies at play on a mixture of platforms, that's where a lot of the APM tools stop working as well as AppDynamics works.
Through our history, AppDynamics has always been the one on top of making sure that it continues to work. It works from the database through to the browser, whether it's a mobile or a desktop. I can see that full interaction. I don't get that out of any other APM with as many platforms.
What other advice do I have?
I see a lot of people migrate towards one product in particular in the market and they never really try the other APM vendors. They'll look at the page and they'll look at the price, but sometimes you just have to pay a little more. Importantly, it's the features that you get that make it worth it. I won't name the new products, the ones people migrate towards a lot - especially developers, it seems like that cohort instantly likes them - but AppDynamics and a couple of the other ones as well are really good for production. AppDynamics, in particular, excels on that. Don't just install AppDynamics, install a couple of them. Pick four or five and run them in production, pick a couple nodes even, and compare the interfaces and the ability to use the interfaces. Most people will quickly find that there is a real difference between them. Some people will gravitate, still, towards certain products rather than others, but I haven't seen a person yet, who has not loved the AppDynamics features and portal and how it does things.
You can't just look at the feature list, spend five minutes on their web page, and then dismiss it. You have to run it on your app, see how easy it is and how much time it saves you.
I have not used the marketplace version. I've used the traditional, agent-based licensing. The reason for that is partly to do with the affordability. I can take the same license for the on-prem and put it on AWS as well. We always use the same license, because we don't know where it's going to end up.
In terms of integrating AppDynamics with other products within our AWS environment, the way to describe that is that we're using it to watch certain services. Obviously, if our database is using endpoints within AWS, which a majority of the apps are, such as Redis or RDS nodes, AppDynamics has seen those. All of the integrations that I can think of, except for the database, are web-based. We see the database integration and we see all the web-based integration. So we have integrated with other products.
We haven't seen a case where we haven't been able to see the interaction between our app and the service. Just to be clear, I have seen other APM products that miss those integrations. You plug them in and you don't see your SNS calls. Usually, it's solvable, but you've got to troubleshoot and set up some special code and it becomes painful. I can't think of a case in AppDynamics where we just didn't plug it in and start seeing those calls right away.
I would rate this solution a nine out of ten. I've been using it for so long, and have used so many other APM vendors, and it really is the most stable one. It works with the most conditions that we encounter. The only reason I take off one point is the cost. I can't give it a ten because it is not a cheap product. None of them are. The price is fair, but I could use it on more projects if they had a lower price.
Disclosure: My company has a business relationship with this vendor other than being a customer: Partner.