SlideShare a Scribd company logo
1 of 62
Download to read offline
Colin Sullivan
Easy, Secure, and Fast:
Using NATS.io for Streams
and Services
About Me
Colin Sullivan / @ColinSullivan1
Product Management @ Synadia.com
NATS Core maintainer since 2015
Building distributed systems for over 20 years
Agenda
✓ NATS Overview
✓ Streams and Services
✓ Topology
✓ Security
✓ Additional Features & Roadmap
What is NATS?
NATS is a ten year old production proven cloud-native distributed
communications 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
✓ Built from the ground up to be cloud native
✓ Multiple qualities of service
✓ Support for multiple communication patterns
✓ Over 40 types of clients
Use Cases
● Cloud Messaging
✓ Services (microservices)
✓ Event/Data Streaming (observability, analytics)
✓ Command and Control
● IoT and Edge
✓ Telemetry / Sensor Data / Command and Control
● Augmenting or Replacing Legacy Messaging
CNCF Landscape
Joined CNCF as an
incubation project
in 2018
https://landscape.cncf.io
Contribution Statistics
● Over 1000 contributors, over 100 with more than 10 commits
● Over 90 public repos
○ 18,600+ GitHub stars across repos
● ~79M NATS Server Docker Hub pulls
● ~50M NATS Streaming Server Docker Hub pulls
● 2300+ Slack members
● 35 releases of the NATS server since June 2014, ~= 5/year
https://nats.devstats.cncf.io/d/9/developers-summary
History
Created by Derek Collison
Derek has been building messaging systems
and solutions > 30 yrs
Maintained by a highly experienced
messaging team
Engaged User Community
Derek Collison
Founder and CEO at Synadia
Founder and former CEO at Apcera
CTO, Chief Architect at VMware
Architected CloudFoundry
Technical Director at Google
SVP and Chief Architect at TIBCO
End Users
Simplicity
● The server is a single binary deployable anywhere
● 10.2 MB docker image with no external dependencies
● “Text-based” protocol with a handful of verbs
PUB | HPUB | SUB | UNSUB | CONNECT | INFO | MSG | HMSG | -ERR | +OK | PING | PONG
● Low Configuration
✓ Clients only need a url and credentials
✓ Servers auto-discover
✓ You can share configuration files amongst servers
● Simple and Straightforward API
NATS Clients
Mess
Messaging Patterns:
Streams and Services
Streams and Services
● Streams
✓ A flow of data
✓ Fan out
● Services
✓ Do some work and return a result
✓ Load balanced
Application Level Patterns
✓ Request/Reply
✓ Publish/Subscribe
✓ Load Balanced Queue Subscribers
✓ New high level API Coming!
Subjects
A subject is simply a string representing an interest in data.
● Simple subject: foo or weather
● Hierarchically Tokenized: foo.bar, weather.us.co.denver
● Wildcard subscriptions
✓ foo.* matches foo.bar and foo.baz.
✓ foo.*.bar matches foo.a.bar and foo.b.bar.
✓ foo.> matches any of the above
✓ > matches everything in NATS
● Unique subjects for 1:1 addressability
Streams 1:N
NATS
Client
SUB foo
PUB foo
NATS
Client
SUB foo
NATS
Client
SUB foo
NATS will fan out published messages to all
interested subscribers.
Streaming Code
Services 1:1
NATS
Client
Responder
Using unique reply subjects, clients can make requests
to services that respond only to the requestor, creating
a 1 to 1 relationship.
Request
Service Code
Load Balancing
NATS
Client
SUB foo
PUB foo NATS
Client
SUB foo
NATS
Client
SUB foo
When subscribers are grouped together in a named
queue group, NATS will randomly distribute
messages to the subscribers, allowing NATS to act as
a layer 7 load balancer for services.
Load Balancing
NATS
Client
SUB foo
PUB foo
NATS
Client
SUB foo
NATS
Client
SUB foo
Load Balancing
NATS
Client
SUB foo
PUB foo
NATS
Client
SUB foo
NATS
Client
SUB foo
Load Balancing
NATS
Client
SUB foo
PUB foo
NATS
Client
SUB foo
NATS
Client
SUB foo
Topology
Topology Building Blocks
Server
Super Cluster
Cluster
Leaf Node
Standalone NATS Server
Multiple NATS servers routed
together acting as one component
A cluster of NATS clusters
Clients require no awareness of server topology beyond a connection URL.
A NATS server connected to a
cluster, but not part of it
Server
NATS
Client
NATS
Client
Clusters
NATS
Client
NATS
Client
Superclusters
Superclusters are clusters of clusters connected
together with gateway connections. They use a
spline based technology to ensure resiliency and
optimize traffic across clusters.
Cluster A
Cluster B
Gateway Connections
Superclusters
US-West
US-East
Asia-West
Multiple clusters can be linked together to
form vast network topologies that consider
WAN network links and latency.
Leaf Nodes
✓ A leaf node is a single NATS server extended out from a cluster or
remote server.
✓ Leaf nodes extend clusters via a hub and spoke topology.
✓ Leaf nodes allow you to bridge separate security domains.
✓ Ideal for edge computing, IoT hubs, or data centers that need to be
connected to a global, regional, or national NATS deployment.
✓ Transparently bridge on-premise and cloud deployments.
Global Deployment
Supercluster
Leaf Node
Leaf Node in a
Remote Cluster
San Diego HQ
Cluster (k8s)
Berlin Cluster (VMs)
London Cluster
(k8s)
Security
Security Basics
● Full TLS Support: CA certificates, bidirectional support, default
to most secure ciphers.
✓ Support for DN or SAN in certificates for NATS user identity
● Support for standard user/password auth
● Permissions restrict who can send and receive on what subjects
● Change these through configuration reload at runtime with zero
downtime.
● Operator Mode with NATS >= 2.0
Multi-Tenancy
Operator
Account BAccount A
User 1 User 2 User 1 User 2
Distributed Security - Trust
NATS allows you to define Operators, Accounts, and Users within a NATS
deployment.
● Operator: Root of trust for the system, e.g. An enterprise operator.
○ Create Accounts for account administrators. An account represents
an organization with a secure context within the NATS deployment,
for example a VAS system, an IT system monitoring group, a set of
microservices, etc. Account creation would likely be managed by a
central group.
● Accounts define limits and may securely expose services and streams
○ Account managers create Users with permissions
● Users have specific credentials and permissions.
Distribute Security - Accounts
● Accounts are isolated communication contexts allowing secure
multi-tenancy
● Bifurcate technology from business driven use cases
✓ Data silos are created by design, not software limitations
● Easy, Secure and Cost Effective
✓ One NATS deployment for operators to manage
✓ Decentralized - organizations can self-manage
● Share data between accounts
✓ Secure Streams and Services
✓ Only mutual agreement will permit data flow
Distributed Security - Identities
JWTs are used to represent identities in NATS
● User, Account, Cluster, or Server
User JWTs Contain
● Account NKey (Issuer)
● Public NKey (Subject)
● Friendly Name
● Permissions, limits, not-before and expiration
● NKey is a NATS Key - ED25519 key made easy
Distributed Security - NKeys
Used by the NATS Identity authentication and authorization system.
● ED25519 based encoded keys made simple
✓ Fast and resistant to side-channel attacks
✓ Sign and Verify
● NATS servers never see private keys
✓ Server sends nonce during connect then verifies the nonce signed by
the user’s private key, and user JWT signed by an account private key.
● JWT associate users with accounts and permission sets
● Managed with a the NATS nsc command line interface
Topology + Security =
Adaptive Edge Architecture
Adaptive Edge Architecture
Adaptive Edge Architecture
Adaptive Edge Architecture
Use Case Central Shared Services or Streams Remote Entity Endpoints
Connected Car Headquarters Location Services, Weather, Metrics,
Security
Vehicle Various systems within the vehicle
Manufacturing Regional, Divisional, or National
Headquarters per cluster
Analytics, QA, Schematic updates,
inventory
Factory Line Equipment
Retail Regional Headquarters per cluster Points programs, Ad rewards,
coupons, logistics
Stores, Distribution Centers Scanners, POS devices, inventory
Energy Headquarters and DR sites Power source scheduling, outage
recovery coordination, metrics
Microgrids, Wind Turbine sites, Feeder
Lines, Mobile Substations
Photovoltaic,
Turbines, power boxes, field
diagnostics, smart meters.
Aviation Each Airport hosts a cluster in the
supercluster
Weather, Socials, Air Traffic Gates, Airplanes, Luggage systems Airline systems, Gate software, Airport
Applications
Cellular/Mobile Headquarters, with many regional
clusters
Thousands of services, from call
blocking, forwarding to IoT specific
services.
Cell Towers (5g), Macrocell, Small Cell
Sites
Web and phone applications, websites
Credit Card Services Each cluster in a regional
headquarters and DR sites
Points programs, fraud detection,
country specific value-added services
Regional or by location (brick and
mortar)
Websites, Applications, POS devices.
Cruise Lines Global Supercluster Logistics, manifest management,
Passenger loyalty,
Cruise Ship Various Systems from Engine to
Inventory
Shipping Container Ships Global Supercluster Logistics, Traffic, Manifest
management, planned maintenance,
Cargo Ship Inventory management equipment,
Location telemetry
Trucking Regional / International Supercluster Dispatch Services, Maintenance, Fleet
management services, Traffic Services
Vehicle Location telemetry, component health
(engine/tire management).
Adaptive Edge Example
Airline Topology Example
Airline Account Example
Frankfurt Airport
Weather Service
ML/AI
Applications
Lufthansa
Ryanair
Accounts isolate data flowing
through NATS to create logical
silos and share only specific
services and streams.
Ryanair
Application
Airport Application
Performance and Scalability
Performance
18 million messages per second with one server, one data stream.
Up to 80 million messages per second per server with multiple data
streams.
Availability
The health and availability of the system as a whole is prioritized
over servicing any individual client or server…
✓ NATS server “selfish optimization”
→ Protects against Slow Consumers
✓ Full Mesh clustering of NATS servers
✓ Server and client connections self heal
… this creates a NATS dial-tone, always on, always available.
Auto Discovery
● Auto-Discovery
✓ Automatically Exchange Server Topology
✓ Server ⇆ Server
✓ Server → Client
● No configuration updates
✓ Failover to auto-discovered servers
● Great for rolling upgrades
Message Delivery Guarantees
Message Guarantees
NATS supports two delivery modes providing the following
guarantees:
● At most once (Core)
✓ No guarantee of delivery - messages can be lost - applications must
detect and handle lost messages
● At least once (NATS Streaming or JetStream enabled core servers)
✓ A message will always be delivered, but in certain cases may be
delivered more than once
Exactly once is arguably unnecessary, always complex, and inevitably slow.
But due to popular demand we’ve decided to support it in JetStream.
JetStream
JetStream supports:
✓ Data at rest encryption
✓ Cleanse specific messages (GDPR)
✓ Horizontal scalability
✓ Persist Streams and replay via
Consumers
✓ At-least-once delivery
✓ Store messages and replay by time
or sequence
✓ Embedded NATS server subsystem
with an option to enable
✓ Wildcard Support
✓ NATS 2.0 Security
JetStream and NATS Streaming
NATS Streaming will continue to be supported.
✓ 50 million docker downloads
✓ Deployed in production globally
✓ Bug fixes and Security fixes until June of 2022
Moving forward...
✓ New NATS enabled applications should prefer Jetstream
✓ We will provide a migration path to use JetStream
✓ New NATS streaming development will occur in JetStream
Tracing, Monitoring, and
Kubernetes Deployments
Distributed Tracing
OpenTracing reference implementations are provided for the java (not.java repo) and go (not.go repo). Using
a simple API, encode and decode NATS messages to be traced with Jaeger.
Integrations
We’re continuing to integrate NATS with other technologies.
● Spring.io
✓ NATS Spring Boot Starter
✓ NATS Cloud Stream Binder
● NATS Kafka Bridge
✓ Support for bridging to and from Kafka topics
● NATS JMS Bridge
✓ Support for bridging to and from JMS vendors, first with IBM MQ
series
NATS Surveyor
Surveyor can monitor your entire deployment from a single
container or process paired with Prometheus and Grafana.
✓ Provides a comprehensive view of entire NATS deployment
✓ No sidecars to deploy
✓ K8s, docker compose, or bare metal deployments
✓ Run using Docker Compose
✓ Requires NATS 2.0 Security and System Credentials
NATS Surveyor
Kubernetes Deployments
● A single command line to install (NATS v2 auth included)
✓ curl -sSL https://nats-io.github.io/k8s/setup.sh | sh
● Stateful Sets (used via installer)
✓ NATS Server / NATS Streaming Server official examples
✓ NATS Operator is also changing to use StatefulSets internally
● Monitoring
✓ Surveyor Installation
Roadmap
Questions? More info:
slack.nats.io
nats.io/community
github.com/nats-io
@nats_io
https://nats.io
info@nats.io
Easy, Secure, and Fast: Using NATS.io for Streams and Services

