Learn NATS (cloud-native messaging for microservices and event-driven architecture) from the basics to production-grade: pre-requisites & environment setup, history & background, core concepts & main architecture, setup & first connect, subjects & wildcards, request-reply & queue groups, CLI & client libraries, JetStream introduction, JetStream streams, JetStream consumers, KV store & object store, stream manager & work queues, accounts & multi-tenancy, security & authentication, clustering & leaf nodes, integrations & best practices, JetStream performance, NATS on Kubernetes, monitoring & observability, troubleshooting, latest stable features v2.14, production-ready architecture, and alternative ecosystems & final reflection with a total of 23 episodes.
Before touching NATS, you need to master basic networking concepts, publish/subscribe and queue patterns, and distributed systems concepts such as at-least-once, idempotency, and backpressure. In this episode you will also set up nats-server, the nats CLI, and your first client library.

This episode unpacks the history and background behind the birth of NATS, its evolution from Core NATS to JetStream, and the real problems it solves: lightweight, simple, fast, and resource-efficient messaging for microservices and the edge.

This episode breaks down how NATS works behind the scenes: subjects and wildcards for routing, the communication patterns of publish/subscribe, request-reply, and queue groups, as well as the role of JetStream as the persistence layer, complete with the components of the NATS ecosystem.

This episode guides you through running nats-server directly or via Docker, putting together a minimal configuration, using the nats pub, nats sub, and nats server check commands, then connecting your first client library to the NATS server.

This episode covers subject hierarchy and event-driven naming best practices, then the difference between the * and > wildcards along with their implications for permissions, subscriptions, and matching conflicts.

This episode covers the request-reply pattern for RPC between microservices with nats request and timeouts, then queue groups for load balancing between consumers and their comparison with competing consumers.

This episode summarizes the power of the nats CLI for day-to-day operations and writes complete client programs in Go, Python, and Node.js to connect, publish, subscribe, and request.

This episode introduces JetStream as NATS's persistence layer: the concept of a stream as a persistent log, retention and durability, how to enable JetStream, and the message flow from publish into a stream and from a stream to a consumer.

This episode breaks down stream configuration in full: subjects, retention with the Limits, Interest, and WorkQueue modes, file or memory storage, max_age and max_bytes, replication, as well as stream sourcing, mirroring, and the dedupe window for exactly-once publishing.

This episode covers JetStream consumers in full: the difference between pull and push consumers, durable versus ephemeral, ack and nack semantics, ackWait, max delivery for redelivery, as well as deliver_policy and replay for determining the starting point of reads.
