Essential Application Performance Management Tips and Tools
As an application's architecture grows, so does the risk of a component potentially malfunctioning. Working with a massive team of developers and administrators should theoretically ensure a well-oiled machine, but people make mistakes too, so it's helpful to a have automated tools that continually monitor all of the moving parts. That's why we have application performance management tools.
What is application performance management?
In web development, consistency is key. Application performance management (APM) is what developers do to make sure every user has a consistently positive experience. The principles of APM can be applied to a single program or a whole collection of applications that a business needs to operate. Application performance management is an art, a field of study and a massive industry.
There is a plethora of APM tools that monitor the speed of transactions between end-users and network infrastructure, which gives developers an end-to-end picture of where bottlenecks and service interruptions might occur. Such software tools conduct ongoing tests that track performance metrics and diagnose problems as they arise to ensure an optimal level of service at all times. Since there are many metrics to monitor, a complete application performance management plan usually requires a suite of APM tools.
You may see the acronym APM used to mean "application performance management" or "application performance monitoring." The terms are basically synonymous, but a proper APM strategy emphasizes both monitoring and management. This application performance management guide will focus on the various methodologies and software tools that developers use to meet their quality-assurance goals.
The evolution of application performance management
APM used to be considered a niche field that system admins worried about after an application was already up and running. Now, APM is often integrated throughout an application's lifecycle including the pre-deployment and post-deployment stages. Therefore, the concept has become increasingly relevant to developers, testers and business teams.
For example, using APM software tools during the development process can help coders more efficiently structure their code. At the same time, ops personnel can conduct synthetic testing across different platforms, browsers, and APIs to detect small performance issues before they become bigger ones down the line. Although business teams are primarily concerned with the bottom line, they may also use APM solutions to resolve issues related to online financial transactions. Ensuring consistent performance at all stages of development and anticipating bottlenecks lessens the probability of post-launch problems.
The basics of application performance management
Sluggish load times can stem from a number of issues related to APIs, servers, cloud-hosting services, databases, mobile carriers or the user's browser. Multiple problems can lead to the same result: a frustrated user. A combination of load-testing, real user monitoring, root-cause analysis and other APM techniques enables developers to pinpoint the exact problem.
Software that conducts basic availability monitoring, which involves testing IP protocols and network services, is an essential part of APM, but you also need to establish some optimal performance thresholds and set up real-time alerts that let you know when functionality dips below them. A comprehensive APM strategy must take into account dozens of factors that affect speed and reliability.
Below are some examples of components that need to be monitored and managed:
- Basic server metrics such as CPU and memory
- Performance of individual web requests
- Performance of application dependencies including caching, databases and other web services
- Code level performance profiling with thorough transaction traces
- Application log data and errors
- Application framework metrics such as performance counters and JMX MBeans
- Other vital applications metrics as determined by the development team
Application downtime and unavailability can certainly hurt a company's bottom line, but mundane slowness is actually the biggest hindrance to user retention. That's because potential customers are 10 times more likely to experience a slowdown than an outage.
As stated earlier, first impressions are of the utmost importance, so the two metrics you should be most concerned with are your time to first byte and how long it takes for all above-the-fold content to be displayed. APM tools can emulate and monitor all types of devices and browsers to determine how fast pages render for users from all around the globe. Let these "visual user experiences" guide your optimization efforts, and everything else will fall into place.
The 5 step application performance management plan
Tech research firm Gartner created a handy guide to help individuals and development teams make an APM plan for their projects. Such a detailed plan may not be necessary for smaller applications, but following these five steps will ensure that all of your bases are covered.
Step 1 - Start with the end-user experience
Numbers only tell you so much, so you must see for yourself how users experience the application. Monitoring the end-user experience will help you identify how performance issues directly impact your audience.
Step 2 - Model the application's architecture
Make a visual representation of your application's runtime architecture so that you can identify all of the different components and how they interact with one another.
Step 3 - Trace your user transactions
Trace how transactions flow down possible paths of your architecture model to determine which nodes could be potential sources of problems for users.
Step 4 - Do some deep diving
Set up deep dive monitoring for each component that impacts user transactions.
Step 5 - Analyze the Data
Conduct IT operations analytics on the data you collected from monitoring to identify weak links and anticipate potential end-user problems.
Professional development teams use a combination of different automated monitoring tools from various vendors to meet their application performance goals. Many APM solutions boast big data analytics; however, if you don't consider the end-user experience, then there is no point in collecting data. If you take anything away from Garter's 5-step plan, remember to put users first and save data analysis for last.
Application performance management monitoring tools
A comprehensive overview of every APM tool could fill a book. Profit Bricks has compiled an impressive list of their top 40 APM tools. Stackify also has a thorough guide that compares some of the most popular APM solutions. Below is a collection of top-notch monitoring tools along with the languages they support:
- New Relic APM (.NET, Java)
- AppDynamics (.NET, Java, PHP, C++, Python, Node.js)
- Stackify Retrace (.NET, .NET Core, Java)
- DynaTrace (.NET, Java)
- Scout (Ruby on Rails)
- TraceView (.NET, Java, PHP, Python, Ruby on Rails, Node.js, GO)
- ManageEngine Applications Manager (.NET, Java, Ruby on Rails)
Application performance management tools for writing code
In addition to APM tools that run on servers, there are also tools that developers can use right from their workstations while writing and testing code. Below are a few popular tools for specific languages:Zend Z-Ray
- Glimpse (.NET)
- XRebel (Java)
- Zend Z-Ray (PHP)
- Scout Devtrace (Ruby)
- Stackify Prefix (.NET, Java)
- Miniprofiler (.NET, Ruby, GO, Node.js)
More application performance management tips
No matter which APM tools you employ, you should use the following best practices to steer your overall performance management strategy. Many of these tips apply to large companies that must manage many applications at once, but some may also be useful to individual developers:
1. Pick your priorities
We all strive for perfection, but when resources are limited, you have to know your priorities. Businesses should determine which applications or components are most crucial to their operation and make sure they are always being monitored. Some transactions should be monitored more heavily than others, so you may want to establish different polling frequencies for different transactions.
2. Be proactive
As a rule of thumb, if more than 35 percent of your performance issues are identified by users before the IT team notices them, then you need to do a better job of identifying potential bottlenecks, errors and constraints.
3. Set up alerts and delegate responsibilities
Who is in charge of fixing which problems? If you're part of a big team, make sure you know who should be alerted when there are performance dips. You may want to configure a certain number of response time violations needed to trigger an alert to avoid "false alarms."
4. Look for geographical response time discrepancies
For big businesses with offices spread over multiple locations, employees in remote geographic areas may experience slower response times. Therefore, it's helpful to compare availability and response times across all locations. This is one of the major reasons why using a CDN is helpful.
5. Centralize your IT response procedures
Large companies may depend on literally hundreds of applications, so purchasing and maintaining multiple monitoring products for each one may be impractical. Also, a lack of integration across monitoring tools makes it difficult to troubleshoot and draw conclusions from the data you collect. Therefore, if you're handling APM for multiple applications, seek solutions that allow you to monitor as many metrics as you can at once.
6. Share your SLA
Share your service level agreement reports with users and stakeholders. If you explicitly state your goals, then others can actually hold you accountable.
7. Regularly review your test results
While you wait to fix problems as they arise, keep the big picture in mind and periodically review all of your data to identify areas that need improvement. Mapping data over time can help you make important business decisions such as whether or not it's worth it to invest in performance optimization.
8. Issue data reports for everyone
Since different stakeholders care about different metrics, tailor data reports to each team and make sure everyone receives them on a regular basis.
9. Ensure quality at every step
Quality control shouldn't be a final step; load testing, functional testing, regression testing and performance testing should be conducted throughout the development cycle. This practice will greatly streamline APM down the road as it allows you to reuse your test scripts for production monitoring.
10. Choose your third parties wisely
While it's tempting to assume that relying too heavily upon third parties leaves your application more vulnerable to performance problems, that's not always the case. Selecting reliable third parties to support your app can be better than trying to handle too many things in-house.
The future of application performance management: APM vs UXM
We may soon see the term APM replaced with a new concept: User Experience Management, or UXM. UXM basically means the same as APM, but it puts extra emphasis on the user rather than metrics. Whereas traditional performance management requires an assortment of APM tools from different vendors, UXM tools are increasingly integrated into single vendor solutions.
You can think of UXM as a more comprehensive approach that incorporates different APM strategies. For example, SmartBear's AlertSite can be considered a UXM solution. It contains about a dozen toolsets for load testing, real user monitoring, transaction tracing, root-cause analysis, real browser recording, core synthetic monitoring and more.
There is a tendency in corporate culture to obsess over data, which is understandable when there are investors and deadlines to worry about. Nonetheless, when it comes to application performance management, perceived performance is far more important than numbers. UXM aspires to integrate and unify APM solutions that prioritize user experience over data analytics.
Every developer should have some understanding of the concept on APM. When you're part of huge development team, it's easy for individuals and departments to lose sight of the bigger picture. A comprehensive APM strategy allows everyone to share information throughout the development process so that potential problems get addressed before end-users ever experience them.