More Related Content

What's hot

KubeConEU - NATS Deep Dive
KubeConEU - NATS Deep DiveKubeConEU - NATS Deep Dive
KubeConEU - NATS Deep Divewallyqs
 
Azure Networking (1).pptx
Azure Networking (1).pptxAzure Networking (1).pptx
Azure Networking (1).pptxRazith2
 
Azure Network Security Groups (NSG)
Azure Network Security Groups (NSG)Azure Network Security Groups (NSG)
Azure Network Security Groups (NSG)Shawn Ismail
 
Introduction to Azure
Introduction to AzureIntroduction to Azure
Introduction to AzureRobert Crane
 
Anton Grishko "Multi-cloud with Google Anthos, Kubernetes and Istio. How to s...
Anton Grishko "Multi-cloud with Google Anthos, Kubernetes and Istio. How to s...Anton Grishko "Multi-cloud with Google Anthos, Kubernetes and Istio. How to s...
Anton Grishko "Multi-cloud with Google Anthos, Kubernetes and Istio. How to s...Fwdays
 
Part 01: Azure Virtual Networks – An Overview
Part 01: Azure Virtual Networks – An OverviewPart 01: Azure Virtual Networks – An Overview
Part 01: Azure Virtual Networks – An OverviewNeeraj Kumar
 
