Today, the Cloud Native Computing Foundation (CNCF) Technical Oversight Committee (TOC) voted to accept NATS as an incubation-level hosted project, alongside Kubernetes, Prometheus, OpenTracing, Fluentd, Linkerd, gRPC, CoreDNS, containerd, rkt, CNI, Envoy, Jaeger, Notary, TUF, Rook and Vitess.
Built from the ground up to be cloud native, NATS is a mature, seven-year-old open source messaging technology that implements the publish/subscribe, request/reply and distributed queue patterns to help create a performant and secure method of InterProcess Communication (IPC). Simplicity, performance, scalability and security are the core tenets of NATS.
The project consists of a family of open source components that are tightly integrated but can be deployed independently. NATS is based on a client-server architecture with servers that can be clustered to operate as a single entity – clients connect to these clusters to exchange data encapsulated in messages.
“While most messaging systems provide a mechanism to persist messages and ensure message delivery, NATS does this through log based streaming – which we’ve found to be an easier way to store and replay messages,” said Derek Collison, CEO of Synadia Communications and creator of NATS. “NATS is a simple yet powerful messaging system written to support modern cloud native architectures. Because complexity does not scale, NATS is designed to be easy to use while acting as a central nervous system for building distributed applications.”
NATS Streaming subscribers can retrieve messages published when they were offline, or replay a series of messages. Streaming inherently provides a buffer in the distributed application ecosystem, increasing stability. This allows applications to offload local message caching and buffering logic into NATS and ensures a message is never lost.
NATS is being deployed globally by thousands of companies, spanning innovative use-cases including: microservice architectures, cloud native applications and IoT messaging. It is being adopted by organizations such as Apcera, Apporeto, Baidu, Bridgevine, Capital One, Clarifai, Cloud Foundry, Comcast, Ericsson, Faber, Fission, General Electric (GE), Greta, HTC, Logimethods, Netlify, Pex, Pivotal, Platform9, Rapidloop, Samsung, Sendify, Sensay, StorageOS, VMware Acadiant, Weaveworks and Workiva.
NATS was created by Derek Collison, founder and CEO at Synadia in response to the market need for a simple and high performance messaging solution. The Synadia team maintains the NATS Server (written in Go), NATS Streaming and clients written in Go, Python, Ruby, Node.js, Elixir, Java, NGINX, C and C#. The community has contributed a growing list of libraries, including Arduino, Rust, Lua, PHP, Perl and more. NATS is also available as a hosted solution, NATS Cloud. (Update: NATS Cloud has been sunsetted in lieu of NGS)
“Today’s cloud native landscape emphasizes scalability and total flexibility, emphasizing the need to transfer data between processes quickly, reliably and securely,” said Chris Aniszczyk, COO of Cloud Native Computing Foundation and VP of Developer Relations at The Linux Foundation. “Messaging was born to address this. In its contribution to CNCF, NATS fills a gap for a mature, cloud native messaging solution – the broad client coverage and simplicity of the protocol will make support for and integration with with future cloud native systems straightforward.”
NATS has very strong existing synergy and inertia with other CNCF projects – used heavily in conjunction with projects like Kubernetes, Prometheus, gRPC, Fluentd, Linkerd and containerd.
Main features:
- Pure pub-sub
- Clustered mode server
- Auto-pruning of subscribers
- Text-based protocol
- Multiple qualities of service (QoS)
- Durable subscriptions
- Event streaming service
- Last/Initial value caching
Notable Milestones:
- 44 contributors
- 3,820 GitHub stars
- 20 releases
- 1,356 commits
- 415 forks
“Messaging and integration middleware paradigms have changed radically in the cloud native era and NATS represents a view into the future of application-to-application and service-to-service IPC,” said TOC representative and project sponsor, Alexis Richardson. “The performant nature of NATS makes it an ideal base for building modern, reliable, scalable cloud native distributed systems, making the project a great fit for CNCF.”
As a CNCF hosted project, NATS is part of a neutral cloud native foundation aligned with its technical interests, as well as the larger Linux Foundation, which provides the technology with project governance, marketing support and community outreach.
For more on NATS, please visit http://nats.io/documentation/, see this video by founder Derek Collison and review this slideshow on NATS messaging + the problems it can solve in “Simple Solutions for Complex Problems.” An overview of NATS architecture can be found in “Understanding NATS Architecture.” For more on how it integrates with other projects, read “Guest Post: Fission – Serverless Functions and Workflows with Kubernetes and NATS.”