SlideShare a Scribd company logo
1 of 37
NATS for Modern Messaging and
Microservices
Presented by Alberto Ricart, Principal Engineer, NATS
•Community and Ecosystem Manager, NATS.io
• Ways to get involved in NATS Community:
- http://nats.io/community/
Brian Flannery
@brianflannery
brian.flannery@apcera.com
•Principal Engineer at Apcera
•Previously with
- TIBCO > 15 years
- Informatica
•Building messaging based systems > 20 years
Alberto Ricart
@alberto.ricart
alberto.ricart@apcera.com
- Learn/review messaging basics
- Use messaging patterns
- Describe a sample microservices application
‣ See how NATS and messaging features help us make our services better
What this webinar will cover
Part 1: Messaging Basics
๏ Messages - are the unit of data exchange
๏ Producers - send messages to the server
๏ Consumers - receive messages from the server
๏ Messaging Server - distributes messages from producers to consumers
Messaging architecture
๏Have a subject that describes the message contents
๏A payload
{location: {lat: 45.678, lng: 123.456}}
Messages
๏Subject names are extremely important
‣ They specify the destination of the message
Pokenats.eden-service.12.hb.1234
๏They consist of one or more elements (tokens) separated by dots
‣ The elements can be used to create a subject name hierarchies
‣ Individual elements can be thought of as metadata which a service could use
while processing the message
What’s in a subject?
๏Send messages to the server under a specific subject - ‘publishers’
๏Don’t assume the audience of the message
‣ Don’t care who consumes the message
๏A publisher may specify an optional “reply” subject to change the meaning of the
message
Producers
๏ Subscribe to receive messages matching a subscription
๏ Can specify a queue group name
‣ Single member of a queue group is chosen randomly to receive the message
๏ Can specify how many messages to receive before auto-canceling
• This is a big deal
Consumers
๏ Subscribers can specify wildcards
pokenats.eden-service.>
pokenats.*.*.hb.100
๏ ‘*’ matches any value in that element
๏ ‘>’ matches all elements that follow
‣ ‘>’ is only valid at the end of the subject
Subscription wildcards
๏ Highly performant, extremely light-weight
๏ Clustered servers/cluster-aware clients
‣ Built-in resiliency and high availability
๏ Text-based protocol (payload is an array of bytes)
‣ Use telnet to explore
๏ Monitorable on a dedicated port - returning JSON data describing the state of the
server
NATS server features
Chart source: http://bravenewgeek.com/dissecting-
message-queues/
๏ Server protects itself first
‣ Auto-pruning of slow/non-responsive clients
‣ Disconnects clients that send bad protocol messages
๏ At most once delivery
๏ Client APIs for many languages
‣ Community contributed: Spring, Lua, PHP, Python, Scala, Haskel, C#
MyNatsClient
‣ Easy to develop a client. Get involved!
NATS server features (Cont.)
๏ Provides additional features, built on top of NATS
‣ Clients publish to a streaming server
‣ Messages stored until number or size limits are reached
‣ Subscribers can request messages sent earlier
• Start with first/last/n-th/etc message
‣ Durable subscriptions
• Resume previous session
‣ At least once delivery
NATS streaming
Part 2: Messaging Patterns
- Publish-Subscribe
- Queueing
- Request-Reply
Three simple patterns
๏ Basic messaging pattern
‣ A producer publishes a message with a
specific subject
‣ All active consumers with subscriptions
matching the subject receive it
Publish-Subscribe 1-N
๏ It’s a publish-subscribe operation
‣ Consumers subscribe using a shared queue group
name
‣ A publisher sends a message
‣ The messaging server forwards to single
subscriber
‣ Non members of the queue group will get message
as standard pub-sub
‣ Multiple queue group names subscribers on the
same subject are possible
Queueing 1-1
(Subscribers using a shared queue group name)
๏ Producer creates a subscription to an
unique subject name (a.k.a. reply subject)
‣ Sets max number of messages to
receive
๏ The producer publishes a message with the
reply subject
๏ Subscribers receive the message and
publish a response to the reply subject
๏ Very efficient 1:1 of very large N
Request Reply 1-N
๏ Similar as before, but this time subscribers are
part of a queue group name
‣ Only one subscriber will get the request
Request Reply 1:1
๏ You can build massively scalable services, and achieve many features which would
require a lot effort otherwise
‣ Addressing
‣ Discovery
‣ Control plane
‣ Load balancing
‣ Fault-tolerance
‣ Location transparency
With these simple messaging patterns
๏ Use messaging for inter-service communication
‣ pub/sub, queuing, request/reply
๏ Broadcast heartbeats and health information
๏ Use control plane services to listen to service heartbeats
‣ Add, grow, shrink service queues based on health
๏ Adapt data exchanged by services
‣ Reduce integration points from 1 to N-1 to N
Microservices + messaging
Case Study: PokéNATS
Presented by Alberto Ricart, Principal Engineer, NATS
Small study describing how to a create simple and
highly scalable service with NATS messaging
Let’s put to work what we have learned...
• Design a small service oriented application
• Could have millions of users?
• Will release as a minimum viable product (many features tbd)
• How would you develop it?
- If you made it with HTTP and REST services would it scale?
- How would you manage it?
- How would you scale it?
- How would you cope with new features, changes and their deployment?
Take something seemingly simple like, Pokémon Go!
• Hugely popular augmented reality phone game that
launched in July 2016 based on Pokémon
• Players walk around and:
- Find Pokéstops near them
- Collect Pokémon pets found in the wild
- Level and evolve the pets to make them more powerful
- Battle their pets against other player’s
At its core
• It’s a massive sensor collector
- Operates in a very large playground
‣ Every few seconds new location information sent to one or more servers
‣ Every once in awhile, some game event happens
• One million players contributing sensor data every 5 seconds means:
‣ 12 million/min interactions just for the sensor information functionality
Being successful sometimes creates nightmares
•Imagine 130+ million downloads (Wikipedia number)
- A little times a lot in cloud scale is huge
- Any application is non-trivial at 1/1000 the success
‣ Performance
• Authentication
• Data persistence
• Business logic
‣ Monitoring & Management
PokéNATS Architecture
pokenats.s_type.id.event.grid
event: update | data | spawn | new
pokenats_admin.cmd.s_type.id
cmd: discover | kill | conf
pokenats_monitor.s_type.id.hb
pokenats_monitor.s_type.id.log.type
type: info | error | invalid
Scalability
•Queue group names allow load balancing of services
•Filtering on the subject name enables services to divide work (perhaps with
locality)
•Subscriptions from trainers filter updates and notifications from clients that are
not geographically near
•Request reply services could delay responding based on memory/cpu presure
Service Discovery
•Control service uses pokenats_admin.cmd.s_type.sid.discover required
sevices
•Missing services are spawned by the control service
•Filtering enables limiting the impact of a request based on a subject name
Fault-tolerance
• If more than one service, it is fault tolerant
‣Auto-heals when new services are added
• NATS can be configured in cluster mode
- Clients randomly connect to servers in the cluster to distribute connections
- Clients switch to a different server if their current connection fails
•Control service reacts to current information by adding and pruning
Load-balancing
•Queue groups again, help here
•HTTP/REST endpoints use a redirector or scaling strategy
Monitoring
•Log messages are sent under info/error monikers
•Heartbeats tell if services are alive and quantify their health
•Misbehaving clients (or attacks) are logged by re-publishing invalid requests
Management
•Control messages make services do something
- Update a configuration setting
- Exit
- Show itself
Future Changes
• Loosely coupled makes it easier
- Adding new services doesn’t affect the existing
- Easy to hot test new revs
‣Start a new service alongside the old
•If the new service is observed to work as desired, start more, stop the
old
•If the new service misbehaves, send a control command to kill it
‣By using queue subscriptions only 1/N clients are affected
‣Incremental deployments prevent embarrassing issues
•Integrating a new system?
- If data needs adapting, add a service to do translation!
Take-away
• Message-driven micro-services are:
- Better
- Smaller
- Highly scalable
- More manageable
- Able to cope with change and innovation
•More importantly, with careful patterns and design
- Code is usually simpler
- Robust - more resilient
@nats_io
http://www.nats.io
Learn More at
Thank You!

