SlideShare a Scribd company logo
1 of 164
Reactive APIsReactive APIs
usingusing
MancJS – 2017-11-01
David Dawson
me@daviddawson.me
Microservices | JVM | IoT consultant
Organiser, London Microservices User Group,
Founder, Muon Project – http://muoncore.io
http://daviddawson.me
What is the
‘Microservice
Architecture’?
Isolation
Aspiration
What is
Architecture?
What is
Architecture?
Architecture
vs
Design
Architecture
vs
Design
Limitless Options
For Design
Only a few
Architectures
What is
Architecture?
Architecture
Is Philosophy
What is your
Philosophy?
Microservices
Philosophy
software
architecture
emphasising
Change
software
philosophy
emphasising
Change
RPC(ish) Microservices
RPC(ish) Microservices
Here Be
Dragons
(and HTTP)
Orders
Orders
Product
Users
Auth
Orders
Product
Users
Auth
Fulfillment
Orders
Product
Users
Auth
Fulfillment
Orders
Product
Users
Auth
Fulfillment
Autonomy!
Orders
Product
Users
Auth
Fulfillment
Orders
Product
Users
Auth
Fulfillment
Orders
Product
Users
Auth
Fulfillment
Order X
Default Product Name: £12
Default Product Name: £99
Default Product Name: £77
Shipping Date: No idea.
Orders
Product
Users
Auth
Fulfillment
This Service is broken
by its dependencies
breaking
Orders
Product
Users
Auth
Fulfillment
99.999% uptime for
each service
5 services in a web
~25 mins/ year
downtime. Guaranteed
Orders
Product
Users
Auth
Fulfillment
System uptime
99.99%
Due to RPC Web
FragileFragile
FragileFragile
Higher LatencyHigher Latency
FragileFragile
Higher LatencyHigher Latency
Data is Relational...Data is Relational...
FragileFragile
Higher LatencyHigher Latency
Data is Relational...Data is Relational...
.... Inner Join over HTTP.... Inner Join over HTTP
RPC APIs + MicroservicesRPC APIs + Microservices
==
Data SilosData Silos
:-(:-(
Reactive
I heard
about
Reactive ...
What is
Reactive
?
vs
Reactive
Reactive
Reactive Systems
Responsive
Resilient
Elastic
Message Driven
https://www.reactivemanifesto.org/
Reactive Systems
Architectural Guidelines
Reactive Programming
Async
Functional
Data Flow
Event Driven
Implementation Techniques
Reactive Programming
Reactive System
Reactive System
Reactive
Programming
Designing
Reactive Systems
With Great Power....
....comes great responsibility
Using Data
Your data
is here
Using Data
Your data
is here
You need it
here.
Using Data
RPC Fragile, etc ...
Using Data
Materialise
View
Eventually consistent
Resilient
Best performance
Using Data
Client controlled
streaming
Using Data
SEDA – Staged Event
Driven Architecture
Using Data
Scatter/ Gather
Using Data
Event Logs
Reactive Tech Selection
Message Based
Manage State
Reactive Technologies
Actors – Akka/ Logam
SEDA Events – Lambda, Vertx etc
Data Flow/ CSP – Spring Data Flow
Event Logs – Kafka, EventStore.io
What have you
lost?
Reactive Systems
APIs
APIs
==
HTTP
APIs
==
HTTP
Discovery
Docs
(swagger et al)
Well defined
Technical
Interaction model
monitoring
testing
tech
autonomy
HTTP: Technical
Interaction Model HTTP API
"GET me X please"
"Here is X"
APIs
Docs
(swagger et al)
Discovery
Well defined
Technical
Interaction model
monitoring
testing==
HTTP
tech
autonomy
APIs
==
HTTP
Docs
(swagger et al)
Discovery
Well defined
Technical
Interaction model
monitoring
testing
tech
autonomy
APIs
==
HTTP
Docs
(swagger et al)
Discovery
Well defined
Technical
Interaction model
monitoring
testing
:-(:-(
Reactive tech as an
API surrogate
Building a Reactive
System
becomes a
Strategic Choice
APIs
==
HTTP
APIs
==
HTTP
APIs
==
HTTP
Reactive
APIs
Reactive
APIs
Message
Reactive: Technical Interaction Models?
Reactive: Technical Interaction Models?
Reactive
API
Reactive: Technical Interaction Models?
Reactive
API
"I want to trade X for Y"
Reactive: Technical Interaction Models?
Reactive
API
"I want to trade X for Y"
"I offer 10*Y in 2 minutes, or Z now"
Reactive: Technical Interaction Models?
Reactive
API
"I want to trade X for Y"
"I offer 10*Y in 2 minutes, or Z now"
"I'll take 10Y"
Reactive: Technical Interaction Models?
Reactive
API
"I want to trade X for Y"
"I offer 10*Y in 2 minutes, or Z now"
"I'll take 10Y"
"Here is Y"
Reactive: Technical Interaction Models?
Reactive
API
"I want to trade X for Y"
"I offer 10*Y in 2 minutes, or Z now"
"I'll take 10Y"
"Here is Y"
"Here is Y"
"Here is Y"
Reactive: Technical Interaction Models?
Reactive
API
"I want to trade X for Y"
"I offer 10*Y in 2 minutes, or Z now"
"I'll take 10Y"
"Here is Y"
"Here is Y"
"Here is Y"
"Slow down"
Reactive: Technical Interaction Models?
Reactive
API
"I want to trade X for Y"
"I offer 10*Y in 2 minutes, or Z now"
"I'll take 10Y"
"Here is Y"
"Here is Y"
"Here is Y"
"Slow down"
.....
Reactive: Technical Interaction Models?
Technical Messages
and
Domain Messages
[often events]
Reactive: Technical Interaction Models?
Technical Messages
and
Domain Messages
[often events]
Reactive: Technical Interaction Models?
=
reusable
Communication
protocol
Technical Messages
Reactive: Technical Interaction Models?
Reactive
API
"I want to trade X for Y"
"I offer 10*Y in 2 minutes, or Z now"
"I'll take 10Y"
"Here is Y"
"Here is Y"
"Here is Y"
"Slow down"
.....
Reactive: Technical Interaction Models?
Reactive
API
Two Party Negotiation
Client Managed Streaming
APIs
Reactive
APIs
Reactive
APIs
DiscoveryWell defined
Technical
Interaction models
monitoring
testing
Docs
(swagger et al)
DiscoveryWell defined
Technical
Interaction models
monitoring
testing
Docs
(swagger et al)
Example:
Rx from DB
to browser
MongoDB
MongoDB
Microservice?
MongoDB
Browser
Microservice?
Browser
MongoDB
TODO Chrome
Microservice?
Browser
MongoDB
TODO Chrome
Microservice?
Buffering...
Browser
Websockets?
Back pressure?
Ugh :-(
MongoDB
TODO Chrome
Microservice?
Browser
MongoDB
TODO Chrome
Microservice?
Microservice?
MongoDB
Browser
MongoDB
TODO Chrome
Microservice?
Another
websocket?
Microservice?
MongoDB
Browser
The Muon Model
The Muon Model
Discovery
Transport
Network
….
Protocol
Client
channel N
channel
channel channel Service X
Service 2
Service 1
API
App Code
….
1) Your code
uses an API
2) The API
creates a
Protocol
3) The Protocol
communicates
using
messages
4) A transport
routes them over
the network
The Muon Model
Discovery
Transport
Network
….
Protocol
Client
channel N
channel
channel channel Service X
Service 2
Service 1
API
App Code
….
1) Your code
uses an API
2) The API
creates a
Protocol
3) The Protocol
communicates
using
messages
4) A transport
routes them over
the network
The Muon Model
Discovery
Transport
Network
….
Protocol
Client
channel N
channel
channel channel Service X
Service 2
Service 1
API
App Code
….
1) Your code
uses an API
2) The API
creates a
Protocol
3) The Protocol
communicates
using
messages
4) A transport
routes them over
the network
The Muon Model
Discovery
Transport
Network
….
Protocol
Client
channel N
channel
channel channel Service X
Service 2
Service 1
API
App Code
….
1) Your code
uses an API
2) The API
creates a
Protocol
3) The Protocol
communicates
using
messages
4) A transport
routes them over
the network
Solution
Using
Muon
Muon Reactive Streams
A Message based API
using
http://reactivestreams.org
http://github.com/muoncore/stack-reactive-streams
Muon Reactive Streams
Stream Client
Stream Server
Transport
Failure
SubscriptionRequested
SubAck
SubNack
Data
Complete Error
Cancel
Request
Java Server [JS in progress...]
Muon muon = ...
ReactiveStreamServer rx =
new ReactiveStreamServer(muon);
Publisher<Data> pub = doMongoQuery(…);
muon.publishSource("/my-big-data", COLD, pub);
Muon Reactive Streams
Node Client
muon.subscribe("stream://myservice/my-big-data",
{}, (data) => {
console.log(“I got data “ + data)
}, (error) => {}, () => { // complete});
Muon Reactive Streams
MongoDB
TODO Chrome
Microservice?
Microservice?
MongoDB
Browser
MongoDB
TODO Chrome
Microservice?
Microservice?
MongoDB
Browser
MongoDB
TODO Chrome
Microservice?
Microservice?
MongoDB
Browser
MongoDB
TODO Chrome
Microservice?
Microservice?
MongoDB
Muon
Gateway
Browser
MongoDB
TODO Chrome
Microservice?
Microservice?
MongoDB
Muon
Gateway
1 websocket,
multiplexing
Browser
MongoDB
TODO Chrome
Microservice?
Microservice?
MongoDB
Muon
Gateway
1 websocket,
multiplexing
Internal
comms
AMQP | TCP
| Kafka ...
Browser
Demo
Reactive API -
Client Controlled Streaming
Browser Muon?
var Muon = require("muonjs")
var muon = Muon.client({port:9898})
Browser Muon?
var Muon = require("muonjs")
var muon = Muon.client({port:9898})
muon.subscribe("stream://myservice/my-big-data", {},
(data) => {
console.log(“I got data “ + data)
}, (error) => {}, () => { // complete});
Browser Muon?
Demo
Reactive API -
Client Controlled Streaming
In a browser!
A brief intro
to
Event Logs
Events
?
Events
?
Order PlacedOrder Placed
EventsEvents
Order Placed
Payment Taken
EventsEvents
Order Placed
Payment Taken
Email Sent
EventsEvents
Order Stream EventsEvents
Order Stream
Payment Stream
EventsEvents
Order Stream
Notification Stream
Payment Stream
EventsEvents
Order Stream Events
Order Stream Events
Order
Service
Order Stream Events
Order
Service
Fraud
Service
Order Stream Events
Order
Service
Fraud
Service
Fulfillment
The Muon Model
Discovery
Transport
Network
….
Protocol
Client
channel N
channel
channel channel Service X
Service 2
Service 1
API
App Code
….
1) Your code
uses an API
2) The API
creates a
Protocol
3) The Protocol
communicates
using
messages
4) A transport
routes them over
the network
Protocol - Events
My App
AMQP
Event Proto
Server
Mongo |
Cassandra
Event Proto
Client
AMQP
Transport
AMQP
Transport
[event store]
Standalone Event Store – Multi Process
Muon Event Log API
A Message based API
http://github.com/muoncore/stack-events
Java Client
Muon muon = getMuon();
EventClient client = new DefaultEventClient(muon);
Order order = ...
client.event(
ClientEvent.ofType("OrderPlaced")
.payload(order)
.stream("/orders").build())
Muon Event Log API
Java Client
Muon muon = getMuon();
EventClient client = new DefaultEventClient(muon);
Subscriber<Event> s = … (RxJava, Reactor etc)
client.replay("/requests", REPLAY_ONLY, s);
Muon Event Log API
Demo
Reactive API -
Event Logs
Protocol - Events
My App
AMQP
Event Proto
Server
Mongo |
Cassandra
Event Proto
Client
AMQP
Transport
AMQP
Transport
[event store]
Standalone Event Store – Multi Process
Event Store (Kafka?)
Payment
Processor
Hub and SpokeHub and Spoke
Fraud
Analysis
Order AR
Notification
Manager
Order Stream
Notification Stream
Payment Stream
All Hail Kafka?
Event Store (Kafka?)
Payment
Processor
Hub and SpokeHub and Spoke
Fraud
Analysis
Order AR
Notification
Manager
Order Stream
Notification Stream
Payment Stream
Order Stream
Notification Stream
Payment Stream
Event Store (Kafka?)
Payment
Processor
Hub and SpokeHub and Spoke
Fraud
Analysis
Order AR
Notification
Manager
BoomBoom
Order Stream
Notification Stream
Payment Stream
Event Store (Kafka?)
Payment
Processor
Hub and SpokeHub and Spoke
Fraud
Analysis
Order AR
Notification
Manager
BoomBoom
Single Point ofSingle Point of
Screw UpScrew Up
:-(:-(
Order AR
Payment
Processor
Notification
Manager
Fraud
Analysis
Order AR
Payment
Processor
Notification
Manager
Fraud
Analysis
Order AR
Payment
Processor
Notification
Manager
Fraud
Analysis
Each service
implements event
API
Order AR
Payment
Processor
Notification
Manager
Fraud
Analysis
Each service
implements event
API
NoNo
Single Point ofSingle Point of
Screw UpScrew Up
:-):-)
Order AR
Payment
Processor
Notification
Manager
Fraud
Analysis
Each service
implements event
API
Thoughts
Thoughts
Uses Muon Event Log API.
Thoughts
Uses Muon Event Log API.
All Muon implementations can
contribute/ consume data (jvm, node, browser etc)
Thoughts
Uses Muon Event Log API.
All Muon implementations can
contribute/ consume data (jvm, node, browser etc)
Runs on any event store
that implements (or is wrapped by)
the Muon Event Log API
Event Log API
==
Less Strategic
Decisions
When to use Muon
Want APIs, but better than just RPC?
Defer "strategic" tech decisions till later
Thinking of using a websocket?
or a message queue?
There's more...
me@daviddawson.me http://muoncore.io
There's more...
More types of API available ...
me@daviddawson.me http://muoncore.io
There's more...
More types of API available ...
Multiple transports available
me@daviddawson.me http://muoncore.io
There's more...
More types of API available ...
Multiple transports available
Any infrastructure you like!
me@daviddawson.me http://muoncore.io
There's more...
More types of API available ...
Multiple transports available
Any infrastructure you like!
Want to extend/ contribute? Join us at
me@daviddawson.me http://muoncore.io
Thanks!
.... questions?

