What Is It All About?
You may or may not have heard of application performance monitoring or APM. You may also have heard the term APM used in the context of application performance management. These two should not be interpreted to be the same. Application performance monitoring is exactly what is in the name: monitoring. It is all about monitoring the health of the application and external constructs. Application performance management is exactly what is in its name: management. Application performance management is all about the awareness and focus of the application. Generally, you will find application performance monitoring as a subset to application performance management tooling, but not in every case.
Are you confused yet?
In this post, we will be discussing APM from the monitoring perspective. Over the next series of posts, we will touch on various aspects of APM, such as what components in the environment we should monitor to ensure a healthy application state, as well as the components of the application that should also be monitored. Ultimately, APM should provide a satisfying user experience. We will also be looking at effective event management, alerting, and dashboards. Also, to keep things in perspective, we will first explore what I would term as “after the fact implementation” of application performance monitoring in a traditional fashion. In a later post we will explore implementing application performance monitoring in an agile fashion.
So, to sum up and answer the question “What is it all about?” it is all about the monitoring of an application's health, which includes various components that can affect the application’s health and performance. At the end of the day, we need a way to identify where the performance degradation is, and how we can swiftly resolve the issue. Having the ability to do this efficiently manner is the ultimate win for everyone. We will also be better prepared for the ultimate question, “Why is my application so slow?”
How Do We Get Started?
One of the most challenging aspects to solve when it comes to APM is “How do we get started?” This question is so challenging due to the fact that we must first identify all of the components that can cause an application to become unhealthy, therefore causing performance degradation. One might think that because it is application-focused that we might only look at the application itself which might only include the server, container, etc. in which the application is running. Only including these items would cause us to overlook the external components such as load balancers, databases, caching layers, hypervisors, container platform, and more. Because of these additional layers, we may actually experience application performance issues not from the application itself, but a result of an external component injecting the issue. So, to effectively identify all of the components, one must completely understand the overall architecture and ensure that each and every component is monitored. Remember, monitoring in this sense is more than just up/down, bandwidth, latency, etc. We must obtain enough information from all of the components and ensure that the data is correlated and aggregated to effectively pinpoint an issue when our applications performance is degraded.
As you can see, there are abundant areas that we should be monitoring which could in turn affect an application's performance. You may also be thinking to yourself that this is the way things have always been done over time. I would be willing to challenge the fact of whether or not they really have been, or better yet, how effective they have been over time.
Now is the time to get started and get a grasp on your true application performance.