More Related Content

What's hot

Designing microservices platforms with nats
Designing microservices platforms with natsDesigning microservices platforms with nats
Designing microservices platforms with natsChanaka Fernando
 
KubeCon + CloudNative Con NA 2021 | A New Generation of NATS
KubeCon + CloudNative Con NA 2021 | A New Generation of NATSKubeCon + CloudNative Con NA 2021 | A New Generation of NATS
KubeCon + CloudNative Con NA 2021 | A New Generation of NATSNATS
 
Handle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaHandle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaJiangjie Qin
 
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
 
NATS Connect Live!
NATS Connect Live!NATS Connect Live!
NATS Connect Live!NATS
 
How to Design a Multi-Region Active-Active Architecture
How to Design a Multi-Region Active-Active ArchitectureHow to Design a Multi-Region Active-Active Architecture
How to Design a Multi-Region Active-Active ArchitectureAmazon Web Services
 
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals ExplainedApache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explainedconfluent
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQAraf Karsh Hamid
 
NATS Streaming - an alternative to Apache Kafka?
NATS Streaming - an alternative to Apache Kafka?NATS Streaming - an alternative to Apache Kafka?
NATS Streaming - an alternative to Apache Kafka?Anton Zadorozhniy
 
Introduction To RabbitMQ
Introduction To RabbitMQIntroduction To RabbitMQ
Introduction To RabbitMQKnoldus Inc.
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message BrokerMartin Toshev
 
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...Netgate
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewBob Killen
 
APACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsAPACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsKetan Gote
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to AnsibleKnoldus Inc.
 
NGINX: Basics and Best Practices
NGINX: Basics and Best PracticesNGINX: Basics and Best Practices
NGINX: Basics and Best PracticesNGINX, Inc.
 

What's hot (20)

Designing microservices platforms with nats
Designing microservices platforms with natsDesigning microservices platforms with nats
Designing microservices platforms with nats
 
KubeCon + CloudNative Con NA 2021 | A New Generation of NATS
KubeCon + CloudNative Con NA 2021 | A New Generation of NATSKubeCon + CloudNative Con NA 2021 | A New Generation of NATS
KubeCon + CloudNative Con NA 2021 | A New Generation of NATS
 
Handle Large Messages In Apache Kafka
Handle Large Messages In Apache KafkaHandle Large Messages In Apache Kafka
Handle Large Messages In Apache Kafka
 
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 Connect Live!
NATS Connect Live!NATS Connect Live!
NATS Connect Live!
 
kafka
kafkakafka
kafka
 
Nginx
NginxNginx
Nginx
 
How to Design a Multi-Region Active-Active Architecture
How to Design a Multi-Region Active-Active ArchitectureHow to Design a Multi-Region Active-Active Architecture
How to Design a Multi-Region Active-Active Architecture
 