Azure virtual network
Azure virtual networkAzure virtual network
Azure virtual networkLalit Rawat
 
NATS for Modern Messaging and Microservices
NATS for Modern Messaging and Microservices NATS for Modern Messaging and Microservices
NATS for Modern Messaging and Microservices NATS
 
Kubernetes best practices with GKE
Kubernetes best practices with GKEKubernetes best practices with GKE
Kubernetes best practices with GKEGDG Cloud Bengaluru
 
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 NATS
 
Microsoft Azure Technical Overview
Microsoft Azure Technical OverviewMicrosoft Azure Technical Overview
Microsoft Azure Technical Overviewgjuljo
 
Getting Started with Kubernetes
Getting Started with Kubernetes Getting Started with Kubernetes
Getting Started with Kubernetes VMware Tanzu
 
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...Amazon Web Services
 
Az 104 session 5: Azure networking
Az 104 session 5: Azure networkingAz 104 session 5: Azure networking
Az 104 session 5: Azure networkingAzureEzy1
 
Best Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformBest Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformDevOps.com
 
Azure networking update 201908
Azure networking update 201908 Azure networking update 201908
Azure networking update 201908 Jay Kim
 
A Deepdive into Azure Networking
A Deepdive into Azure NetworkingA Deepdive into Azure Networking
A Deepdive into Azure NetworkingKarim Vaes
 

What's hot (20)

