APM 101: Terminology and Concepts

Today, we are going to take a look at Application Performance Management 101, its terminology, and its concepts. APM is incredibly essential for systems today, but many organizations still aren’t using it to its fullest effect.

Organizations need APM to remain in control of their network and infrastructure. However, they may not be able to effectively set up APM if they underestimate its importance and magnitude of their effect. Because of this, everyone needs an in-depth understanding of APM, why it matters in application development, and what are some of the best ways to manage and monitor it.

What is APM?

Let’s take a closer look at APM. Application Performance Management is a method that organizations use to track the performance of their applications discreetly, identifying those that malfunction or misbehave - forwarding bad requests, being slow on request-response, and so on. Every issue within an application should be exposed through application performance management, such as suspicious amounts of traffic going in and out, memory leaks or resource overload.

APM is something that every system needs today.

In the past, APM wasn’t that important, because each application could be managed on its own. A systems administrator might notice that a single application was being sluggish and would pull it and reboot it. But today, applications come in hundreds or thousands within a single system. Distributed computing, microservices architecture, virtualization, and containerization have all made applications work on multiple levels of a network organization. And each of these networks has independent maintenance and monitoring.
APM consolidates all of this into a singular system that makes it possible to identify issues with practically any application. It also means that the system must be working well as a standalone entity, be consistent and coherent, and track all applications through distributed tracing processes. This requirement can present a challenge, especially for organizations that are setting up their APM or tracing after the fact.

Key features of APM

There are many APM solutions out there. Some of them are relatively light and stripped down, while others are robust. A small organization could benefit from a lightweight APM solution, while a large enterprise needs a heavyweight APM solution with an extensive set of complementary features. Regardless of what a custom project might require specifically, APM key feature usually doesn’t change.

  • Performance of web requests. Most solutions today are cloud-based and web-based. APM will track the performance of web requests to determine whether some of them are lagging or whether the performance could otherwise improve. Every transaction is traced so that the organization can readily address pressing issues.
  • Code-level performance profiling. APM can identify which methods within the code-level of an application could be slowing down a system. Applications today are growing more complex in and out of themselves, and therefore this type of maintenance becomes exceptionally important.
  • Application dependencies. It may not be the application that is working incorrectly but one of its dependencies. As an example, the system might be tracking whether the application’s SQL queries are running slowly.
  • Server monitoring metrics. Many people are familiar with the task manager; APM solutions will determine how the application is running in terms of CPU usage, memory usage, and more. This is very basic but can provide fast key insights.
  • Log data. APM will take and manage a significant amount of log data, which can then be searched through, monitored, or analyzed. Some APM solutions will even export log data so other systems can analyze it.
  • Errors management. One of the most essential systems, APM will also identify errors. A robust system will prioritize these errors so that it becomes clearer which errors must be addressed and when.
  • User monitoring. In addition to the applications themselves, APM solutions will also identify what users are doing and how they interact with applications. APM solutions should always be geared toward the user; making sure the applications deliver what they need to deliver to the user.

Like other advanced systems, APM solutions can usually be extended. When they are extended, they are integrated with other solutions, or given add-ons to their existing solutions. But APM solutions as a whole are always going to include the above feature sets.

APM terminology

APM terminology had grown significantly since 2013 when an APM boom was encountered. Before cloud services, microservices, and other architecture changes, APM really wasn’t as necessary as it is today. But as the industry grows, it also becomes more complex. And as it becomes more complex, there become specific terms that need to be used.

  • Distributed tracing. This is a method by which tracing is performed end-to-end throughout applications, to ensure that the requests can be traced back to any issue that occurred. Distributed tracing is an incredibly important factor in APM but it shouldn’t be confused with APM itself, just as observability should not be confused with monitoring.
  • Tracing. Tracing is what tracks requests throughout a system. It’s important because without it - a request can enter into a system incorrectly. The fault may occur within an application, but a previous interaction could have passed on flawed data. Without tracing, you could determine where the fault is, but not where it originated, and a single microservice could be sending faulty requests throughout the whole system.
  • Monitoring. Monitoring identifies issues as they occur and reports them back. Tracing, management, analytics, and more, is what provides the data. But the monitoring system alerts the organization when issues have occurred, and it’s one of the most important aspects of any APM solution. Without robust enough monitoring, the system may identify faults, but most would remain unaddressed.
  • Tags. Tags make it easier to trace things throughout the system by attaching important, and sometimes critical, information. Tags within an APM system make it far easier to track important issues.
  • Filters. Filtering and searching through APM logs makes it easier to reach critical information. APM logs provide analytical data, such as performance issues that could remain hidden because they are not yet critical.
  • Services. Services are the core building blocks of a system, which make it possible to build an application. Services are incredibly important today because of microservices, which are often used throughout application architecture, and which need to be traceable in and of themselves.
  • Resources. Resources can refer to the domains within a customer application, including background jobs, database queries, web endpoints, and other accessible and discrete units. Resources are used by applications and may have their own errors or performance issues.

Understanding the above terms can make the process of understanding APM much easier. But APM is a discipline in itself, and organizations that are interested in improving their capacity for robust APM should consider getting the help of a managed partner.

APM concepts

What are the core APM concepts? What is it that makes APM so important? In general, the core APM concepts are:

  • Observability. It is important that everyone knows where things have gone wrong within a system. In addition to knowing where systems have gone wrong, it’s important to know the general status of the system as well.
  • Continuity. End-to-end tracing is incredibly important because otherwise, it’s not always clear where an error occurred. Greater levels of continuity are growing in importance, along with systems becoming larger and more complex.
  • Prioritization. It’s important that an organization be able to prioritize its systems. High-level errors need to follow different channels than lower-level errors, or IT will have a hard time addressing them properly.
  • Scalability. As more applications are added, it’s vital that the system be able to adjust without any issues. Otherwise, the system is going to need to be modified every time new applications are introduced, which can be quite frequently.

Overall, APM is all about ensuring that the organization maintains control over its application performance monitoring. If it is not able to do so, the system itself becomes fragile and prone to malfunction.

APM best practices

What are some of the best APM practices? It all has to do, of course, with the systems and suites. There are many APM technologies today, and they’re continually growing. But when it comes to the best methods with APM, there are several things everyone should agree on:

  • Consistency and standardization. Application names, tracing, reporting, and more, should all be standardized so that it’s easier to trace them back.
  • Unique identifiers. All events that are handled through applications should have unique identifiers no matter where they are within the system so that they can be traced back.
  • Prioritization. As mentioned above, prioritization is a key concept. Different applications should be prioritized based on how essential they are to the system.
  • Logging. Robust logs are key to APM and distributed tracing, and ideally, they should be ready for search, analysis, and customization

With the above best practices, organizations can get started with their application performance monitoring. But the more complex the network, the more complicated their APM too. It’s important for organizations to always keep an eye on structural improvements and try out the newest APM technologies as they emerge. Now that containerization, docker services, and microservices architecture are here to stay, it will become increasingly more difficult to track errors across an entire system.

Author

Nashat Wanli | Chief Technical Officer

Nashat fills the role of the Chief Technology Officer at CodeCoda. Nashat, with his previous roles ranging from Software Engineer, Architect, over Project Manager to CTO at a top eCommerce company, brings with him nearly 25 years of valuable industry expertise. He is a self-motivated, highly skilled and capable person, that once added to a project provides value and key expertise.
His experience in the full range of software development works as an asset to our client's software developments, which he follows through with strong attention to detail and an innovative ambition that drives key changes.