Apache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals ExplainedApache Kafka Architecture & Fundamentals Explained
Apache Kafka Architecture & Fundamentals Explained
 
Apache Kafka
Apache KafkaApache Kafka
Apache Kafka
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
 
NATS Streaming - an alternative to Apache Kafka?
NATS Streaming - an alternative to Apache Kafka?NATS Streaming - an alternative to Apache Kafka?
NATS Streaming - an alternative to Apache Kafka?
 
Introduction To RabbitMQ
Introduction To RabbitMQIntroduction To RabbitMQ
Introduction To RabbitMQ
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message Broker
 
Container Networking Deep Dive
Container Networking Deep DiveContainer Networking Deep Dive
Container Networking Deep Dive
 
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...
Squid, SquidGuard, and Lightsquid on pfSense 2.3 & 2.4 - pfSense Hangout Janu...
 
Kubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive OverviewKubernetes - A Comprehensive Overview
Kubernetes - A Comprehensive Overview
 
APACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka StreamsAPACHE KAFKA / Kafka Connect / Kafka Streams
APACHE KAFKA / Kafka Connect / Kafka Streams
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
NGINX: Basics and Best Practices
NGINX: Basics and Best PracticesNGINX: Basics and Best Practices
NGINX: Basics and Best Practices
 

Viewers also liked

Simple and Scalable Microservices: Using NATS with Docker Compose and Swarm
Simple and Scalable Microservices: Using NATS with Docker Compose and SwarmSimple and Scalable Microservices: Using NATS with Docker Compose and Swarm
Simple and Scalable Microservices: Using NATS with Docker Compose and SwarmApcera
 
The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATSThe Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATSApcera
 
Nats in action a real time microservices architecture handled by nats
Nats in action   a real time microservices architecture handled by natsNats in action   a real time microservices architecture handled by nats
Nats in action a real time microservices architecture handled by natsRaul Perez
 
Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Apcera
 
NATS: A Central Nervous System for IoT Messaging - Larry McQueary
NATS: A Central Nervous System for IoT Messaging - Larry McQuearyNATS: A Central Nervous System for IoT Messaging - Larry McQueary
NATS: A Central Nervous System for IoT Messaging - Larry McQuearyApcera
 
Patterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATSPatterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATSApcera
 
How Greta uses NATS to revolutionize data distribution on the Internet
How Greta uses NATS to revolutionize data distribution on the InternetHow Greta uses NATS to revolutionize data distribution on the Internet
How Greta uses NATS to revolutionize data distribution on the InternetApcera
 
Micro on NATS - Microservices with Messaging
Micro on NATS - Microservices with MessagingMicro on NATS - Microservices with Messaging
Micro on NATS - Microservices with MessagingApcera
 
The Current Messaging Landscape: RabbitMQ, ZeroMQ, nsq, Kafka
The Current Messaging Landscape: RabbitMQ, ZeroMQ, nsq, KafkaThe Current Messaging Landscape: RabbitMQ, ZeroMQ, nsq, Kafka
The Current Messaging Landscape: RabbitMQ, ZeroMQ, nsq, KafkaAll Things Open
 
NATS - A new nervous system for distributed cloud platforms
NATS - A new nervous system for distributed cloud platformsNATS - A new nervous system for distributed cloud platforms
NATS - A new nervous system for distributed cloud platformsDerek Collison
 
NATS vs HTTP
NATS vs HTTPNATS vs HTTP
NATS vs HTTPApcera
 
Debugging Network Issues
Debugging Network IssuesDebugging Network Issues
Debugging Network IssuesApcera
 
The Zen of High Performance Messaging with NATS (Strange Loop 2016)
The Zen of High Performance Messaging with NATS (Strange Loop 2016)The Zen of High Performance Messaging with NATS (Strange Loop 2016)
The Zen of High Performance Messaging with NATS (Strange Loop 2016)wallyqs
 
REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesEberhard Wolff
 
IT Modernization Doesn’t Mean You Leave Your Legacy Apps Behind
IT Modernization Doesn’t Mean You Leave Your Legacy Apps BehindIT Modernization Doesn’t Mean You Leave Your Legacy Apps Behind
IT Modernization Doesn’t Mean You Leave Your Legacy Apps BehindApcera
 
NATS: Control Flow for Distributed Systems
NATS: Control Flow for Distributed SystemsNATS: Control Flow for Distributed Systems
NATS: Control Flow for Distributed SystemsApcera
 
Do you need microservices architecture?
Do you need microservices architecture?Do you need microservices architecture?
Do you need microservices architecture?Manu Pk
 
High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014Derek Collison
 
StormMQ Introduction to AMQP, Dublin
StormMQ Introduction to AMQP, DublinStormMQ Introduction to AMQP, Dublin
StormMQ Introduction to AMQP, DublinStormMQ
 

Viewers also liked (20)

Simple and Scalable Microservices: Using NATS with Docker Compose and Swarm
Simple and Scalable Microservices: Using NATS with Docker Compose and SwarmSimple and Scalable Microservices: Using NATS with Docker Compose and Swarm
Simple and Scalable Microservices: Using NATS with Docker Compose and Swarm
 
The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATSThe Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS
 
Nats in action a real time microservices architecture handled by nats
Nats in action   a real time microservices architecture handled by natsNats in action   a real time microservices architecture handled by nats
Nats in action a real time microservices architecture handled by nats
 
Simple Solutions for Complex Problems
Simple Solutions for Complex Problems Simple Solutions for Complex Problems
Simple Solutions for Complex Problems
 
