SlideShare a Scribd company logo
1 of 31
Download to read offline
Jean-Noël Moyne, Synadia Solutions & Engineering
jnm@synadia.com
Matthias Hanel, Synadia Engineering
mh@synadia.com
A New Generation of NATS
What is NATS?
NATS is a complete, production-proven, cloud-native messaging system
Made for developers and operators who want to spend more time doing their
work and less time worrying about how to do messaging
● DNA: Performance, simplicity, security, and availability
● Runs and can be deployed anywhere from the cloud to the edge
● NATS 2: the best coverage messaging features
NATS Community Ecosystem in numbers
● Over 1,000 contributors, over 100 with more than 10 commits
● 30+ public repos
● 40+ client libraries
● 23,000+ GitHub stars across repos
● 10K GitHub stars just for nats-server (~1,000 Forks)
● ~150M NATS Server Docker Hub pulls
● ~3,500 Slack members
https://github.com/nats-io
Complete messaging solution
Complete messaging solution
Complete messaging solution
Complete messaging solution
Complete messaging solution
Complete messaging solution
Complete messaging solution
Complete messaging solution
Complete messaging solution
Complete messaging solution
Complete messaging solution
Complete messaging solution
Messaging functionality landscape
NATS 2 Timeline
● Constant improvements as well as new features
● 2.0 (June 2019)
○ Security with Multi-tenancy
○ Global and multi-cloud deployments
● 2.2 (March 2021)
○ JetStream
○ Websocket and MQTT server support
○ nats CLI tool
○ Subject mapping
○ Message headers
○ Lame duck mode
○ ‘No responders’
● 2.3 & 2.4
○ Monitoring and management
○ Encryption at rest, OCSP Stapling
○ K/V Store
● 14 releases of nats-server in the last 12 months
Security: Decentralized administration
● Hierarchical, delegated administration
● Signed JWTs describe operators, accounts and users
○ Operators create accounts
○ Accounts create users
○ Users present their credentials and permissions
● No need to configure the servers with account or user data
○ Servers only need to validate the trust chain of the JWT using the operator
public key
○ Servers never need to know any private key
● Delegate administration of accounts and users by distributing the private keys
Security: Multi-tenancy
● Users are applications
○ Adapter instances, single-tenant instances of services and message streams
○ Only need to present their JWT
○ User JWTs are created by accounts (key holders) and hold the definition of
which subjects the user can publish or subscribe to
● Accounts can be tenants, or business units
○ Isolated subject name space per account
○ Single tenant environments, Shared multi-tenant services, message streams,
Control plane
○ Account JWTs are created by operators and define message routing between
accounts
JetStream: Next generation Streaming
● Distributed persistence layer for NATS
● Streaming functionality
○ Replaces STAN (aka ‘NATS Streaming’)
○ Integration with core NATS
■ Provides a transition path of existing NATS application to streaming
● Distributed and consistent
○ Uses NATS optimized RAFT quorum algorithm
● FT and DR with replication
○ 1, 3, or 5 servers
○ Mirroring between streams
● File or Memory storage
● Decoupled Flow control
○ publisher to stream (server) and stream (server) to subscribers/consumers
JetStream: Next generation Streaming
● Integrated with the security and multi-tenancy functionalities of NATS
○ Control the import/export of streams between accounts
● Streams can have multiple sources
○ Multiple subjects, wildcards, other streams
○ Subject filtering for consumers
● 3 retention policies available
○ limits, interest and working-queue
● Per stream and per subject message limits
● Many Replay policies
○ All, last, new, by starting sequence number, by start time
○ Last message per subject on a stream
○ Instant or original replay policy
continued...
JetStream: Next generation Streaming
● Push and Pull (with batching) consumers
● Durable or ephemeral consumers
● Explicit or automatic acknowledgements
○ Ack/Nack/InProgress
● Explicit or ‘All’ acknowledgements
● Exactly once delivery
○ Combines Message Deduplication and double acks
● Mirroring
● Observable
● Encryption at rest
● Simple administration and low configuration!
● Speed!
JetStream: More than just Streaming
● KV Store
○ Consistent put, get, delete
○ Watch to subscribe to changes
○ In-line coherent cache
○ History per key
● More to come...
● Simple mapping: “foo” -> “bar”
○ “service.foo” -> “service.foo.v1”
● Subject token re-ordering: “bar.*.*” -> “baz.$2.$1”
● Weighted mappings for traffic shaping
○ E.g. “service.foo” -> 90% to “service.foo.v1” / 10% to “service.foo.v2”
○ A/B testing, canary releases
○ Introduce artificial message ‘loss’
● You can ‘reload’ the server to make changes with zero downtime
● Mappings can be global or per account
● Mappings can also happen between accounts
Subject Mapping
NATS CLI Tool
CLI tool for interacting, monitoring and administering NATS and streams
● Publish, subscribe, request and reply
● View server, connection, stream and consumer information, system events and reports
● View a lot of information about the servers/connections/accounts/latencies/etc...
● On the fly administration and monitoring of streams and consumers
○ Create/delete streams and consumers
○ View information and reports on streams
○ View, monitor and remove messages in streams
○ Backup and restore streams
○ Interact with the stream’s RAFT cluster
● K/V operations
● Benchmarks (pub/sub, request/reply, stream sync/async publishers and consumers)
● Built-in cheats: e.g. nats cheat bench
NATS Architectures: Single server
Deployment Architectures: Adaptive Edge
● Multiple data centers
● Multiple regions
● Multiple clouds
● On-prem
● On the Edge
○ Partially connected
… or any combination thereof
● Disaster recovery with geo-affinity for services
NATS Architectures: Cluster
NATS Architectures: Supercluster
NATS Architectures: Leaf Nodes