More Related Content

Similar to Reactive APIs using Muon

Evolution of the Netflix API
Evolution of the Netflix APIEvolution of the Netflix API
Evolution of the Netflix APIC4Media
 
Intro to Muon - How to build Polyglot Message and Event Microservices
Intro to Muon - How to build Polyglot Message and Event MicroservicesIntro to Muon - How to build Polyglot Message and Event Microservices
Intro to Muon - How to build Polyglot Message and Event MicroservicesDavid Dawson
 
Pros and Cons of a MicroServices Architecture talk at AWS ReInvent
Pros and Cons of a MicroServices Architecture talk at AWS ReInventPros and Cons of a MicroServices Architecture talk at AWS ReInvent
Pros and Cons of a MicroServices Architecture talk at AWS ReInventSudhir Tonse
 
Chaos engineering applied
Chaos engineering appliedChaos engineering applied
Chaos engineering appliedRamon Anger
 
Experiencing Kinetic Mobile Interaction
Experiencing Kinetic Mobile InteractionExperiencing Kinetic Mobile Interaction
Experiencing Kinetic Mobile InteractionDominique Guinard
 
QConSF2016-JoshEvans-MasteringChaosANetflixGuidetoMicroservices-compressed.pdf
QConSF2016-JoshEvans-MasteringChaosANetflixGuidetoMicroservices-compressed.pdfQConSF2016-JoshEvans-MasteringChaosANetflixGuidetoMicroservices-compressed.pdf
QConSF2016-JoshEvans-MasteringChaosANetflixGuidetoMicroservices-compressed.pdfSimranjyotSuri
 
Mastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesMastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesJosh Evans
 
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionals
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionalsJava & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionals
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionalsTrayan Iliev
 
Architecting Microservices in .Net
Architecting Microservices in .NetArchitecting Microservices in .Net
Architecting Microservices in .NetRichard Banks
 
Start Up Austin 2017: If How and When to Adopt Microservices
Start Up Austin 2017: If How and When to Adopt MicroservicesStart Up Austin 2017: If How and When to Adopt Microservices
Start Up Austin 2017: If How and When to Adopt MicroservicesAmazon Web Services
 
Microservices with Kafka Ecosystem
Microservices with Kafka EcosystemMicroservices with Kafka Ecosystem
Microservices with Kafka EcosystemGuido Schmutz
 
Construcción de web aps- un enfoque hexagonal
Construcción de web aps- un enfoque hexagonalConstrucción de web aps- un enfoque hexagonal
Construcción de web aps- un enfoque hexagonalch1l3no
 
Microservices rubyconf-2013
Microservices rubyconf-2013Microservices rubyconf-2013
Microservices rubyconf-2013Mohit Thatte
 
Microservices - Peixe Urbano Tech Talks
Microservices - Peixe Urbano Tech TalksMicroservices - Peixe Urbano Tech Talks
Microservices - Peixe Urbano Tech TalksPedro Mendes
 
Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018
Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018
Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018Matt Raible
 