NATS: A Central Nervous System for IoT Messaging - Larry McQueary
NATS: A Central Nervous System for IoT Messaging - Larry McQuearyNATS: A Central Nervous System for IoT Messaging - Larry McQueary
NATS: A Central Nervous System for IoT Messaging - Larry McQueary
 
Patterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATSPatterns for Asynchronous Microservices with NATS
Patterns for Asynchronous Microservices with NATS
 
How Greta uses NATS to revolutionize data distribution on the Internet
How Greta uses NATS to revolutionize data distribution on the InternetHow Greta uses NATS to revolutionize data distribution on the Internet
How Greta uses NATS to revolutionize data distribution on the Internet
 
Micro on NATS - Microservices with Messaging
Micro on NATS - Microservices with MessagingMicro on NATS - Microservices with Messaging
Micro on NATS - Microservices with Messaging
 
The Current Messaging Landscape: RabbitMQ, ZeroMQ, nsq, Kafka
The Current Messaging Landscape: RabbitMQ, ZeroMQ, nsq, KafkaThe Current Messaging Landscape: RabbitMQ, ZeroMQ, nsq, Kafka
The Current Messaging Landscape: RabbitMQ, ZeroMQ, nsq, Kafka
 
NATS - A new nervous system for distributed cloud platforms
NATS - A new nervous system for distributed cloud platformsNATS - A new nervous system for distributed cloud platforms
NATS - A new nervous system for distributed cloud platforms
 
NATS vs HTTP
NATS vs HTTPNATS vs HTTP
NATS vs HTTP
 
Debugging Network Issues
Debugging Network IssuesDebugging Network Issues
Debugging Network Issues
 
The Zen of High Performance Messaging with NATS (Strange Loop 2016)
The Zen of High Performance Messaging with NATS (Strange Loop 2016)The Zen of High Performance Messaging with NATS (Strange Loop 2016)
The Zen of High Performance Messaging with NATS (Strange Loop 2016)
 
REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For Microservices
 
IT Modernization Doesn’t Mean You Leave Your Legacy Apps Behind
IT Modernization Doesn’t Mean You Leave Your Legacy Apps BehindIT Modernization Doesn’t Mean You Leave Your Legacy Apps Behind
IT Modernization Doesn’t Mean You Leave Your Legacy Apps Behind
 
NATS: Control Flow for Distributed Systems
NATS: Control Flow for Distributed SystemsNATS: Control Flow for Distributed Systems
NATS: Control Flow for Distributed Systems
 
Do you need microservices architecture?
Do you need microservices architecture?Do you need microservices architecture?
Do you need microservices architecture?
 
High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014High Performance Systems in Go - GopherCon 2014
High Performance Systems in Go - GopherCon 2014
 
StormMQ Introduction to AMQP, Dublin
StormMQ Introduction to AMQP, DublinStormMQ Introduction to AMQP, Dublin
StormMQ Introduction to AMQP, Dublin
 
Een andere kijk op Microservices
Een andere kijk op MicroservicesEen andere kijk op Microservices
Een andere kijk op Microservices
 

Similar to NATS for Modern Messaging and Microservices

What's New in NGINX Plus R7?
What's New in NGINX Plus R7?What's New in NGINX Plus R7?
What's New in NGINX Plus R7?NGINX, Inc.
 
Service Mesh Talk for CTO Forum
Service Mesh Talk for CTO ForumService Mesh Talk for CTO Forum
Service Mesh Talk for CTO ForumRick Hightower
 
Do I Need A Service Mesh.pptx
Do I Need A Service Mesh.pptxDo I Need A Service Mesh.pptx
Do I Need A Service Mesh.pptxPINGXIONG3
 
Ruslan Belkin And Sean Dawson on LinkedIn's Network Updates Uncovered
Ruslan Belkin And Sean Dawson on LinkedIn's Network Updates UncoveredRuslan Belkin And Sean Dawson on LinkedIn's Network Updates Uncovered
Ruslan Belkin And Sean Dawson on LinkedIn's Network Updates UncoveredLinkedIn
 
Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Rick Hightower
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to MicroservicesMahmoudZidan41
 
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...StreamNative
 
Open Source Bristol 30 March 2022
Open Source Bristol 30 March 2022Open Source Bristol 30 March 2022
Open Source Bristol 30 March 2022Timothy Spann
 
Data Microservices with Spring Cloud
Data Microservices with Spring CloudData Microservices with Spring Cloud
Data Microservices with Spring CloudOrkhan Gasimov
 
QConSF-MicroServices-IPC-Netflix-Sudhir-2014.pptx
QConSF-MicroServices-IPC-Netflix-Sudhir-2014.pptxQConSF-MicroServices-IPC-Netflix-Sudhir-2014.pptx
QConSF-MicroServices-IPC-Netflix-Sudhir-2014.pptxVimalKumar143058
 
AWS re:Invent 2016: Migrating Enterprise Messaging to the Cloud (ENT217)
AWS re:Invent 2016: Migrating Enterprise Messaging to the Cloud (ENT217)AWS re:Invent 2016: Migrating Enterprise Messaging to the Cloud (ENT217)
AWS re:Invent 2016: Migrating Enterprise Messaging to the Cloud (ENT217)Amazon Web Services
 
Architectural considerations when building an API
Architectural considerations when building an APIArchitectural considerations when building an API
Architectural considerations when building an APIRod Hemphill
 
Beyond REST and RPC: Asynchronous Eventing and Messaging Patterns
Beyond REST and RPC: Asynchronous Eventing and Messaging PatternsBeyond REST and RPC: Asynchronous Eventing and Messaging Patterns
Beyond REST and RPC: Asynchronous Eventing and Messaging PatternsClemens Vasters
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...confluent
 
