NATS for Real-Time Financial Services Event Architectures. Join us!
All posts

FileWave: why we moved from ZeroMQ to NATS

Massimo Costa
Feb 1, 2023
FileWave: why we moved from ZeroMQ to NATS

FileWave Device Management System

Filewave is a cross-platform/multi-platform Device Management System that helps big organizations to manage their devices from a single interface.​

We are able to manage devices of different platforms:

  • ​Windows

  • macOS

  • iOS

  • Apple TV

  • Android

  • Chromebook

​and we’re able to:

  • Get inventory data (CPU, RAM, free disk space, …)

  • Install software and updates

  • Send specific commands (reboot, lock , …) to devices​

FileWave Before NATS

​Before we switched to NATS, the internal messaging was implemented using ZeroMQ.

ZeroMQ is a library that offers several mechanisms and patterns to implement a lot of different communication strategies. It works well but has several limitations (for our use case):

  • It’s just a library: so we had to implement a “central” server

  • A single socket can use just a single pattern; if you need a PUB/SUB and a REQ/REPLY you have to open two sockets

  • Not supported in web applications; the messaging with the WEB interfaces was implemented by “converting” ZeroMQ messages and sending them to the UI using SSE (Server Sent Event)

  • It does not support out-of-the-box TLS

  • It does not support use cases that require persistence

Why we needed to migrate

​The main drivers for migrations were:​

  • We have strict requirements for having TLS on all communication channels

  • We need support for web applications

  • Message persistence and replay are something we’ll need to use soon​

Why NATS?

​We did some research based on our needs:

  • ​Client libraries for (at least) C/C++, Python, Web Browsers

  • Cloud-ready/friendly

  • mTLS support

  • Easy to install/configure and monitor

  • With good documentation and community

And we found a few candidates:

  • RabbitMQ

  • Kafka

  • NATS

​We decided then to do some parallel investigations and, based on our specific use cases - we decided that NATS was the best choice for us.

The main drivers for picking NATS were:

  • ​Easy to integrate into our installers (thanks to Go)

  • By far the simplest to install and configure

  • Very small install size and memory footprint (thanks to the Go engine)

  • Pre-built binaries for all platforms we need to support

  • Wide-range of authentication systems (for instance we use mTLS for devices and server components and JWT for authenticating users on User Interfaces)

Get the NATS Newsletter

News and content from across the community


© 2025 Synadia Communications, Inc.
Cancel