Offline First in React Native
Offline First in React NativeOffline First in React Native
Offline First in React NativeJosh Warwick
 

Similar to Reactive APIs using Muon (20)

Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Evolution of the Netflix API
Evolution of the Netflix APIEvolution of the Netflix API
Evolution of the Netflix API
 
Intro to Muon - How to build Polyglot Message and Event Microservices
Intro to Muon - How to build Polyglot Message and Event MicroservicesIntro to Muon - How to build Polyglot Message and Event Microservices
Intro to Muon - How to build Polyglot Message and Event Microservices
 
Pros and Cons of a MicroServices Architecture talk at AWS ReInvent
Pros and Cons of a MicroServices Architecture talk at AWS ReInventPros and Cons of a MicroServices Architecture talk at AWS ReInvent
Pros and Cons of a MicroServices Architecture talk at AWS ReInvent
 
Chaos engineering applied
Chaos engineering appliedChaos engineering applied
Chaos engineering applied
 
Experiencing Kinetic Mobile Interaction
Experiencing Kinetic Mobile InteractionExperiencing Kinetic Mobile Interaction
Experiencing Kinetic Mobile Interaction
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Net remoting
Net remotingNet remoting
Net remoting
 
QConSF2016-JoshEvans-MasteringChaosANetflixGuidetoMicroservices-compressed.pdf
QConSF2016-JoshEvans-MasteringChaosANetflixGuidetoMicroservices-compressed.pdfQConSF2016-JoshEvans-MasteringChaosANetflixGuidetoMicroservices-compressed.pdf
QConSF2016-JoshEvans-MasteringChaosANetflixGuidetoMicroservices-compressed.pdf
 
Mastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to MicroservicesMastering Chaos - A Netflix Guide to Microservices
Mastering Chaos - A Netflix Guide to Microservices
 
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionals
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionalsJava & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionals
Java & JavaScipt Reactive Robotics and IoT 2016 @ jProfessionals
 
Architecting Microservices in .Net
Architecting Microservices in .NetArchitecting Microservices in .Net
Architecting Microservices in .Net
 
Start Up Austin 2017: If How and When to Adopt Microservices
Start Up Austin 2017: If How and When to Adopt MicroservicesStart Up Austin 2017: If How and When to Adopt Microservices
Start Up Austin 2017: If How and When to Adopt Microservices
 
Microservices with Kafka Ecosystem
Microservices with Kafka EcosystemMicroservices with Kafka Ecosystem
Microservices with Kafka Ecosystem
 
Construcción de web aps- un enfoque hexagonal
Construcción de web aps- un enfoque hexagonalConstrucción de web aps- un enfoque hexagonal
Construcción de web aps- un enfoque hexagonal
 
Microservices rubyconf-2013
Microservices rubyconf-2013Microservices rubyconf-2013
Microservices rubyconf-2013
 
Microservices - Peixe Urbano Tech Talks
Microservices - Peixe Urbano Tech TalksMicroservices - Peixe Urbano Tech Talks
Microservices - Peixe Urbano Tech Talks
 
Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018
Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018
Microservices for the Masses with Spring Boot and JHipster - Chicago JUG 2018
 
Offline First in React Native
Offline First in React NativeOffline First in React Native
Offline First in React Native
 

More from David Dawson

Practical Event Systems - Microservices for the Data Architect
Practical Event Systems - Microservices for the Data ArchitectPractical Event Systems - Microservices for the Data Architect
Practical Event Systems - Microservices for the Data ArchitectDavid Dawson
 
