In our first blog, Application Performance and the Internet of Things - Part 1, we laid out the IoT landscape and described many monitoring challenges. While complex and varied, what remains constant is the need to manage every IoT deployment as a complete system – a system that operates harmoniously across sensors/devices, APIs, gateways, communication protocols, cloud services and back-end applications.
In this blog, we're going to hone in on IoT systems and where application performance monitoring presents itself as an important enabler. Naturally, this includes monitoring the IoT apps, code and APIs, but what's critical is first understanding the nature of these systems and how that influences monitoring approaches.
Nothing across an IoT system will be consistent. Whereas some systems need to process data at a device-level (perhaps where there's no persistent network connection), others will ship more data to the cloud for analysis. Some system components will dictate the need data-intensive, low latency and real-time processing, while other elements will be more CPU intensive (e.g. analytics applications). Since IoT as a system is dependent on systemic-level performance, monitoring must be capable of supporting all these eventualities while delivering holistic, end-to-end views of performance.
The Adoption of Powerful Development Frameworks
Many IoT systems will be heavily reliant on data-intensive, real-time devices and applications. For businesses starting IoT initiatives, this has driven the adoption of development frameworks that have matched capabilities – especially Node.js.
Of course, Node.js is not without its own set of unique monitoring challenges. Consider for example a scenario where a cloud-based Node.js system is being used to process data from a drone. Let's say the drone (or more likely a fleet of drones) has been deployed in an emergency services context to assess the outbreak of a remote bushfire. Smarts in the device will be collecting many data points – fire intensity, size and weather conditions. All of which must be transported to a cloud-based analytics solution that supports decision making in everything from remote community evacuations to the most effective fire-fighting strategy.
Essential to this type of scenario is rapid data processing - perfect for Node.js. But because this type system is high volume (including photographic images, geospatial data etc.), even minor latency problems can be problematic – which in the above scenario could be catastrophic. Therefore, the ability to both monitor important Node.js elements and quickly detect and diagnose latency/response issue across the entire IoT "system" stack is vital.
Where Application Performance Monitoring Comes In
To support those use-cases where Node.js is leveraged in an APIs context, the functionality of CA APM can also be extended with an API monitoring module – API Precision Monitoring Module for CA APM. In many IoT use-cases an API gateway will serve as the defacto entry point for data and back-end applications, but teams need deeper insights than what's available at the gateway - client-side performance. By combining API gateway capabilities with CA APM analysis and visualization, teams can go deeper by:
■ Identifying and contextualizing IoT system performance issues – especially those with API-oriented root causes.
■ Tracing IoT data traversing an API gateway and across all monitored services – with correlation to associated back-end systems and processes.
■ Logically group and visualize IoT application topologies with analytics helping pinpoint where problems are likely to occur (note – in IoT use-cases the ability to perform ‘likelihood of failure' analysis could be more important than MTTR).
There are many other great ways Node.js can be leveraged in an IoT context. Node.js is well suited to publish/subscribe use-cases, acting as an event broker for lightweight messaging protocols such as MQTT. That said, we should also recognize that it won't necessarily be the only development option and for certain use-cases across an expansive IoT system it should probably be avoided. This includes applications heavy on computational analysis where CPU intensive operations nullify all the throughput benefits Node.js provides (event-driven, non-blocking I/O).
Yet another reason why Application Performance Monitoring must cater for all conditions.
As the recent survey from RisingStack illustrates, Node.js is fast emerging as the development platform of choice for digital transformation and a wide variety of applications - including IoT. But in the rush to experiment and innovate, don't let application performance blind-spots derail these critical initiatives.