Netflix Massively Scalable, Highly Available, Immutable Infrastructure
Netflix Massively Scalable, Highly Available, Immutable InfrastructureNetflix Massively Scalable, Highly Available, Immutable Infrastructure
Netflix Massively Scalable, Highly Available, Immutable InfrastructureAmer Ather
 
Bandwidth reporting, capacity planning, and traffic shaping: NetFlow Analyzer...
Bandwidth reporting, capacity planning, and traffic shaping: NetFlow Analyzer...Bandwidth reporting, capacity planning, and traffic shaping: NetFlow Analyzer...
Bandwidth reporting, capacity planning, and traffic shaping: NetFlow Analyzer...ManageEngine, Zoho Corporation
 
OSMC 2016 - Monasca - Monitoring-as-a-Service (at-Scale) by Roland Hochmuth
OSMC 2016 - Monasca - Monitoring-as-a-Service (at-Scale) by Roland HochmuthOSMC 2016 - Monasca - Monitoring-as-a-Service (at-Scale) by Roland Hochmuth
OSMC 2016 - Monasca - Monitoring-as-a-Service (at-Scale) by Roland HochmuthNETWAYS
 
OSMC 2016 | Monasca: Monitoring-as-a-Service (at-Scale) by Roland Hochmuth
OSMC 2016 | Monasca: Monitoring-as-a-Service (at-Scale) by Roland HochmuthOSMC 2016 | Monasca: Monitoring-as-a-Service (at-Scale) by Roland Hochmuth
OSMC 2016 | Monasca: Monitoring-as-a-Service (at-Scale) by Roland HochmuthNETWAYS
 
Free Netflow analyzer training - diagnosing_and_troubleshooting
Free Netflow analyzer  training - diagnosing_and_troubleshootingFree Netflow analyzer  training - diagnosing_and_troubleshooting
Free Netflow analyzer training - diagnosing_and_troubleshootingManageEngine, Zoho Corporation
 

Similar to NATS for Modern Messaging and Microservices (20)

What's New in NGINX Plus R7?
What's New in NGINX Plus R7?What's New in NGINX Plus R7?
What's New in NGINX Plus R7?
 
Service Mesh Talk for CTO Forum
Service Mesh Talk for CTO ForumService Mesh Talk for CTO Forum
Service Mesh Talk for CTO Forum
 
Do I Need A Service Mesh.pptx
Do I Need A Service Mesh.pptxDo I Need A Service Mesh.pptx
Do I Need A Service Mesh.pptx
 
Ruslan Belkin And Sean Dawson on LinkedIn's Network Updates Uncovered
Ruslan Belkin And Sean Dawson on LinkedIn's Network Updates UncoveredRuslan Belkin And Sean Dawson on LinkedIn's Network Updates Uncovered
Ruslan Belkin And Sean Dawson on LinkedIn's Network Updates Uncovered
 
Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
Blue-green deploys with Pulsar & Envoy in an event-driven microservice ecosys...
 
Open Source Bristol 30 March 2022
Open Source Bristol 30 March 2022Open Source Bristol 30 March 2022
Open Source Bristol 30 March 2022
 
Data Microservices with Spring Cloud
Data Microservices with Spring CloudData Microservices with Spring Cloud
Data Microservices with Spring Cloud
 
QConSF-MicroServices-IPC-Netflix-Sudhir-2014.pptx
QConSF-MicroServices-IPC-Netflix-Sudhir-2014.pptxQConSF-MicroServices-IPC-Netflix-Sudhir-2014.pptx
QConSF-MicroServices-IPC-Netflix-Sudhir-2014.pptx
 
AWS re:Invent 2016: Migrating Enterprise Messaging to the Cloud (ENT217)
AWS re:Invent 2016: Migrating Enterprise Messaging to the Cloud (ENT217)AWS re:Invent 2016: Migrating Enterprise Messaging to the Cloud (ENT217)
AWS re:Invent 2016: Migrating Enterprise Messaging to the Cloud (ENT217)
 
Architectural considerations when building an API
Architectural considerations when building an APIArchitectural considerations when building an API
Architectural considerations when building an API
 
Beyond REST and RPC: Asynchronous Eventing and Messaging Patterns
Beyond REST and RPC: Asynchronous Eventing and Messaging PatternsBeyond REST and RPC: Asynchronous Eventing and Messaging Patterns
Beyond REST and RPC: Asynchronous Eventing and Messaging Patterns
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
 
Netflix Massively Scalable, Highly Available, Immutable Infrastructure
Netflix Massively Scalable, Highly Available, Immutable InfrastructureNetflix Massively Scalable, Highly Available, Immutable Infrastructure
Netflix Massively Scalable, Highly Available, Immutable Infrastructure
 
Bandwidth reporting, capacity planning, and traffic shaping: NetFlow Analyzer...
Bandwidth reporting, capacity planning, and traffic shaping: NetFlow Analyzer...Bandwidth reporting, capacity planning, and traffic shaping: NetFlow Analyzer...
Bandwidth reporting, capacity planning, and traffic shaping: NetFlow Analyzer...
 
OSMC 2016 - Monasca - Monitoring-as-a-Service (at-Scale) by Roland Hochmuth
OSMC 2016 - Monasca - Monitoring-as-a-Service (at-Scale) by Roland HochmuthOSMC 2016 - Monasca - Monitoring-as-a-Service (at-Scale) by Roland Hochmuth
OSMC 2016 - Monasca - Monitoring-as-a-Service (at-Scale) by Roland Hochmuth
 