KubeConEU - NATS Deep Dive
KubeConEU - NATS Deep DiveKubeConEU - NATS Deep Dive
KubeConEU - NATS Deep Dive
 
Azure Networking (1).pptx
Azure Networking (1).pptxAzure Networking (1).pptx
Azure Networking (1).pptx
 
Azure Network Security Groups (NSG)
Azure Network Security Groups (NSG)Azure Network Security Groups (NSG)
Azure Network Security Groups (NSG)
 
Introduction to Microsoft Azure Cloud
Introduction to Microsoft Azure CloudIntroduction to Microsoft Azure Cloud
Introduction to Microsoft Azure Cloud
 
Introduction to Azure
Introduction to AzureIntroduction to Azure
Introduction to Azure
 
Anton Grishko "Multi-cloud with Google Anthos, Kubernetes and Istio. How to s...
Anton Grishko "Multi-cloud with Google Anthos, Kubernetes and Istio. How to s...Anton Grishko "Multi-cloud with Google Anthos, Kubernetes and Istio. How to s...
Anton Grishko "Multi-cloud with Google Anthos, Kubernetes and Istio. How to s...
 
(ARC307) Infrastructure as Code
(ARC307) Infrastructure as Code(ARC307) Infrastructure as Code
(ARC307) Infrastructure as Code
 
Part 01: Azure Virtual Networks – An Overview
Part 01: Azure Virtual Networks – An OverviewPart 01: Azure Virtual Networks – An Overview
Part 01: Azure Virtual Networks – An Overview
 
Azure virtual network
Azure virtual networkAzure virtual network
Azure virtual network
 
NATS for Modern Messaging and Microservices
NATS for Modern Messaging and Microservices NATS for Modern Messaging and Microservices
NATS for Modern Messaging and Microservices
 
Kubernetes best practices with GKE
Kubernetes best practices with GKEKubernetes best practices with GKE
Kubernetes best practices with GKE
 
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
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
Microsoft Azure Technical Overview
Microsoft Azure Technical OverviewMicrosoft Azure Technical Overview
Microsoft Azure Technical Overview
 
Getting Started with Kubernetes
Getting Started with Kubernetes Getting Started with Kubernetes
Getting Started with Kubernetes
 
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
Using HashiCorp’s Terraform to build your infrastructure on AWS - Pop-up Loft...
 
Az 104 session 5: Azure networking
Az 104 session 5: Azure networkingAz 104 session 5: Azure networking
Az 104 session 5: Azure networking
 
Best Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with TerraformBest Practices of Infrastructure as Code with Terraform
Best Practices of Infrastructure as Code with Terraform
 
Azure networking update 201908
Azure networking update 201908 Azure networking update 201908
Azure networking update 201908
 
A Deepdive into Azure Networking
A Deepdive into Azure NetworkingA Deepdive into Azure Networking
A Deepdive into Azure Networking
 

Similar to Easy, Secure, and Fast: Using NATS.io for Streams and Services

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 FutureNATS
 
NLA Cloud Platform™ Datasheet | Infovista
NLA Cloud Platform™ Datasheet | InfovistaNLA Cloud Platform™ Datasheet | Infovista
NLA Cloud Platform™ Datasheet | InfovistaInfovista
 
Cisco connect montreal 2018 sd wan - delivering intent-based networking to th...
Cisco connect montreal 2018 sd wan - delivering intent-based networking to th...Cisco connect montreal 2018 sd wan - delivering intent-based networking to th...
Cisco connect montreal 2018 sd wan - delivering intent-based networking to th...Cisco Canada
 
Microservices for Application Modernisation
Microservices for Application ModernisationMicroservices for Application Modernisation
Microservices for Application ModernisationAjay Kumar Uppal
 
Hybrid Cloud – Enabling a Borderless Data Center for Your Business
Hybrid Cloud – Enabling a Borderless Data Center for Your BusinessHybrid Cloud – Enabling a Borderless Data Center for Your Business
Hybrid Cloud – Enabling a Borderless Data Center for Your BusinessAmazon Web Services
 
cloudblanket_nms_ds_revb
cloudblanket_nms_ds_revbcloudblanket_nms_ds_revb
cloudblanket_nms_ds_revbOri Guez
 
Cloud Migration headache? Ease the pain with Data Virtualization! (EMEA)
Cloud Migration headache? Ease the pain with Data Virtualization! (EMEA)Cloud Migration headache? Ease the pain with Data Virtualization! (EMEA)
Cloud Migration headache? Ease the pain with Data Virtualization! (EMEA)Denodo
 
NATS Internals, Strengths and Challenges
NATS Internals, Strengths and ChallengesNATS Internals, Strengths and Challenges
NATS Internals, Strengths and Challengessouravagrawal35
 
The Evolving Data Center Network: Open and Software-Defined
The Evolving Data Center Network: Open and Software-DefinedThe Evolving Data Center Network: Open and Software-Defined
The Evolving Data Center Network: Open and Software-DefinedDell World
 
Unit 1.2 move to cloud computing
Unit 1.2   move to cloud computingUnit 1.2   move to cloud computing
Unit 1.2 move to cloud computingeShikshak
 
(ENT211) Migrating the US Government to the Cloud | AWS re:Invent 2014
(ENT211) Migrating the US Government to the Cloud | AWS re:Invent 2014(ENT211) Migrating the US Government to the Cloud | AWS re:Invent 2014
(ENT211) Migrating the US Government to the Cloud | AWS re:Invent 2014Amazon Web Services
 
