Chris Riley is a guest contributor for the Runscope blog. If you're interested in sharing your knowledge with our readers, please fill out this short form and we'll get in touch with you.
There are so many different types of monitoring in the DevOps world today that it can be easy to lose track of them. There’s application performance monitoring and infrastructure monitoring. There’s user experience monitoring, uptime monitoring and real-user monitoring.
And then there’s synthetic monitoring and API monitoring—two types of monitoring that can seem similar, but are actually quite different.
Let’s take a look at what synthetic monitoring and API monitoring have in common, how they differ, and which types of use cases each supports.
What is Synthetic Monitoring?
Put simply, synthetic monitoring is any type of monitoring that relies on simulations or emulations to mimic application behavior, as opposed to running the application within a non-virtual environment. User interactions with an application are typically simulated by software scripts, rather than performed by an actual user.
The main benefit of synthetic monitoring is that it allows you to test application performance and validate software without having to set up a full, real-world software environment, and recruit a living, breathing user to interact with your application. You can check to see that an application remains available and responsive when a simulated user performs various actions. You can also test how the application reacts in response to simulated data input by a user.
Synthetic monitoring is particularly valuable when you want to test an application within a variety of different software environments. For example, you might want to see how a web app performs in dozens of combinations of web browsers and operating systems. In this type of scenario, setting up a non-emulated environment for each combination of browser and operating system that you want to test would require a great deal of work.
The trade-off for synthetic monitoring is that, because the testing environment is emulated, monitoring results may not reflect real-world conditions with complete accuracy. If you want absolute accuracy, you should use real-use monitoring, which refers to monitoring performed without using any hardware or software emulation (beyond, of course, emulation that might exist in a real, end-user setting, such as a virtual machine that is used for actual application deployment). Real-user testing can come in handy for validating particularly important application features, but because it requires more time and infrastructure to perform, it is not practical in most cases for all monitoring needs.
By and large, synthetic monitoring will give you a pretty reliable sense of how your application would perform under real-world conditions. It’s a good balance between breadth of monitoring and accuracy of results.
What is API Monitoring?
API monitoring is what it sounds like: Monitoring that focuses on the internal or third-party APIs that an application or set of applications use to communicate.
API monitoring generally focuses on three main categories:
Uptime: Are APIs available and responding to requests?
Performance: Are APIs responding within an acceptable timeframe?
Data validation: Is the data that is being exchanged over APIs being sent and received in the right format?
In today’s world of microservices-oriented, cloud-native, containerized everything, APIs play a central role in allowing applications to operate. As a result, monitoring APIs to ensure that they are performing as expected is crucial for maintaining overall application quality.
Because APIs run in the background of an application, and are not directly accessed by users, the concept of real-user API monitoring would not make much sense. You could, however, monitor APIs in conjunction with real-user monitoring by using API monitoring to ensure that APIs continue to perform when an application is being used by a real user, but in that case, the user would be interacting with APIs only in an indirect way.
Synthetic Monitoring vs. API Monitoring
In certain key respects, synthetic monitoring and API monitoring are similar:
They both involve monitoring your application using software tools, rather than actual users.
They are both critical for verifying that applications perform as expected and deliver a quality user experience.
They both enable different categories of visibility into an application: uptime, performance and data validation.
The main similarities, however, end there. In other key ways, synthetic monitoring and API monitoring are different:
Synthetic monitoring focuses on how an application itself responds to user interaction. API monitoring tests the performance of APIs, which are communication routes between applications (or between different parts of the same application) rather than the actual application.
Synthetic monitoring could be used to test virtually any type of application, whereas API monitoring only makes sense for applications that use APIs.
API monitoring can help to maintain a quality user experience across multiple applications by testing the APIs that allow those applications to communicate. In contrast, synthetic monitoring allows you to test only one application at a time.
In short, although the reasons to use synthetic monitoring and API monitoring are similar, they provide different types of visibility. Synthetic monitoring provides information about an application itself that you can’t glean from API monitoring, and vice versa.
Conclusion: Synthetic Monitoring and API Monitoring in Tandem
The nice thing about synthetic monitoring and API monitoring is that you don’t have to choose just one. Instead, think of both types of monitoring as complementary tools. Synthetic monitoring provides visibility at one level of your software stack, while API monitoring caters to a different level.
There’s a good chance you’re already doing synthetic monitoring, which has been a prominent practice in the DevOps world for years. Yet, as APIs play an ever-more crucial role in modern application deployments, consider adding an API monitoring tool to your suite of monitoring solutions. Doing so will give you the ability to test resources that can’t be handled by synthetic monitoring tools, which cater to a different set of use cases.
In short, today’s software environments are too complex to manage effectively using just one type of monitoring strategy or tool. By combining synthetic monitoring and API monitoring together, you maximize your ability to test as many factors as possible both within your applications and in the communication paths that connect them.