OSMC 2016 | Monasca: Monitoring-as-a-Service (at-Scale) by Roland Hochmuth
OSMC 2016 | Monasca: Monitoring-as-a-Service (at-Scale) by Roland HochmuthOSMC 2016 | Monasca: Monitoring-as-a-Service (at-Scale) by Roland Hochmuth
OSMC 2016 | Monasca: Monitoring-as-a-Service (at-Scale) by Roland Hochmuth
 
Best Practices Using RTI Connext DDS
Best Practices Using RTI Connext DDSBest Practices Using RTI Connext DDS
Best Practices Using RTI Connext DDS
 
Free Netflow analyzer training - diagnosing_and_troubleshooting
Free Netflow analyzer  training - diagnosing_and_troubleshootingFree Netflow analyzer  training - diagnosing_and_troubleshooting
Free Netflow analyzer training - diagnosing_and_troubleshooting
 

More from Apcera

Gopher fest 2017: Adding Context To NATS
Gopher fest 2017: Adding Context To NATSGopher fest 2017: Adding Context To NATS
Gopher fest 2017: Adding Context To NATSApcera
 
How Clarifai uses NATS and Kubernetes for Machine Learning
How Clarifai uses NATS and Kubernetes for Machine LearningHow Clarifai uses NATS and Kubernetes for Machine Learning
How Clarifai uses NATS and Kubernetes for Machine LearningApcera
 
Modernizing IT in the Platform Era
Modernizing IT in the Platform EraModernizing IT in the Platform Era
Modernizing IT in the Platform EraApcera
 
Actor Patterns and NATS - Boulder Meetup
Actor Patterns and NATS - Boulder MeetupActor Patterns and NATS - Boulder Meetup
Actor Patterns and NATS - Boulder MeetupApcera
 
NATS Connector Framework - Boulder Meetup
NATS Connector Framework - Boulder MeetupNATS Connector Framework - Boulder Meetup
NATS Connector Framework - Boulder MeetupApcera
 
Simple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder MeetupSimple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder MeetupApcera
 
Securing the Cloud Native Stack
Securing the Cloud Native StackSecuring the Cloud Native Stack
Securing the Cloud Native StackApcera
 
How to Migrate to Cloud with Complete Confidence and Trust
How to Migrate to Cloud with Complete Confidence and TrustHow to Migrate to Cloud with Complete Confidence and Trust
How to Migrate to Cloud with Complete Confidence and TrustApcera
 
KURMA - A Containerized Container Platform - KubeCon 2016
KURMA - A Containerized Container Platform - KubeCon 2016KURMA - A Containerized Container Platform - KubeCon 2016
KURMA - A Containerized Container Platform - KubeCon 2016Apcera
 
Integration Patterns and Anti-Patterns for Microservices Architectures
Integration Patterns and Anti-Patterns for Microservices ArchitecturesIntegration Patterns and Anti-Patterns for Microservices Architectures
Integration Patterns and Anti-Patterns for Microservices ArchitecturesApcera
 
Kubernetes, The Day After
Kubernetes, The Day AfterKubernetes, The Day After
Kubernetes, The Day AfterApcera
 
Policy-based Cloud Storage: Persisting Data in a Multi-Site, Multi-Cloud World
Policy-based Cloud Storage: Persisting Data in a Multi-Site, Multi-Cloud WorldPolicy-based Cloud Storage: Persisting Data in a Multi-Site, Multi-Cloud World
Policy-based Cloud Storage: Persisting Data in a Multi-Site, Multi-Cloud WorldApcera
 
Integration Patterns for Microservices Architectures
Integration Patterns for Microservices ArchitecturesIntegration Patterns for Microservices Architectures
Integration Patterns for Microservices ArchitecturesApcera
 
Nats meetup sf 20150826
Nats meetup sf   20150826Nats meetup sf   20150826
Nats meetup sf 20150826Apcera
 
Microservices: Notes From The Field
Microservices: Notes From The FieldMicroservices: Notes From The Field
Microservices: Notes From The FieldApcera
 
Docker + App Container = ocp
Docker + App Container = ocpDocker + App Container = ocp
Docker + App Container = ocpApcera
 
Apcera: Agility and Security in Docker Delivery
Apcera: Agility and Security in Docker DeliveryApcera: Agility and Security in Docker Delivery
Apcera: Agility and Security in Docker DeliveryApcera
 
Delivering Policy & Trust to the Hybrid Cloud
Delivering Policy & Trust to the Hybrid CloudDelivering Policy & Trust to the Hybrid Cloud
Delivering Policy & Trust to the Hybrid CloudApcera
 

More from Apcera (18)

Gopher fest 2017: Adding Context To NATS
Gopher fest 2017: Adding Context To NATSGopher fest 2017: Adding Context To NATS
Gopher fest 2017: Adding Context To NATS
 
How Clarifai uses NATS and Kubernetes for Machine Learning
How Clarifai uses NATS and Kubernetes for Machine LearningHow Clarifai uses NATS and Kubernetes for Machine Learning
How Clarifai uses NATS and Kubernetes for Machine Learning
 
Modernizing IT in the Platform Era
Modernizing IT in the Platform EraModernizing IT in the Platform Era
Modernizing IT in the Platform Era
 
Actor Patterns and NATS - Boulder Meetup
Actor Patterns and NATS - Boulder MeetupActor Patterns and NATS - Boulder Meetup
Actor Patterns and NATS - Boulder Meetup
 