Succeeding with Secure Access Service Edge (SASE)
Succeeding with Secure Access Service Edge (SASE)Succeeding with Secure Access Service Edge (SASE)
Succeeding with Secure Access Service Edge (SASE)Cloudflare
 
Global Azure Bootcamp 2018 - Azure Network Security
Global Azure Bootcamp 2018 - Azure Network SecurityGlobal Azure Bootcamp 2018 - Azure Network Security
Global Azure Bootcamp 2018 - Azure Network SecurityScott Hoag
 
EMEA Tech Summit Dublin - Winning with SolidFire
EMEA Tech Summit Dublin - Winning with SolidFire EMEA Tech Summit Dublin - Winning with SolidFire
EMEA Tech Summit Dublin - Winning with SolidFire NetApp
 
Azure Overview Business Model Overview
Azure Overview Business Model OverviewAzure Overview Business Model Overview
Azure Overview Business Model Overviewrramabad
 
PLNOG14: The benefits of "OPEN" in networking for operators - Joerg Ammon, Br...
PLNOG14: The benefits of "OPEN" in networking for operators - Joerg Ammon, Br...PLNOG14: The benefits of "OPEN" in networking for operators - Joerg Ammon, Br...
PLNOG14: The benefits of "OPEN" in networking for operators - Joerg Ammon, Br...PROIDEA
 

Similar to Easy, Secure, and Fast: Using NATS.io for Streams and Services (20)

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
 
NLA Cloud Platform™ Datasheet | Infovista
NLA Cloud Platform™ Datasheet | InfovistaNLA Cloud Platform™ Datasheet | Infovista
NLA Cloud Platform™ Datasheet | Infovista
 
Cisco connect montreal 2018 sd wan - delivering intent-based networking to th...
Cisco connect montreal 2018 sd wan - delivering intent-based networking to th...Cisco connect montreal 2018 sd wan - delivering intent-based networking to th...
Cisco connect montreal 2018 sd wan - delivering intent-based networking to th...
 
Microservices for Application Modernisation
Microservices for Application ModernisationMicroservices for Application Modernisation
Microservices for Application Modernisation
 
Hybrid Cloud – Enabling a Borderless Data Center for Your Business
Hybrid Cloud – Enabling a Borderless Data Center for Your BusinessHybrid Cloud – Enabling a Borderless Data Center for Your Business
Hybrid Cloud – Enabling a Borderless Data Center for Your Business
 
cloudblanket_nms_ds_revb
cloudblanket_nms_ds_revbcloudblanket_nms_ds_revb
cloudblanket_nms_ds_revb
 
Cloud Migration headache? Ease the pain with Data Virtualization! (EMEA)
Cloud Migration headache? Ease the pain with Data Virtualization! (EMEA)Cloud Migration headache? Ease the pain with Data Virtualization! (EMEA)
Cloud Migration headache? Ease the pain with Data Virtualization! (EMEA)
 
NATS Internals, Strengths and Challenges
NATS Internals, Strengths and ChallengesNATS Internals, Strengths and Challenges
NATS Internals, Strengths and Challenges
 
Enterprise Cloud Transformation
Enterprise Cloud TransformationEnterprise Cloud Transformation
Enterprise Cloud Transformation
 
The Evolving Data Center Network: Open and Software-Defined
The Evolving Data Center Network: Open and Software-DefinedThe Evolving Data Center Network: Open and Software-Defined
The Evolving Data Center Network: Open and Software-Defined
 
Unit 1.2 move to cloud computing
Unit 1.2   move to cloud computingUnit 1.2   move to cloud computing
Unit 1.2 move to cloud computing
 
(ENT211) Migrating the US Government to the Cloud | AWS re:Invent 2014
(ENT211) Migrating the US Government to the Cloud | AWS re:Invent 2014(ENT211) Migrating the US Government to the Cloud | AWS re:Invent 2014
(ENT211) Migrating the US Government to the Cloud | AWS re:Invent 2014
 
Succeeding with Secure Access Service Edge (SASE)
Succeeding with Secure Access Service Edge (SASE)Succeeding with Secure Access Service Edge (SASE)
Succeeding with Secure Access Service Edge (SASE)
 
Global Azure Bootcamp 2018 - Azure Network Security
Global Azure Bootcamp 2018 - Azure Network SecurityGlobal Azure Bootcamp 2018 - Azure Network Security
Global Azure Bootcamp 2018 - Azure Network Security
 
EMEA Tech Summit Dublin - Winning with SolidFire
EMEA Tech Summit Dublin - Winning with SolidFire EMEA Tech Summit Dublin - Winning with SolidFire
EMEA Tech Summit Dublin - Winning with SolidFire
 
Taw opening session
Taw opening sessionTaw opening session
Taw opening session
 
Serverless_with_MongoDB
Serverless_with_MongoDBServerless_with_MongoDB
Serverless_with_MongoDB
 
Azure Overview Business Model Overview
Azure Overview Business Model OverviewAzure Overview Business Model Overview
Azure Overview Business Model Overview
 
Stephen Wallo
Stephen WalloStephen Wallo
Stephen Wallo
 
