Developing and deploying applications that communicate in distributed systems can be complex and difficult. A communication infrastructure should provide features to make this easier, including multiple messaging patterns bundled into one technology, location transparency, the decoupling of data producers and consumers, and asynchronous communications to build event driven applications. This can drive services/micro-services based workloads and take the place of things like a service mesh, and also drive observability, all from the same technology.
A modern messaging system needs to support multiple communication patterns, be secure by default, support multiple qualities of service, and provide secure multi-tenancy for a truly shared infrastructure. A modern system needs to include:
- Secure by default communications for microservices, edge platforms and devices
- Secure multi-tenancy in a single distributed communication technology
- Decoupled from IP for addressing and security
- Resiliency with an emphasis on the health of the system as a whole
- Ease of use for agile development, CI/CD, and operations, at scale
- Highly scalable with built-in load balancing and no config auto-scaling
- Consistent identity and security mechanisms from edge devices to backend services
NATS was built to meet the distributed computing needs of today and tomorrow. NATS is simple and secure messaging made for developers and operators who want to spend more time developing modern applications and services than worrying about a distributed communication system.
- Easy to use for developers and operators
- High-Performance
- Always on and available
- Extremely lightweight
- At Most Once (NATS) or At Least Once Delivery (NATS Streaming)
- Common Messaging Pattern Support (Scalable Services, Event/Data Streams)
- Client support for over 30 different programming languages
- Cloud Native, a CNCF project with Kubernetes and Prometheus integrations
NATS can run anywhere, from large servers and cloud instances, through edge gateways and even IoT devices. Use cases for NATS include:
- Cloud Messaging
- Services (microservices, service mesh)
- Event/Data Streaming (observability, analytics, ML/AI)
- Command and Control
- IoT and Edge
- Telemetry / Sensor Data / Command and Control
- Augmenting or Replacing Legacy Messaging Systems