NATS Connector Framework - Boulder Meetup
NATS Connector Framework - Boulder MeetupNATS Connector Framework - Boulder Meetup
NATS Connector Framework - Boulder Meetup
 
Simple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder MeetupSimple Solutions for Complex Problems - Boulder Meetup
Simple Solutions for Complex Problems - Boulder Meetup
 
Securing the Cloud Native Stack
Securing the Cloud Native StackSecuring the Cloud Native Stack
Securing the Cloud Native Stack
 
How to Migrate to Cloud with Complete Confidence and Trust
How to Migrate to Cloud with Complete Confidence and TrustHow to Migrate to Cloud with Complete Confidence and Trust
How to Migrate to Cloud with Complete Confidence and Trust
 
KURMA - A Containerized Container Platform - KubeCon 2016
KURMA - A Containerized Container Platform - KubeCon 2016KURMA - A Containerized Container Platform - KubeCon 2016
KURMA - A Containerized Container Platform - KubeCon 2016
 
Integration Patterns and Anti-Patterns for Microservices Architectures
Integration Patterns and Anti-Patterns for Microservices ArchitecturesIntegration Patterns and Anti-Patterns for Microservices Architectures
Integration Patterns and Anti-Patterns for Microservices Architectures
 
Kubernetes, The Day After
Kubernetes, The Day AfterKubernetes, The Day After
Kubernetes, The Day After
 
Policy-based Cloud Storage: Persisting Data in a Multi-Site, Multi-Cloud World
Policy-based Cloud Storage: Persisting Data in a Multi-Site, Multi-Cloud WorldPolicy-based Cloud Storage: Persisting Data in a Multi-Site, Multi-Cloud World
Policy-based Cloud Storage: Persisting Data in a Multi-Site, Multi-Cloud World
 
Integration Patterns for Microservices Architectures
Integration Patterns for Microservices ArchitecturesIntegration Patterns for Microservices Architectures
Integration Patterns for Microservices Architectures
 
Nats meetup sf 20150826
Nats meetup sf   20150826Nats meetup sf   20150826
Nats meetup sf 20150826
 
Microservices: Notes From The Field
Microservices: Notes From The FieldMicroservices: Notes From The Field
Microservices: Notes From The Field
 
Docker + App Container = ocp
Docker + App Container = ocpDocker + App Container = ocp
Docker + App Container = ocp
 
Apcera: Agility and Security in Docker Delivery
Apcera: Agility and Security in Docker DeliveryApcera: Agility and Security in Docker Delivery
Apcera: Agility and Security in Docker Delivery
 
Delivering Policy & Trust to the Hybrid Cloud
Delivering Policy & Trust to the Hybrid CloudDelivering Policy & Trust to the Hybrid Cloud
Delivering Policy & Trust to the Hybrid Cloud
 

Recently uploaded

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