PLNOG14: The benefits of "OPEN" in networking for operators - Joerg Ammon, Br...
PLNOG14: The benefits of "OPEN" in networking for operators - Joerg Ammon, Br...PLNOG14: The benefits of "OPEN" in networking for operators - Joerg Ammon, Br...
PLNOG14: The benefits of "OPEN" in networking for operators - Joerg Ammon, Br...
 

More from NATS

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 & NATSNATS
 
NATS Connect Live!
NATS Connect Live!NATS Connect Live!
NATS Connect Live!NATS
 
NATS Connect Live | SwimOS & NATS
NATS Connect Live | SwimOS & NATSNATS Connect Live | SwimOS & NATS
NATS Connect Live | SwimOS & NATSNATS
 
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 GridNATS
 
NATS Connect Live | Distributed Identity & Authorization
NATS Connect Live | Distributed Identity & AuthorizationNATS Connect Live | Distributed Identity & Authorization
NATS Connect Live | Distributed Identity & AuthorizationNATS
 
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 MeshNATS
 
NATS Connect Live | Resgate
NATS Connect Live | ResgateNATS Connect Live | Resgate
NATS Connect Live | ResgateNATS
 
NATS Connect Live | NATS & Augmented Reality
NATS Connect Live | NATS & Augmented RealityNATS Connect Live | NATS & Augmented Reality
NATS Connect Live | NATS & Augmented RealityNATS
 
OSCON 2019 | Time to Think Different
OSCON 2019 | Time to Think DifferentOSCON 2019 | Time to Think Different
OSCON 2019 | Time to Think DifferentNATS
 
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 FissionNATS
 
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...NATS
 
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 NATSNATS
 
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 talkNATS
 
NATS vs HTTP for Interservice Communication
NATS vs HTTP for Interservice CommunicationNATS vs HTTP for Interservice Communication
NATS vs HTTP for Interservice CommunicationNATS
 
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 SystemsNATS
 
Integration Patterns for Microservices Architectures
Integration Patterns for Microservices ArchitecturesIntegration Patterns for Microservices Architectures
Integration Patterns for Microservices ArchitecturesNATS
 
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 NATS
 
Actor Patterns and NATS - Boulder Meetup
Actor Patterns and NATS - Boulder MeetupActor Patterns and NATS - Boulder Meetup
Actor Patterns and NATS - Boulder MeetupNATS
 
Implementing Microservices with NATS
Implementing Microservices with NATSImplementing Microservices with NATS
Implementing Microservices with NATSNATS
 
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 NATS
 

More from NATS (20)

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!
NATS Connect Live!NATS Connect Live!
NATS Connect Live!
 
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 | Distributed Identity & Authorization
NATS Connect Live | Distributed Identity & AuthorizationNATS Connect Live | Distributed Identity & Authorization
NATS Connect Live | Distributed Identity & Authorization
 
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
 
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...
 
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
 
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
 
NATS vs HTTP for Interservice Communication
NATS vs HTTP for Interservice CommunicationNATS vs HTTP for Interservice Communication
NATS vs HTTP for Interservice Communication
 
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
 
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
 
Actor Patterns and NATS - Boulder Meetup
Actor Patterns and NATS - Boulder MeetupActor Patterns and NATS - Boulder Meetup
Actor Patterns and NATS - Boulder Meetup
 
Implementing Microservices with NATS
Implementing Microservices with NATSImplementing Microservices with NATS
Implementing Microservices with NATS
 
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
 

Recently uploaded

WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxalwaysnagaraju26
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 

Recently uploaded (20)

WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 