More Related Content

What's hot

Operating PostgreSQL at Scale with Kubernetes
Operating PostgreSQL at Scale with KubernetesOperating PostgreSQL at Scale with Kubernetes
Operating PostgreSQL at Scale with Kubernetes
Jonathan Katz
 

What's hot (20)

NATS vs HTTP for Interservice Communication
NATS vs HTTP for Interservice CommunicationNATS vs HTTP for Interservice Communication
NATS vs HTTP for Interservice Communication
 
KubeConEU - NATS Deep Dive
KubeConEU - NATS Deep DiveKubeConEU - NATS Deep Dive
KubeConEU - NATS Deep Dive
 
Simple and Scalable Microservices: Using NATS with Docker Compose and Swarm
Simple and Scalable Microservices: Using NATS with Docker Compose and Swarm Simple and Scalable Microservices: Using NATS with Docker Compose and Swarm
Simple and Scalable Microservices: Using NATS with Docker Compose and Swarm
 
Using NATS for Control Flow in Distributed Systems
Using NATS for Control Flow in Distributed SystemsUsing NATS for Control Flow in Distributed Systems
Using NATS for Control Flow in Distributed Systems
 
Implementing Microservices with NATS
Implementing Microservices with NATSImplementing Microservices with NATS
Implementing Microservices with NATS
 
NATS for Modern Messaging and Microservices
NATS for Modern Messaging and Microservices NATS for Modern Messaging and Microservices
NATS for Modern Messaging and Microservices
 
Deep dive into Kubernetes Networking
Deep dive into Kubernetes NetworkingDeep dive into Kubernetes Networking
Deep dive into Kubernetes Networking
 
SF Python Meetup - Introduction to NATS Messaging with Python3
SF Python Meetup - Introduction to NATS Messaging with Python3SF Python Meetup - Introduction to NATS Messaging with Python3
SF Python Meetup - Introduction to NATS Messaging with Python3
 
Actor Patterns and NATS - Boulder Meetup
Actor Patterns and NATS - Boulder MeetupActor Patterns and NATS - Boulder Meetup
Actor Patterns and NATS - Boulder Meetup
 
Building an Event Streaming Architecture with Apache Pulsar
Building an Event Streaming Architecture with Apache PulsarBuilding an Event Streaming Architecture with Apache Pulsar
Building an Event Streaming Architecture with Apache Pulsar
 
NATS Connect Live | Distributed Identity & Authorization
NATS Connect Live | Distributed Identity & AuthorizationNATS Connect Live | Distributed Identity & Authorization
NATS Connect Live | Distributed Identity & Authorization
 
Operating PostgreSQL at Scale with Kubernetes
Operating PostgreSQL at Scale with KubernetesOperating PostgreSQL at Scale with Kubernetes
Operating PostgreSQL at Scale with Kubernetes
 
Thanos - Prometheus on Scale
Thanos - Prometheus on ScaleThanos - Prometheus on Scale
Thanos - Prometheus on Scale
 
PostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized WorldPostgreSQL High Availability in a Containerized World
PostgreSQL High Availability in a Containerized World
 
