View all success stories

MachineMetrics: Unlocking Industrial IoT Innovation with NATS at the Edge

With Synadia and NATS.io, MachineMetrics can seamlessly and efficiently collect, move, and process high-frequency machine data from cloud to edge and back. NATS has become the foundation for the MachineMetrics new data transport layer with plans to replace tools like Amazon Kinesis where it makes sense.

cover image

About MachineMetrics

MachineMetrics is a leader in the Industrial Internet of Things (IIoT) space, providing real-time insights into machine performance on manufacturing floors. Its platform connects to thousands of industrial machines across hundreds of customer sites, delivering data-driven intelligence that helps manufacturers optimize operations, reduce downtime, and make proactive decisions.

The company offers robust analytics, production planning and predictive maintenance capabilities, with a strong emphasis on edge computing to process high-volume data directly on factory equipment.

Challenges

MachineMetrics connects to thousands of machines at hundreds of customer sites and factory floors. The typical customer is a mid-sized shop factory floor. Traditionally, the machines had human oversight and were tracked by administrators using spreadsheets. That approach was expensive and inefficient. 

Machine Metrics transformed that process by collecting data from different machines, ingesting that data into the cloud, and then contextualizing, analyzing, and connecting the data to planning systems at the edge where it appears in a dashboard with predictive alerting enabled to avert issues. With thousands of machines producing continuous streams of data, the team needed to efficiently collect, move, and process high-frequency machine data from cloud to edge and back. The team, however, faced several challenges in scaling their architecture and enhancing product capabilities.

  • Limited Edge Resources: Their edge devices had restricted computational capacity, making traditional streaming tools (like Amazon Kinesis) unsuitable for on-device data ingestion.

  • Connectivity Issues: Factory environments often suffer from unreliable or intermittent internet connectivity, making it essential to buffer and process data locally without losing fidelity.

  • Cost and Complexity: Traditional cloud-based architectures incurred high operational costs and complexity, particularly when scaling to meet increasing customer demands.

  • Developer Experience: MachineMetrics needed to simplify development workflows across different languages (JavaScript, Rust, Python) and environments while ensuring consistency and resilience.

Technology Environment

MachineMetrics’ platform traditionally relied on AWS infrastructure, including:

  • Amazon Kinesis for data streaming

  • Amazon Elasticache for managed in-memory data store and cache

  • Amazon RDS for relational databases

  • SQLite for buffering data at the edge.

Deployment & Implementation

Initially, NATS was introduced as a lightweight messaging bus on edge devices to replace cloud-centric services like Amazon Kinesis. Over time, the team expanded its use to serve as a core service mesh for backend systems, enabling distributed compute and real-time data exchange.

“The operational overhead is so minimal for basic NATS.io...we couldn’t have done it with a different technology.”

— Jochen Rau, Engineering Manager

The implementation included:

  • Building internal tooling to abstract NATS interactions and standardize subject and payload structures

  • Creating a seamless bridge from existing Kinesis streams into NATS, allowing gradual migration

  • Deploying decentralized authentication across customer accounts for secure and scalable access

  • Planning and testing NATS JetStream on edge devices to support local persistence and improve resiliency during network outages.

“In terms of the interface with our existing architecture or infrastructure, we can take the end of Amazon Kinesis streams and copy them into NATS, so the streams are mainly consumed through NATS. That enables us to produce machine data in NATS using leaf nodes—the ability to extend the NATS messaging topology by connecting a NATS server to another NATS server or cluster—bypassing the Kinesis pipeline. Now we have a migration path to NATS; more and more machine data is on NATS—a nice way to  gradually switch over to NATS. One of our initiatives was to move cloud processing to the edge devices and NATS allowed us to do that.“

— Jochen Rau, Engineering Manager

Figure 1: The MachineMetrics Platform with NATS.io

NATS.io

MachineMetrics decided to select NATS—an open-source, real-time messaging system developed by Synadia—as the foundation for its new data transport layer. 

“Pretty much all of our new development is all NATS with plans to replace existing tools like Amazon Kinesis where it makes sense," according to Rau.

The decision was driven by NATS’ small binary size, minimal resource requirements, decentralized architecture, and flexibility to operate in hybrid cloud/edge environments.

In terms of interoperability, MachineMetrics currently has NATS in production in JavaScript and TypeScript environments, as well as some Rust and Python services.

With NATS, there is a strong the case for doing more processing on the edge, Rau explained. For example, tool monitoring requires ingestion of a kilohertz of data. "Given the bandwidth that factory floors have now, you can't move that into the cloud. It's not necessary. Now with NATS, you can have the compute on the edge device that can look at that data, process it in real time with low latency, and then just send the the alert up into the cloud."

There are many untapped resources on the edge device, Rau added. "Our devices are not high powered edge devices, but still we can move a lot of computing that we have in a service, for example, in one pod running on Kubernetes. We can distribute that on edge devices with no cost at all."

MachineMetrics leveraged critical NATS capabilities:

  • Leaf Nodes for a hub-and-spoke model connecting thousands of edge devices to the cloud

  • Key/Value Store for configuration and short-term caching

  • MQTT support for customer integrations in the IIoT space

  • Decentralized Auth to isolate customer environments and control access securely

  • Object Store to distribute lightweight WASM modules for edge compute.

“The NATS decentralized auth model has provided us with just many benefits… it’s a really powerful tool.”

 — Tyler Schoppe, Staff Engineer, MachineMetrics

Rau noted that MachineMetrics also had customers that consume MQTT data directly from NATS. "It's a really nice feature because most of the IIoT space is dominated by MQTT. Having that MQTT support basically out of the box for free is incredible."

MachineMetrics is planning on adding NATS JetStream with its data persistence capabilities on their edge devices for those customers who have intermittent or unreliable connectivity. "NATS JetStream is a great use case for compute on the edge when you have intermittent connections," Schoppe said.

Rau also noted that NATS JetStream is a great connectivity replacement for SQLite. In addition, NATS is the "only technology in the space that decouples the addressing of data from the access point of data. It's a unique and powerful feature in NATS that is underappreciated. And once you use it, it leads to a kind of freeing architecture and a high resiliency."

Results

For MachineMetrics, NATS offered a robust but flexible and lightweight solution that could operate seamlessly in both cloud and edge environments. NATS quickly became the blueprint for MachineMetrics' messaging backbone with clear benefits.

Enhanced Developer Productivity: Faster service development using familiar tools and patterns across distributed systems and simplified data access through custom libraries abstracting NATS configuration.

Operational Efficiency: Reduced operational overhead with simpler setup and management compared to Apache Kafka or Amazon Kinesis. "Core NATS is so easy to set up and operate," Shoppe explained. "When you do compare it to some of the other systems like Kafka, it's considerably easier to manage."

Flexibility: Enabled compute anywhere—on edge or in the cloud—with no architectural lock-in and lowered cloud compute costs by leveraging idle resources on edge devices.

Improved Resilience: NATS was designed for unreliable network conditions—with NATS JetStream providing persistent buffering on edge devices.

Reduced Complexity and Technology Fragmentation: Provided consistent tooling across environments.

Platform Innovation: Enabled high-frequency data capture (1 kHz) for advanced use cases like tool monitoring directly on the edge and empowered customer-specific deployments and future front-end data access via NATS.

“The architectural possibilities we now have really changed....We really do have this ubiquitous data plane.”
Tyler Shoppe
Staff Engineer, MachineMetrics
Cancel