NATS for Modern Messaging and Microservices

  • 1. NATS for Modern Messaging and Microservices Presented by Alberto Ricart, Principal Engineer, NATS
  • 2. •Community and Ecosystem Manager, NATS.io • Ways to get involved in NATS Community: - http://nats.io/community/ Brian Flannery @brianflannery brian.flannery@apcera.com
  • 3. •Principal Engineer at Apcera •Previously with - TIBCO > 15 years - Informatica •Building messaging based systems > 20 years Alberto Ricart @alberto.ricart alberto.ricart@apcera.com
  • 4. - Learn/review messaging basics - Use messaging patterns - Describe a sample microservices application ‣ See how NATS and messaging features help us make our services better What this webinar will cover
  • 6. ๏ Messages - are the unit of data exchange ๏ Producers - send messages to the server ๏ Consumers - receive messages from the server ๏ Messaging Server - distributes messages from producers to consumers Messaging architecture
  • 7. ๏Have a subject that describes the message contents ๏A payload {location: {lat: 45.678, lng: 123.456}} Messages
  • 8. ๏Subject names are extremely important ‣ They specify the destination of the message Pokenats.eden-service.12.hb.1234 ๏They consist of one or more elements (tokens) separated by dots ‣ The elements can be used to create a subject name hierarchies ‣ Individual elements can be thought of as metadata which a service could use while processing the message What’s in a subject?
  • 9. ๏Send messages to the server under a specific subject - ‘publishers’ ๏Don’t assume the audience of the message ‣ Don’t care who consumes the message ๏A publisher may specify an optional “reply” subject to change the meaning of the message Producers
  • 10. ๏ Subscribe to receive messages matching a subscription ๏ Can specify a queue group name ‣ Single member of a queue group is chosen randomly to receive the message ๏ Can specify how many messages to receive before auto-canceling • This is a big deal Consumers
  • 11. ๏ Subscribers can specify wildcards pokenats.eden-service.> pokenats.*.*.hb.100 ๏ ‘*’ matches any value in that element ๏ ‘>’ matches all elements that follow ‣ ‘>’ is only valid at the end of the subject Subscription wildcards
  • 12. ๏ Highly performant, extremely light-weight ๏ Clustered servers/cluster-aware clients ‣ Built-in resiliency and high availability ๏ Text-based protocol (payload is an array of bytes) ‣ Use telnet to explore ๏ Monitorable on a dedicated port - returning JSON data describing the state of the server NATS server features Chart source: http://bravenewgeek.com/dissecting- message-queues/
  • 13. ๏ Server protects itself first ‣ Auto-pruning of slow/non-responsive clients ‣ Disconnects clients that send bad protocol messages ๏ At most once delivery ๏ Client APIs for many languages ‣ Community contributed: Spring, Lua, PHP, Python, Scala, Haskel, C# MyNatsClient ‣ Easy to develop a client. Get involved! NATS server features (Cont.)
  • 14. ๏ Provides additional features, built on top of NATS ‣ Clients publish to a streaming server ‣ Messages stored until number or size limits are reached ‣ Subscribers can request messages sent earlier • Start with first/last/n-th/etc message ‣ Durable subscriptions • Resume previous session ‣ At least once delivery NATS streaming
  • 15. Part 2: Messaging Patterns
  • 16. - Publish-Subscribe - Queueing - Request-Reply Three simple patterns
  • 17. ๏ Basic messaging pattern ‣ A producer publishes a message with a specific subject ‣ All active consumers with subscriptions matching the subject receive it Publish-Subscribe 1-N
  • 18. ๏ It’s a publish-subscribe operation ‣ Consumers subscribe using a shared queue group name ‣ A publisher sends a message ‣ The messaging server forwards to single subscriber ‣ Non members of the queue group will get message as standard pub-sub ‣ Multiple queue group names subscribers on the same subject are possible Queueing 1-1 (Subscribers using a shared queue group name)
  • 19. ๏ Producer creates a subscription to an unique subject name (a.k.a. reply subject) ‣ Sets max number of messages to receive ๏ The producer publishes a message with the reply subject ๏ Subscribers receive the message and publish a response to the reply subject ๏ Very efficient 1:1 of very large N Request Reply 1-N
  • 20. ๏ Similar as before, but this time subscribers are part of a queue group name ‣ Only one subscriber will get the request Request Reply 1:1
  • 21. ๏ You can build massively scalable services, and achieve many features which would require a lot effort otherwise ‣ Addressing ‣ Discovery ‣ Control plane ‣ Load balancing ‣ Fault-tolerance ‣ Location transparency With these simple messaging patterns
  • 22. ๏ Use messaging for inter-service communication ‣ pub/sub, queuing, request/reply ๏ Broadcast heartbeats and health information ๏ Use control plane services to listen to service heartbeats ‣ Add, grow, shrink service queues based on health ๏ Adapt data exchanged by services ‣ Reduce integration points from 1 to N-1 to N Microservices + messaging
  • 23. Case Study: PokéNATS Presented by Alberto Ricart, Principal Engineer, NATS Small study describing how to a create simple and highly scalable service with NATS messaging
  • 24. Let’s put to work what we have learned... • Design a small service oriented application • Could have millions of users? • Will release as a minimum viable product (many features tbd) • How would you develop it? - If you made it with HTTP and REST services would it scale? - How would you manage it? - How would you scale it? - How would you cope with new features, changes and their deployment?
  • 25. Take something seemingly simple like, Pokémon Go! • Hugely popular augmented reality phone game that launched in July 2016 based on Pokémon • Players walk around and: - Find Pokéstops near them - Collect Pokémon pets found in the wild - Level and evolve the pets to make them more powerful - Battle their pets against other player’s
  • 26. At its core • It’s a massive sensor collector - Operates in a very large playground ‣ Every few seconds new location information sent to one or more servers ‣ Every once in awhile, some game event happens • One million players contributing sensor data every 5 seconds means: ‣ 12 million/min interactions just for the sensor information functionality
  • 27. Being successful sometimes creates nightmares •Imagine 130+ million downloads (Wikipedia number) - A little times a lot in cloud scale is huge - Any application is non-trivial at 1/1000 the success ‣ Performance • Authentication • Data persistence • Business logic ‣ Monitoring & Management
  • 28. PokéNATS Architecture pokenats.s_type.id.event.grid event: update | data | spawn | new pokenats_admin.cmd.s_type.id cmd: discover | kill | conf pokenats_monitor.s_type.id.hb pokenats_monitor.s_type.id.log.type type: info | error | invalid
  • 29. Scalability •Queue group names allow load balancing of services •Filtering on the subject name enables services to divide work (perhaps with locality) •Subscriptions from trainers filter updates and notifications from clients that are not geographically near •Request reply services could delay responding based on memory/cpu presure
  • 30. Service Discovery •Control service uses pokenats_admin.cmd.s_type.sid.discover required sevices •Missing services are spawned by the control service •Filtering enables limiting the impact of a request based on a subject name
  • 31. Fault-tolerance • If more than one service, it is fault tolerant ‣Auto-heals when new services are added • NATS can be configured in cluster mode - Clients randomly connect to servers in the cluster to distribute connections - Clients switch to a different server if their current connection fails •Control service reacts to current information by adding and pruning
  • 32. Load-balancing •Queue groups again, help here •HTTP/REST endpoints use a redirector or scaling strategy
  • 33. Monitoring •Log messages are sent under info/error monikers •Heartbeats tell if services are alive and quantify their health •Misbehaving clients (or attacks) are logged by re-publishing invalid requests
  • 34. Management •Control messages make services do something - Update a configuration setting - Exit - Show itself
  • 35. Future Changes • Loosely coupled makes it easier - Adding new services doesn’t affect the existing - Easy to hot test new revs ‣Start a new service alongside the old •If the new service is observed to work as desired, start more, stop the old •If the new service misbehaves, send a control command to kill it ‣By using queue subscriptions only 1/N clients are affected ‣Incremental deployments prevent embarrassing issues •Integrating a new system? - If data needs adapting, add a service to do translation!
  • 36. Take-away • Message-driven micro-services are: - Better - Smaller - Highly scalable - More manageable - Able to cope with change and innovation •More importantly, with careful patterns and design - Code is usually simpler - Robust - more resilient