NATS

NATS is an open-source messaging system built for high throughput and low latency. Its documentation describes it as a simple, secure, and high-performance open-source data layer for cloud-native applications, IoT messaging, and microservices architectures, capable of publishing and subscribing to messages at millions of messages per second. The design goal from the start was to be a lightweight nervous system connecting the many small services and devices of a distributed application.

NATS was created by Derek Collison, who had previously worked on messaging systems including TIBCO Rendezvous and the Cloud Foundry messaging bus. The earliest implementation was written in Ruby to serve as the internal control-plane message bus for Cloud Foundry, and the project was later reimplemented in Go as the standalone nats-server, which is the implementation maintained today. The repository confirms NATS is now part of the Cloud Native Computing Foundation (CNCF), placing its governance alongside other foundational cloud-native infrastructure projects.

The core of NATS is a subject-based publish/subscribe model. Publishers send messages to a subject, a dot-delimited string such as orders.us.east, and subscribers receive messages for the subjects they have expressed interest in, with support for wildcards across subject tokens. On top of plain pub/sub, NATS provides request/reply semantics and queue groups, which let a set of subscribers share a subject so that each message is delivered to exactly one member, giving load-balanced work distribution without a separate queue server.

The base NATS protocol is deliberately fire-and-forget with at-most-once delivery, which keeps the core server fast and simple. For applications that need persistence, exactly-once semantics, replay, or stream history, NATS adds JetStream, a built-in persistence layer that turns NATS into a durable streaming and key-value system without requiring a separate product. This layered approach lets teams adopt the lightweight core and opt into stronger guarantees only where they are needed.

NATS is commonly used as the messaging fabric for microservices, edge and IoT deployments, and service meshes, where its small footprint, clustering, and built-in security make it attractive. A single binary can run as a standalone server or join a cluster and supergroup of servers spanning regions, and client libraries exist for many languages, making NATS a frequent choice when teams want an operationally simple alternative to heavier broker stacks.

Sources

Last verified June 8, 2026