Microservices Meetup San Francisco - August 2017 Talk on NATS
Microservices Meetup San Francisco - August 2017 Talk on NATSMicroservices Meetup San Francisco - August 2017 Talk on NATS
Microservices Meetup San Francisco - August 2017 Talk on NATS
 
(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview
 
Everything You Need To Know About Persistent Storage in Kubernetes
Everything You Need To Know About Persistent Storage in KubernetesEverything You Need To Know About Persistent Storage in Kubernetes
Everything You Need To Know About Persistent Storage in Kubernetes
 
Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
 
Ch 02 --- sdn and openflow architecture
Ch 02 --- sdn and openflow architectureCh 02 --- sdn and openflow architecture
Ch 02 --- sdn and openflow architecture
 
Ingress overview
Ingress overviewIngress overview
Ingress overview
 

Similar to KubeCon + CloudNative Con NA 2021 | A New Generation of NATS

Hacking apache cloud stack
Hacking apache cloud stackHacking apache cloud stack
Hacking apache cloud stack
Nitin Mehta
 

Similar to KubeCon + CloudNative Con NA 2021 | A New Generation of NATS (20)

Wso2 esb 5.0.0 product release webinar
Wso2 esb 5.0.0   product release webinarWso2 esb 5.0.0   product release webinar
Wso2 esb 5.0.0 product release webinar
 
Netflix Data Pipeline With Kafka
Netflix Data Pipeline With KafkaNetflix Data Pipeline With Kafka
Netflix Data Pipeline With Kafka
 
Netflix Data Pipeline With Kafka
Netflix Data Pipeline With KafkaNetflix Data Pipeline With Kafka
Netflix Data Pipeline With Kafka
 
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
Netflix Keystone Pipeline at Big Data Bootcamp, Santa Clara, Nov 2015
 
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and FriendsPortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
 
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUpStrimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
Strimzi - Where Apache Kafka meets OpenShift - OpenShift Spain MeetUp
 
Captial One: Why Stream Data as Part of Data Transformation?
Captial One: Why Stream Data as Part of Data Transformation?Captial One: Why Stream Data as Part of Data Transformation?
Captial One: Why Stream Data as Part of Data Transformation?
 
Implementing Microservices with NATS
Implementing Microservices with NATSImplementing Microservices with NATS
Implementing Microservices with NATS
 
Messaging-as-a-Service Rivieradev 2017
Messaging-as-a-Service Rivieradev 2017Messaging-as-a-Service Rivieradev 2017
Messaging-as-a-Service Rivieradev 2017
 
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a MonthUSENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
USENIX LISA15: How TubeMogul Handles over One Trillion HTTP Requests a Month
 
CloudStack In Production
CloudStack In ProductionCloudStack In Production
CloudStack In Production
 
Osacon 2021 hello hydrate! from stream to clickhouse with apache pulsar and...
Osacon 2021   hello hydrate! from stream to clickhouse with apache pulsar and...Osacon 2021   hello hydrate! from stream to clickhouse with apache pulsar and...
Osacon 2021 hello hydrate! from stream to clickhouse with apache pulsar and...
 
Hacking apache cloud stack
Hacking apache cloud stackHacking apache cloud stack
Hacking apache cloud stack
 
Uber: Kafka Consumer Proxy
Uber: Kafka Consumer ProxyUber: Kafka Consumer Proxy
Uber: Kafka Consumer Proxy
 
AMQP with RabbitMQ
AMQP with RabbitMQAMQP with RabbitMQ
AMQP with RabbitMQ
 
Timothy Spann: Apache Pulsar for ML
Timothy Spann: Apache Pulsar for MLTimothy Spann: Apache Pulsar for ML
Timothy Spann: Apache Pulsar for ML
 
WSO2 Product Release Webinar: WSO2 Enterprise Service Bus 5.0
WSO2 Product Release Webinar: WSO2 Enterprise Service Bus 5.0WSO2 Product Release Webinar: WSO2 Enterprise Service Bus 5.0
WSO2 Product Release Webinar: WSO2 Enterprise Service Bus 5.0
 
Uber Real Time Data Analytics
Uber Real Time Data AnalyticsUber Real Time Data Analytics
Uber Real Time Data Analytics
 
Cloud Messaging Service: Technical Overview
Cloud Messaging Service: Technical OverviewCloud Messaging Service: Technical Overview
Cloud Messaging Service: Technical Overview
 
Event driven architectures with Kinesis
Event driven architectures with KinesisEvent driven architectures with Kinesis
Event driven architectures with Kinesis
 

More from NATS

More from NATS (15)

NATS Connect Live | Serverless on Kubernetes with OpenFaaS & NATS
NATS Connect Live | Serverless on Kubernetes with OpenFaaS & NATSNATS Connect Live | Serverless on Kubernetes with OpenFaaS & NATS
NATS Connect Live | Serverless on Kubernetes with OpenFaaS & NATS
 
NATS Connect Live | SwimOS & NATS
NATS Connect Live | SwimOS & NATSNATS Connect Live | SwimOS & NATS
NATS Connect Live | SwimOS & NATS
 
NATS Connect Live | Pub/Sub on the Power Grid
NATS Connect Live | Pub/Sub on the Power GridNATS Connect Live | Pub/Sub on the Power Grid
NATS Connect Live | Pub/Sub on the Power Grid
 
NATS Connect Live | NATS as a Service Mesh
NATS Connect Live | NATS as a Service MeshNATS Connect Live | NATS as a Service Mesh
NATS Connect Live | NATS as a Service Mesh
 
NATS Connect Live | Resgate
NATS Connect Live | ResgateNATS Connect Live | Resgate
NATS Connect Live | Resgate
 
NATS Connect Live | NATS & Augmented Reality
NATS Connect Live | NATS & Augmented RealityNATS Connect Live | NATS & Augmented Reality
NATS Connect Live | NATS & Augmented Reality
 
KubeCon NA 2019 Keynote | NATS - Past, Present, and the Future
KubeCon NA 2019 Keynote | NATS - Past, Present, and the FutureKubeCon NA 2019 Keynote | NATS - Past, Present, and the Future
KubeCon NA 2019 Keynote | NATS - Past, Present, and the Future
 
OSCON 2019 | Time to Think Different
OSCON 2019 | Time to Think DifferentOSCON 2019 | Time to Think Different
OSCON 2019 | Time to Think Different
 
Serverless for the Cloud Native Era with Fission
Serverless for the Cloud Native Era with FissionServerless for the Cloud Native Era with Fission
Serverless for the Cloud Native Era with Fission
 
Simple, Secure, Scalable Messaging for the Cloud Native Era - AllThingsOpen 2...
Simple, Secure, Scalable Messaging for the Cloud Native Era - AllThingsOpen 2...Simple, Secure, Scalable Messaging for the Cloud Native Era - AllThingsOpen 2...
Simple, Secure, Scalable Messaging for the Cloud Native Era - AllThingsOpen 2...
 
Writing Networking Clients in Go - GopherCon 2017 talk
Writing Networking Clients in Go - GopherCon 2017 talkWriting Networking Clients in Go - GopherCon 2017 talk
Writing Networking Clients in Go - GopherCon 2017 talk
 
Integration Patterns for Microservices Architectures
Integration Patterns for Microservices ArchitecturesIntegration Patterns for Microservices Architectures
Integration Patterns for Microservices Architectures
 
Simple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder Meetup Simple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder Meetup
 
How Greta uses NATS to revolutionize data distribution on the Internet
How Greta uses NATS to revolutionize data distribution on the Internet How Greta uses NATS to revolutionize data distribution on the Internet
How Greta uses NATS to revolutionize data distribution on the Internet
 
How Clarifai uses NATS and Kubernetes for Machine Learning
How Clarifai uses NATS and Kubernetes for Machine Learning How Clarifai uses NATS and Kubernetes for Machine Learning
How Clarifai uses NATS and Kubernetes for Machine Learning
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Recently uploaded (20)

Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

KubeCon + CloudNative Con NA 2021 | A New Generation of NATS

  • 1.
  • 2. Jean-Noël Moyne, Synadia Solutions & Engineering jnm@synadia.com Matthias Hanel, Synadia Engineering mh@synadia.com A New Generation of NATS
  • 3. What is NATS? NATS is a complete, production-proven, cloud-native messaging system Made for developers and operators who want to spend more time doing their work and less time worrying about how to do messaging ● DNA: Performance, simplicity, security, and availability ● Runs and can be deployed anywhere from the cloud to the edge ● NATS 2: the best coverage messaging features
  • 4. NATS Community Ecosystem in numbers ● Over 1,000 contributors, over 100 with more than 10 commits ● 30+ public repos ● 40+ client libraries ● 23,000+ GitHub stars across repos ● 10K GitHub stars just for nats-server (~1,000 Forks) ● ~150M NATS Server Docker Hub pulls ● ~3,500 Slack members https://github.com/nats-io
  • 18. NATS 2 Timeline ● Constant improvements as well as new features ● 2.0 (June 2019) ○ Security with Multi-tenancy ○ Global and multi-cloud deployments ● 2.2 (March 2021) ○ JetStream ○ Websocket and MQTT server support ○ nats CLI tool ○ Subject mapping ○ Message headers ○ Lame duck mode ○ ‘No responders’ ● 2.3 & 2.4 ○ Monitoring and management ○ Encryption at rest, OCSP Stapling ○ K/V Store ● 14 releases of nats-server in the last 12 months
  • 19. Security: Decentralized administration ● Hierarchical, delegated administration ● Signed JWTs describe operators, accounts and users ○ Operators create accounts ○ Accounts create users ○ Users present their credentials and permissions ● No need to configure the servers with account or user data ○ Servers only need to validate the trust chain of the JWT using the operator public key ○ Servers never need to know any private key ● Delegate administration of accounts and users by distributing the private keys
  • 20. Security: Multi-tenancy ● Users are applications ○ Adapter instances, single-tenant instances of services and message streams ○ Only need to present their JWT ○ User JWTs are created by accounts (key holders) and hold the definition of which subjects the user can publish or subscribe to ● Accounts can be tenants, or business units ○ Isolated subject name space per account ○ Single tenant environments, Shared multi-tenant services, message streams, Control plane ○ Account JWTs are created by operators and define message routing between accounts
  • 21. JetStream: Next generation Streaming ● Distributed persistence layer for NATS ● Streaming functionality ○ Replaces STAN (aka ‘NATS Streaming’) ○ Integration with core NATS ■ Provides a transition path of existing NATS application to streaming ● Distributed and consistent ○ Uses NATS optimized RAFT quorum algorithm ● FT and DR with replication ○ 1, 3, or 5 servers ○ Mirroring between streams ● File or Memory storage ● Decoupled Flow control ○ publisher to stream (server) and stream (server) to subscribers/consumers
  • 22. JetStream: Next generation Streaming ● Integrated with the security and multi-tenancy functionalities of NATS ○ Control the import/export of streams between accounts ● Streams can have multiple sources ○ Multiple subjects, wildcards, other streams ○ Subject filtering for consumers ● 3 retention policies available ○ limits, interest and working-queue ● Per stream and per subject message limits ● Many Replay policies ○ All, last, new, by starting sequence number, by start time ○ Last message per subject on a stream ○ Instant or original replay policy continued...
  • 23. JetStream: Next generation Streaming ● Push and Pull (with batching) consumers ● Durable or ephemeral consumers ● Explicit or automatic acknowledgements ○ Ack/Nack/InProgress ● Explicit or ‘All’ acknowledgements ● Exactly once delivery ○ Combines Message Deduplication and double acks ● Mirroring ● Observable ● Encryption at rest ● Simple administration and low configuration! ● Speed!
  • 24. JetStream: More than just Streaming ● KV Store ○ Consistent put, get, delete ○ Watch to subscribe to changes ○ In-line coherent cache ○ History per key ● More to come...
  • 25. ● Simple mapping: “foo” -> “bar” ○ “service.foo” -> “service.foo.v1” ● Subject token re-ordering: “bar.*.*” -> “baz.$2.$1” ● Weighted mappings for traffic shaping ○ E.g. “service.foo” -> 90% to “service.foo.v1” / 10% to “service.foo.v2” ○ A/B testing, canary releases ○ Introduce artificial message ‘loss’ ● You can ‘reload’ the server to make changes with zero downtime ● Mappings can be global or per account ● Mappings can also happen between accounts Subject Mapping
  • 26. NATS CLI Tool CLI tool for interacting, monitoring and administering NATS and streams ● Publish, subscribe, request and reply ● View server, connection, stream and consumer information, system events and reports ● View a lot of information about the servers/connections/accounts/latencies/etc... ● On the fly administration and monitoring of streams and consumers ○ Create/delete streams and consumers ○ View information and reports on streams ○ View, monitor and remove messages in streams ○ Backup and restore streams ○ Interact with the stream’s RAFT cluster ● K/V operations ● Benchmarks (pub/sub, request/reply, stream sync/async publishers and consumers) ● Built-in cheats: e.g. nats cheat bench
  • 28. Deployment Architectures: Adaptive Edge ● Multiple data centers ● Multiple regions ● Multiple clouds ● On-prem ● On the Edge ○ Partially connected … or any combination thereof ● Disaster recovery with geo-affinity for services