Application Performance Monitoring and Dependency Mapping
Application Performance Monitoring and Dependency Mapping
When it comes to the developer toolkit, application teams are very familiar with application performance monitoring (APM) tools and their place in the software development lifecycle. However, when it comes to software intelligence and dependency mapping, how does it compare and work with APM tools? How exactly do application performance monitoring tools and dependency maps differ? And can they be used together?
What is APM?
So, what does APM do? APM tools help manage the performance of software applications to monitor availability, transaction times, and performance issues that could potentially impact the user experience. Perhaps the most crucial consideration of APM tools is the end-user. APMs are constantly searching for errors that could negatively impact the experience of the consumers of a particular application. APM tools help operations teams track and monitor the performance of applications to spot and fix performance problems before they can negatively impact the user experience.
This is exactly how software companies sell APM tools. They can look at performance and identify how a page’s one-second delay in load time is causing sales to plummet by a certain percentage point. The data provided in the APM reveals performance issues that may be preventing user conversions or other business metrics.
While the focus of APMs is the end-user, they also assist internal team members in operations (Sys Admins or SREs) to monitor performance and detect issues before they become problematic. It is the purpose of an APM to identify sluggish performance before it causes an outage.
How APMs Work
APM tools have agents that sit across entire production application ecosystems to monitor performance, runtime, and behavior of application code. Controllers receive real-time performance data from the agents, visualize application performance, and send instructions back to the agents.
APMs often run during production either while an application is built from the ground up or as new code is developed for an existing application. APMs can also be used in a testing environment as an “apples to apples” comparison; for example, how changes in test metrics might perform in production.
APMs and Dependency Mapping’s Differences
APM tools show the real-time flow of traffic requests in production environments and high-level application topology. APMs also assist with visualizing root cause analysis. Root cause analysis can help identify potentially problematic scenarios including:
- a lack of disk space
- insufficient memory
- an unusual number of transactions
- page load time
- slow SQL queries
- and other performance indicators
While APM tools monitor user experience troubles and help manage the performance of software applications, software intelligence helps developers understand the impact of code changes before they are made to avoid dependency oversights that lead to costly break/fix cycles.
While APMs serve operations teams, dependency maps directly assist software developers. With software dependency intelligence, developers can understand changes before they make them as well as enhance communication across teams and stakeholders. In many ways, the difference between APMs and dependency maps is external versus internal. One primarily affects end-users, while the other influences internal plans for an application in order for it to be user-ready. Consider this metaphor from Eric Minick, our Head of Product, when he compares CodeLogic and APMs,
“If APM is a kick-ass smoke detector, we’re in the fireproofing business.”
APMs sense the smoke and alert you before it’s too late, dependency maps are meant to make the smoke alarm superfluous because they designed something resistant to the fires that APMs detect.
Choosing Between APMs and Dependency Maps
Even though in many ways dependency maps do the job of APMs on the front end, this does not need to be an “either/or” scenario. You should have both in your toolchain.
Imagine you are a circus performer and one of your acts is to cross a tightrope on a unicycle. Before your act, you’ll want to make sure the tightrope is correctly taught, pedals are operational, and you’re balanced on both sides. Even though you completed a safety check, it’s still worthwhile to have a safety net in case you fall.
Software dependency intelligence is the responsible, upfront check, while APM is the safety net. With software intelligence, developers can understand change impact, establish testing, and enhance team collaboration around code changes before pushing code to production. With APM, developers can put performance monitoring in place to ensure nothing is broken after deployment. Human error can always slip through the cracks, so using both tools should deliver a break-free user experience.
There are risks throughout the software cycle. As a new feature or application moves from planning to production, the cost of troubleshooting increases. Software intelligence helps teams mitigate project risks by informing them of the full software landscape and identifying areas that could pose a problem. To complement the frontside risk mitigation provided by software intelligence, APM tools catch errors on the opposite end of the project scope (testing, production, release). Together, software intelligence and APM tools significantly reduce the risk of costly outages and break/fix cycles.
Downtime is expensive and can even bring business to a halt. Amazon would lose about $13.2 million dollars in direct revenue in a single hour of downtime. Having both software intelligence and APM in place can allow developers to build fearlessly, while ensuring there’s a back-up plan in case teams encounter unexpected breaks.
Want to learn more about how CodeLogic works with APM tools?
Check out our Data Sheet: CodeLogic & APM Tools.