Easy, Secure, and Fast: Using NATS.io for Streams and Services

  • 1. Colin Sullivan Easy, Secure, and Fast: Using NATS.io for Streams and Services
  • 2. About Me Colin Sullivan / @ColinSullivan1 Product Management @ Synadia.com NATS Core maintainer since 2015 Building distributed systems for over 20 years
  • 3. Agenda ✓ NATS Overview ✓ Streams and Services ✓ Topology ✓ Security ✓ Additional Features & Roadmap
  • 4. What is NATS? NATS is a ten year old production proven cloud-native distributed communications 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 ✓ Built from the ground up to be cloud native ✓ Multiple qualities of service ✓ Support for multiple communication patterns ✓ Over 40 types of clients
  • 5. Use Cases ● Cloud Messaging ✓ Services (microservices) ✓ Event/Data Streaming (observability, analytics) ✓ Command and Control ● IoT and Edge ✓ Telemetry / Sensor Data / Command and Control ● Augmenting or Replacing Legacy Messaging
  • 6. CNCF Landscape Joined CNCF as an incubation project in 2018 https://landscape.cncf.io
  • 7. Contribution Statistics ● Over 1000 contributors, over 100 with more than 10 commits ● Over 90 public repos ○ 18,600+ GitHub stars across repos ● ~79M NATS Server Docker Hub pulls ● ~50M NATS Streaming Server Docker Hub pulls ● 2300+ Slack members ● 35 releases of the NATS server since June 2014, ~= 5/year https://nats.devstats.cncf.io/d/9/developers-summary
  • 8. History Created by Derek Collison Derek has been building messaging systems and solutions > 30 yrs Maintained by a highly experienced messaging team Engaged User Community Derek Collison Founder and CEO at Synadia Founder and former CEO at Apcera CTO, Chief Architect at VMware Architected CloudFoundry Technical Director at Google SVP and Chief Architect at TIBCO
  • 10. Simplicity ● The server is a single binary deployable anywhere ● 10.2 MB docker image with no external dependencies ● “Text-based” protocol with a handful of verbs PUB | HPUB | SUB | UNSUB | CONNECT | INFO | MSG | HMSG | -ERR | +OK | PING | PONG ● Low Configuration ✓ Clients only need a url and credentials ✓ Servers auto-discover ✓ You can share configuration files amongst servers ● Simple and Straightforward API
  • 13. Streams and Services ● Streams ✓ A flow of data ✓ Fan out ● Services ✓ Do some work and return a result ✓ Load balanced
  • 14. Application Level Patterns ✓ Request/Reply ✓ Publish/Subscribe ✓ Load Balanced Queue Subscribers ✓ New high level API Coming!
  • 15. Subjects A subject is simply a string representing an interest in data. ● Simple subject: foo or weather ● Hierarchically Tokenized: foo.bar, weather.us.co.denver ● Wildcard subscriptions ✓ foo.* matches foo.bar and foo.baz. ✓ foo.*.bar matches foo.a.bar and foo.b.bar. ✓ foo.> matches any of the above ✓ > matches everything in NATS ● Unique subjects for 1:1 addressability
  • 16. Streams 1:N NATS Client SUB foo PUB foo NATS Client SUB foo NATS Client SUB foo NATS will fan out published messages to all interested subscribers.
  • 18. Services 1:1 NATS Client Responder Using unique reply subjects, clients can make requests to services that respond only to the requestor, creating a 1 to 1 relationship. Request
  • 20. Load Balancing NATS Client SUB foo PUB foo NATS Client SUB foo NATS Client SUB foo When subscribers are grouped together in a named queue group, NATS will randomly distribute messages to the subscribers, allowing NATS to act as a layer 7 load balancer for services.
  • 21. Load Balancing NATS Client SUB foo PUB foo NATS Client SUB foo NATS Client SUB foo
  • 22. Load Balancing NATS Client SUB foo PUB foo NATS Client SUB foo NATS Client SUB foo
  • 23. Load Balancing NATS Client SUB foo PUB foo NATS Client SUB foo NATS Client SUB foo
  • 25. Topology Building Blocks Server Super Cluster Cluster Leaf Node Standalone NATS Server Multiple NATS servers routed together acting as one component A cluster of NATS clusters Clients require no awareness of server topology beyond a connection URL. A NATS server connected to a cluster, but not part of it
  • 28. Superclusters Superclusters are clusters of clusters connected together with gateway connections. They use a spline based technology to ensure resiliency and optimize traffic across clusters. Cluster A Cluster B Gateway Connections
  • 29. Superclusters US-West US-East Asia-West Multiple clusters can be linked together to form vast network topologies that consider WAN network links and latency.
  • 30. Leaf Nodes ✓ A leaf node is a single NATS server extended out from a cluster or remote server. ✓ Leaf nodes extend clusters via a hub and spoke topology. ✓ Leaf nodes allow you to bridge separate security domains. ✓ Ideal for edge computing, IoT hubs, or data centers that need to be connected to a global, regional, or national NATS deployment. ✓ Transparently bridge on-premise and cloud deployments.
  • 31. Global Deployment Supercluster Leaf Node Leaf Node in a Remote Cluster San Diego HQ Cluster (k8s) Berlin Cluster (VMs) London Cluster (k8s)
  • 33. Security Basics ● Full TLS Support: CA certificates, bidirectional support, default to most secure ciphers. ✓ Support for DN or SAN in certificates for NATS user identity ● Support for standard user/password auth ● Permissions restrict who can send and receive on what subjects ● Change these through configuration reload at runtime with zero downtime. ● Operator Mode with NATS >= 2.0
  • 35. Distributed Security - Trust NATS allows you to define Operators, Accounts, and Users within a NATS deployment. ● Operator: Root of trust for the system, e.g. An enterprise operator. ○ Create Accounts for account administrators. An account represents an organization with a secure context within the NATS deployment, for example a VAS system, an IT system monitoring group, a set of microservices, etc. Account creation would likely be managed by a central group. ● Accounts define limits and may securely expose services and streams ○ Account managers create Users with permissions ● Users have specific credentials and permissions.
  • 36. Distribute Security - Accounts ● Accounts are isolated communication contexts allowing secure multi-tenancy ● Bifurcate technology from business driven use cases ✓ Data silos are created by design, not software limitations ● Easy, Secure and Cost Effective ✓ One NATS deployment for operators to manage ✓ Decentralized - organizations can self-manage ● Share data between accounts ✓ Secure Streams and Services ✓ Only mutual agreement will permit data flow
  • 37. Distributed Security - Identities JWTs are used to represent identities in NATS ● User, Account, Cluster, or Server User JWTs Contain ● Account NKey (Issuer) ● Public NKey (Subject) ● Friendly Name ● Permissions, limits, not-before and expiration ● NKey is a NATS Key - ED25519 key made easy
  • 38. Distributed Security - NKeys Used by the NATS Identity authentication and authorization system. ● ED25519 based encoded keys made simple ✓ Fast and resistant to side-channel attacks ✓ Sign and Verify ● NATS servers never see private keys ✓ Server sends nonce during connect then verifies the nonce signed by the user’s private key, and user JWT signed by an account private key. ● JWT associate users with accounts and permission sets ● Managed with a the NATS nsc command line interface
  • 39. Topology + Security = Adaptive Edge Architecture
  • 42. Adaptive Edge Architecture Use Case Central Shared Services or Streams Remote Entity Endpoints Connected Car Headquarters Location Services, Weather, Metrics, Security Vehicle Various systems within the vehicle Manufacturing Regional, Divisional, or National Headquarters per cluster Analytics, QA, Schematic updates, inventory Factory Line Equipment Retail Regional Headquarters per cluster Points programs, Ad rewards, coupons, logistics Stores, Distribution Centers Scanners, POS devices, inventory Energy Headquarters and DR sites Power source scheduling, outage recovery coordination, metrics Microgrids, Wind Turbine sites, Feeder Lines, Mobile Substations Photovoltaic, Turbines, power boxes, field diagnostics, smart meters. Aviation Each Airport hosts a cluster in the supercluster Weather, Socials, Air Traffic Gates, Airplanes, Luggage systems Airline systems, Gate software, Airport Applications Cellular/Mobile Headquarters, with many regional clusters Thousands of services, from call blocking, forwarding to IoT specific services. Cell Towers (5g), Macrocell, Small Cell Sites Web and phone applications, websites Credit Card Services Each cluster in a regional headquarters and DR sites Points programs, fraud detection, country specific value-added services Regional or by location (brick and mortar) Websites, Applications, POS devices. Cruise Lines Global Supercluster Logistics, manifest management, Passenger loyalty, Cruise Ship Various Systems from Engine to Inventory Shipping Container Ships Global Supercluster Logistics, Traffic, Manifest management, planned maintenance, Cargo Ship Inventory management equipment, Location telemetry Trucking Regional / International Supercluster Dispatch Services, Maintenance, Fleet management services, Traffic Services Vehicle Location telemetry, component health (engine/tire management).
  • 45. Airline Account Example Frankfurt Airport Weather Service ML/AI Applications Lufthansa Ryanair Accounts isolate data flowing through NATS to create logical silos and share only specific services and streams. Ryanair Application Airport Application
  • 47. Performance 18 million messages per second with one server, one data stream. Up to 80 million messages per second per server with multiple data streams.
  • 48. Availability The health and availability of the system as a whole is prioritized over servicing any individual client or server… ✓ NATS server “selfish optimization” → Protects against Slow Consumers ✓ Full Mesh clustering of NATS servers ✓ Server and client connections self heal … this creates a NATS dial-tone, always on, always available.
  • 49. Auto Discovery ● Auto-Discovery ✓ Automatically Exchange Server Topology ✓ Server ⇆ Server ✓ Server → Client ● No configuration updates ✓ Failover to auto-discovered servers ● Great for rolling upgrades
  • 51. Message Guarantees NATS supports two delivery modes providing the following guarantees: ● At most once (Core) ✓ No guarantee of delivery - messages can be lost - applications must detect and handle lost messages ● At least once (NATS Streaming or JetStream enabled core servers) ✓ A message will always be delivered, but in certain cases may be delivered more than once Exactly once is arguably unnecessary, always complex, and inevitably slow. But due to popular demand we’ve decided to support it in JetStream.
  • 52. JetStream JetStream supports: ✓ Data at rest encryption ✓ Cleanse specific messages (GDPR) ✓ Horizontal scalability ✓ Persist Streams and replay via Consumers ✓ At-least-once delivery ✓ Store messages and replay by time or sequence ✓ Embedded NATS server subsystem with an option to enable ✓ Wildcard Support ✓ NATS 2.0 Security
  • 53. JetStream and NATS Streaming NATS Streaming will continue to be supported. ✓ 50 million docker downloads ✓ Deployed in production globally ✓ Bug fixes and Security fixes until June of 2022 Moving forward... ✓ New NATS enabled applications should prefer Jetstream ✓ We will provide a migration path to use JetStream ✓ New NATS streaming development will occur in JetStream
  • 55. Distributed Tracing OpenTracing reference implementations are provided for the java (not.java repo) and go (not.go repo). Using a simple API, encode and decode NATS messages to be traced with Jaeger.
  • 56. Integrations We’re continuing to integrate NATS with other technologies. ● Spring.io ✓ NATS Spring Boot Starter ✓ NATS Cloud Stream Binder ● NATS Kafka Bridge ✓ Support for bridging to and from Kafka topics ● NATS JMS Bridge ✓ Support for bridging to and from JMS vendors, first with IBM MQ series
  • 57. NATS Surveyor Surveyor can monitor your entire deployment from a single container or process paired with Prometheus and Grafana. ✓ Provides a comprehensive view of entire NATS deployment ✓ No sidecars to deploy ✓ K8s, docker compose, or bare metal deployments ✓ Run using Docker Compose ✓ Requires NATS 2.0 Security and System Credentials
  • 59. Kubernetes Deployments ● A single command line to install (NATS v2 auth included) ✓ curl -sSL https://nats-io.github.io/k8s/setup.sh | sh ● Stateful Sets (used via installer) ✓ NATS Server / NATS Streaming Server official examples ✓ NATS Operator is also changing to use StatefulSets internally ● Monitoring ✓ Surveyor Installation