Microservices Past, Present, Future
Microservices Past, Present, FutureMicroservices Past, Present, Future
Microservices Past, Present, FutureDavid Dawson
 
Microservices Pain: Testing
Microservices Pain: TestingMicroservices Pain: Testing
Microservices Pain: TestingDavid Dawson
 
Effective Microservices Design using Events and Event Sourcing
Effective Microservices Design using Events and Event SourcingEffective Microservices Design using Events and Event Sourcing
Effective Microservices Design using Events and Event SourcingDavid Dawson
 
Assorted Learnings of Microservices
Assorted Learnings of MicroservicesAssorted Learnings of Microservices
Assorted Learnings of MicroservicesDavid Dawson
 
DDD & Microservices from the Front Lines: Building Evolvable Software with Ev...
DDD & Microservices from the Front Lines: Building Evolvable Software with Ev...DDD & Microservices from the Front Lines: Building Evolvable Software with Ev...
DDD & Microservices from the Front Lines: Building Evolvable Software with Ev...David Dawson
 
Hexagonal Architecture using Grails
Hexagonal Architecture using GrailsHexagonal Architecture using Grails
Hexagonal Architecture using GrailsDavid Dawson
 
Groovy Architectural Flexibility
Groovy Architectural FlexibilityGroovy Architectural Flexibility
Groovy Architectural FlexibilityDavid Dawson
 

More from David Dawson (8)

Practical Event Systems - Microservices for the Data Architect
Practical Event Systems - Microservices for the Data ArchitectPractical Event Systems - Microservices for the Data Architect
Practical Event Systems - Microservices for the Data Architect
 
Microservices Past, Present, Future
Microservices Past, Present, FutureMicroservices Past, Present, Future
Microservices Past, Present, Future
 
Microservices Pain: Testing
Microservices Pain: TestingMicroservices Pain: Testing
Microservices Pain: Testing
 
Effective Microservices Design using Events and Event Sourcing
Effective Microservices Design using Events and Event SourcingEffective Microservices Design using Events and Event Sourcing
Effective Microservices Design using Events and Event Sourcing
 
Assorted Learnings of Microservices
Assorted Learnings of MicroservicesAssorted Learnings of Microservices
Assorted Learnings of Microservices
 
DDD & Microservices from the Front Lines: Building Evolvable Software with Ev...
DDD & Microservices from the Front Lines: Building Evolvable Software with Ev...DDD & Microservices from the Front Lines: Building Evolvable Software with Ev...
DDD & Microservices from the Front Lines: Building Evolvable Software with Ev...
 
Hexagonal Architecture using Grails
Hexagonal Architecture using GrailsHexagonal Architecture using Grails
Hexagonal Architecture using Grails
 
Groovy Architectural Flexibility
Groovy Architectural FlexibilityGroovy Architectural Flexibility
Groovy Architectural Flexibility
 

Recently uploaded

Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 

Recently uploaded (20)

Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 

Reactive APIs using Muon

Editor's Notes

  1. Isolation! Aspiration Evolution Ability to change
  2. Dan North Bounded/ Centred Community
  3. Not the solution! An approach to solving the problem. Tools to engage the world Sounds familiar.
  4. h
  5. Ask the audience. One big one.
  6. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  7. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  8. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  9. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  10. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  11. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  12. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  13. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  14. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  15. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  16. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  17. Some say XXX This is what we are going to discuss! Understand a man by walking in his shoes
  18. Ask the audience. One big one.
  19. Ask the audience. One big one.
  20. Ask the audience. One big one.
  21. Ask the audience. One big one.
  22. Ask the audience. One big one.
  23. Ask the audience. One big one.
  24. Ask the audience. One big one.
  25. Ask the audience. One big one.
  26. Ask the audience. One big one.
  27. Ask the audience. One big one.
  28. Ask the audience. One big one.
  29. Ask the audience. One big one.
  30. Ask the audience. One big one.
  31. Ask the audience. One big one.
  32. Ask the audience. One big one.
  33. Ask the audience. One big one.
  34. Ask the audience. One big one.
  35. Ask the audience. One big one.
  36. Ask the audience. One big one.
  37. Ask the audience. One big one.