APM Application Performance and the Internet of Things - Part 2
IoT Systems – Where Application Performance Monitoring is Needed
December 21, 2017

Pete Waterhouse
CA Technologies

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.

Built on the super-fast Google V8 open source JavaScript engine, Node.js is well-regarded within the development community for its speed, scalability and efficiency – making it great for IoT applications. It's also well suited for APIs, which is especially important in IoT where effective inter and intra-application communication and interactivity is critical. Devices and sensors with an IoT ecosystem can generate large floods of data requests, which Node.js is well equipped to handle- with an event-driven architecture and non-blocking I/O that optimizes an IoT application's throughput and scalability (see diagram).

And Node.js isn't only applicable for server-side processing. It's also finding a place in devices themselves. In a space that's to-date been dominated by low-level programming languages (C, C++, Assembler etc.), Node.js provides a fast, viable, easy-to-use alternative with many of today's popular device platforms including both JavaScript and Node.js support (examples include Raspberry Pi and Intel Edison).

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

CA APM for Node.js allow teams support Node.js applications (including, but not limited to IoT) by quickly detecting, diagnosing and resolving performance issues. It monitors critical components of Node.js applications such as event loops and V8 JavaScript engine heap usage. The agent also monitors the overall performance of the process itself, helping teams quickly identify emerging problems and ensure a Node.js centric IoT application delivers on its promise of supporting high volume data.

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.

Read Application Performance and the Internet of Things - Part 3

Pete Waterhouse is Senior Strategist at CA Technologies
Share this