SlideShare a Scribd company logo
√
Deputy CTO
@viktorklang
Microservices 101:
Exploiting Reality's Constraints with Technology
2"
Connectedness
«Software is becoming
increasingly interconnected»
3"
Klang’s Conjecture
«If you cannot solve a problem without programming;
you cannot solve a problem with programming.»
4"
Klang’s Conjecture
«If you cannot solve a problem without programming;
you cannot solve a problem with programming.»
5"
Klang’s Conjecture
«If you cannot solve a problem without programming;
you cannot solve a problem with programming.»
Reality Imaginary
>
Microservices 101: Exploiting Reality's Constraints with Technology
assert(nrOfDimensions > 0)
Reality
‱ separation in space & time gives us
‱  communication for coordination
‱  variable delays
‱  partial failures
‱  partial/local/stale knowledge
9"
10"
System
«a set of things working together as parts of a
mechanism or an interconnecting network;
a complex whole»
noun
Systems
‱ Purpose is (typically) simple
‱ Complex inner workings
‱ Consist of collaborating components
‱ Components can be systems themselves
‱ Components are as simple as feasible,
but not simpler
11"
12"
Resilience
«Any sufficiently complex system is always
running in degraded mode»
— Richard I. Cook, MD “How complex systems fail” (paraphrased)
13"
Conway’s Law
«Organizations which design systems 
 are
constrained to produce designs which are copies of the
communication structures of these organizations» —
Melvin Conway
Communication
‱ The production and consumption of messages
‱ Messaging means that we need to be able to
address recipients
‱  Addresses/Identities are important!
‱  They are knowledge that can be shared
‱ Messages can become lost, delayed or
misunderstood
14"
Think ‘Reliability’
‱ Are we ever guaranteed delivery?
‱  at-most-once
‱  at-least-once
‱  exactly-once
‱ It’s not about guarantees,
it’s about reliability
15"
Two-faced Commit
16"
Encoding & Medium
‱ Embrace protocols
‱ Overcome the fear of using multiple media
‱  Removes the single-point of failure
‱ No encoding is one-size-fits-all
‱ Allow protocols to evolve over time
17"
Quiz!
299 792 458
340.29
~0.4
Scharnowski et al., 2009; Heinen, Jolij, & Lamme, 2005
22"
Universal Scalability Law
«N is the number of users;
or the number of CPUs,
α is the contention level,
ÎČ the coherency latency.
C is the relative capacity»
Perfect
23"
Throughput"
Load"
Imperfect
24"
Throughput"
Load"
Bounded
25"
Throughput"
Load"
Regressive
26"
Throughput"
Load"
Discovery is EC
‱ Since knowledge is always local/partial/
stale
‱ Discovery of components must embrace
eventual consistency
‱ Conflict-FreeReplicatedDatatypes
(CRDTs) show great promise here
27"
Latency is
the enemy
of responsiveness
Expectation management
‱ To humans, fast & slow is about perception
‱ Manageable
‱ The key is consistency—because reliability
‱ Not the same for machine-to-machine
29"
Burstiness
‱ Most communication is bursty
‱  Some is predictable
‱  Some is not
‱  requires flow control
‱  can leverage elasticity
‱  load shedding can cause burstiness
30"
31"
Little’s Law
«L is mean length;
λ is effective arrival rate;
W is mean time spent»
L=λW
32"
Little’s Law
«L is mean length;
λ is effective arrival rate;
W is mean time spent»
W=L / λ
Hockey!
33"
Response":me"
Queue"length"
Flow control / Back pressure
34"
‱ Buffers are only grease between cogs
‱  They do not solve overload problems
‱ Load shedding does not inform sender
‱ When possible, use effectively bounded,
asynchronous, non-blocking, demand-
driven back pressure
www.reac:veBstreams.org"
No flow control, you say?
36"
Requirements Push Pull
support potentially unbounded sequences ! !
sender runs separately from receiver ! !
rate of reception may vary from rate of sending ! !
dropping elements should be a choice and not a necessity " !
minimal (if any) overhead in terms of latency and throughput ! "
Comparing Push vs Pull
& 37"
Supply
Demand
38"
Publisher" Subscriber"
data"
demand"
‱ “push” when subscriber is faster
‱ “pull” when publisher is faster
‱ switches automatically between both
‱ batching demand allows batching ops
39"
Dynamic
Push–Pull
Reactive Streams
40"
Requirements Push Pull Both
support potentially unbounded sequences ! ! !
sender runs separately from receiver ! ! !
rate of reception may vary from rate of sending ! ! !
dropping elements should be a choice and not a necessity " ! !
minimal (if any) overhead in terms of latency and throughput ! " !
Comparing Push vs Pull vs Both
#"
Stream splitting
41"
demand
data
splitting the data means merging the demand
Stream merging
42"
merging the data means splitting the demand
Collaboration
‱ Assume no malice
‱ Sanity check inputs & outputs
‱ Never wait forever or actively
‱ There’s always a Plan B
43"
44"
Circuit Breakers
Responsibility
‱ Having multiple responsibilities
‱  creates conflict regarding priorities
‱  lowers reliability
‱  increases accidental damage
‱  decreases predictability
‱  hides the cause from the outside
45"
Resilience
‱ Never assume that other entities are immortal
‱ Treat expectation violations as failures
‱ Always have a Plan B
‱ Clients are not responsible to fix a faulty provider
‱ Fail fast & predictably
46"
47"
Postel’s Law
«Be conservative in what you do, be liberal in what you
accept from others.» — Jon Postel
Reduces chatter == lowers latency
49"
"
Zombie Apocalypse
50"
Supervision
‱  Responsibility to deal with the failure/corruption of other
‱  Does not place the burden of fixing it on the collaborators
«Quis custodiet ipsos custodes?»
— Decimus Iunius Iuvenalis
Harden up
‱ Isolate
‱ Replicate
‱ Shard
‱ Control flow
‱ Predict changes in load
‱ React to changes in load
51"
52"
An escalator can never break:
it can only become stairs.
You should never see an
Escalator Temporarily Out Of
Order sign,
just Escalator Temporarily Stairs.
Sorry for the convenience.
– Mitch Hedberg
“
”
53"
E l a s t i c i t y
«Lagom is a Swedish word,
meaning "just the right amount"»
— Wikipedia
54"
Adoption
‱ Mind shift in going async
‱ Mind shift in dealing with failure
‱ Importance of appropriate configuration
‱ Integration using blocking APIs requires care
‱ Avoid the distributed monolith
‱ Deployment requires modern tooling
55"
Transitioning
Summary
‱  Isolate & Contain + Distribute & Replicate
‱  Single Purpose Components
‱  Communicate asynchronously
‱  Divide & Conquer
‱  Avoid coordination & minimize contention
‱  Embrace inconsistency
‱  Strive for lagom amount of utilisation
56"
The Reactive Traits
www.reac:vemanifesto.org"
REACTIVE PLATFORM‹
Full Lifecycle Support for Play, Akka, Scala and Spark
Give your project a boost with Reactive Platform:
‱ Monitor Message-Driven Apps
‱ Resolve Network Partitions Decisively
‱ Integrate Easily with Legacy Systems
‱ Eliminate Incompatibility & Security Risks
‱ Protect Apps Against Abuse
‱ Expert Support from Dedicated Product Teams
Enjoy learning? See about the availability of
on-site training for Scala, Akka, Play and Spark!
Learn more about our offersCONTACT US
©Typesafe 2015 – All Rights Reserved
√

More Related Content

What's hot (20)

PDF
2017 Microservices Practitioner Virtual Summit: Ancestry's Journey towards Mi...
Ambassador Labs
 
PDF
Cloudstate—Towards Stateful Serverless
Jonas Bonér
 
PPTX
Docker and microservices - moving from a monolith to microservices
Johan Louwers
 
PDF
2017 Microservices Practitioner Virtual Summit: Move Fast, Make Things: how d...
Ambassador Labs
 
PDF
CCNxCon2012: Session 5: Object Sizes in Named Data Networking
PARC, a Xerox company
 
PDF
Digital Transformation with Kubernetes, Containers, and Microservices
Lightbend
 
PPTX
MicroServices architecture @ Ctrip v1.1
William Yang
 
PDF
VMware Network Virtualization Design Guide
EMC
 
ODP
Consistency in Distributed Systems
Shane Johnson
 
PPTX
Designing apps for resiliency
Masashi Narumoto
 
PDF
Distributed Systems Theory for Mere Mortals - Java Day Istanbul May 2017
Ensar Basri Kahveci
 
PDF
ĐĐœĐ°Đ»ĐžĐ· Ń‚Đ”Đ»Đ”ĐŒĐ”Ń‚Ń€ĐžĐž про ĐŒĐ°ŃŃˆŃ‚Đ°Đ±ĐžŃ€ĐŸĐČĐ°ĐœĐžĐž, Theo Schlossnagle (Circonus)
Ontico
 
PDF
The 6 Rules for Modernizing Your Legacy Java Monolith with Microservices
Lightbend
 
PDF
Simple Solutions for Complex Problems
Apcera
 
PDF
Microservices Standardization - Susan Fowler, Stripe
Ambassador Labs
 
PDF
Reactive - Is it really a Magic Pill?
Tech Triveni
 
PDF
Cloud Native Patterns Using AWS
Anderson Carvalho
 
PDF
Migrate VMs faster with a new Dell EMC PowerEdge MX solution - Summary
Principled Technologies
 
PDF
Securing Sharded Networks with Swarm
Fluence Labs
 
PDF
Cap Theorem
MichaƂ Ɓomnicki
 
2017 Microservices Practitioner Virtual Summit: Ancestry's Journey towards Mi...
Ambassador Labs
 
Cloudstate—Towards Stateful Serverless
Jonas Bonér
 
Docker and microservices - moving from a monolith to microservices
Johan Louwers
 
2017 Microservices Practitioner Virtual Summit: Move Fast, Make Things: how d...
Ambassador Labs
 
CCNxCon2012: Session 5: Object Sizes in Named Data Networking
PARC, a Xerox company
 
Digital Transformation with Kubernetes, Containers, and Microservices
Lightbend
 
MicroServices architecture @ Ctrip v1.1
William Yang
 
VMware Network Virtualization Design Guide
EMC
 
Consistency in Distributed Systems
Shane Johnson
 
Designing apps for resiliency
Masashi Narumoto
 
Distributed Systems Theory for Mere Mortals - Java Day Istanbul May 2017
Ensar Basri Kahveci
 
ĐĐœĐ°Đ»ĐžĐ· Ń‚Đ”Đ»Đ”ĐŒĐ”Ń‚Ń€ĐžĐž про ĐŒĐ°ŃŃˆŃ‚Đ°Đ±ĐžŃ€ĐŸĐČĐ°ĐœĐžĐž, Theo Schlossnagle (Circonus)
Ontico
 
The 6 Rules for Modernizing Your Legacy Java Monolith with Microservices
Lightbend
 
Simple Solutions for Complex Problems
Apcera
 
Microservices Standardization - Susan Fowler, Stripe
Ambassador Labs
 
Reactive - Is it really a Magic Pill?
Tech Triveni
 
Cloud Native Patterns Using AWS
Anderson Carvalho
 
Migrate VMs faster with a new Dell EMC PowerEdge MX solution - Summary
Principled Technologies
 
Securing Sharded Networks with Swarm
Fluence Labs
 
Cap Theorem
MichaƂ Ɓomnicki
 

Viewers also liked (17)

PDF
Reactive Streams 1.0.0 and Why You Should Care (webinar)
Legacy Typesafe (now Lightbend)
 
PDF
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Lightbend
 
PDF
Develop & Deploy cloud-native apps as resilient Microservices Architectures
Red Hat Developers
 
PDF
Microservices 101: opportunities, dilemmas and problems
Ɓukasz Sowa
 
PDF
Microservices 101 - The Big Why?
Yamen Sader
 
PPTX
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
Legacy Typesafe (now Lightbend)
 
PDF
Microservices 101: From DevOps to Docker and beyond
Donnie Berkholz
 
PDF
Akka Persistence and Eventuate
Martin Krasser
 
ODP
An Introduction to Akka http
Knoldus Inc.
 
PDF
Building a Bank out of Microservices (NDC Sydney, August 2016)
Graham Lea
 
PDF
Akka and the Zen of Reactive System Design
Lightbend
 
PDF
Lightbend Lagom: Microservices Just Right
mircodotta
 
PDF
Event-sourced architectures with Akka
Sander Mak (@Sander_Mak)
 
PDF
Microservices Workshop All Topics Deck 2016
Adrian Cockcroft
 
PPTX
Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...
Lightbend
 
PDF
Journey to Cloud-Native: Where to start in your app modernization process
VMware Tanzu
 
PDF
Principles of microservices velocity
Sam Newman
 
Reactive Streams 1.0.0 and Why You Should Care (webinar)
Legacy Typesafe (now Lightbend)
 
Understanding Akka Streams, Back Pressure, and Asynchronous Architectures
Lightbend
 
Develop & Deploy cloud-native apps as resilient Microservices Architectures
Red Hat Developers
 
Microservices 101: opportunities, dilemmas and problems
Ɓukasz Sowa
 
Microservices 101 - The Big Why?
Yamen Sader
 
A Deeper Look Into Reactive Streams with Akka Streams 1.0 and Slick 3.0
Legacy Typesafe (now Lightbend)
 
Microservices 101: From DevOps to Docker and beyond
Donnie Berkholz
 
Akka Persistence and Eventuate
Martin Krasser
 
An Introduction to Akka http
Knoldus Inc.
 
Building a Bank out of Microservices (NDC Sydney, August 2016)
Graham Lea
 
Akka and the Zen of Reactive System Design
Lightbend
 
Lightbend Lagom: Microservices Just Right
mircodotta
 
Event-sourced architectures with Akka
Sander Mak (@Sander_Mak)
 
Microservices Workshop All Topics Deck 2016
Adrian Cockcroft
 
Lessons Learned From PayPal: Implementing Back-Pressure With Akka Streams And...
Lightbend
 
Journey to Cloud-Native: Where to start in your app modernization process
VMware Tanzu
 
Principles of microservices velocity
Sam Newman
 
Ad

More from Legacy Typesafe (now Lightbend) (13)

PDF
The How and Why of Fast Data Analytics with Apache Spark
Legacy Typesafe (now Lightbend)
 
PDF
Reactive Design Patterns
Legacy Typesafe (now Lightbend)
 
PDF
Revitalizing Aging Architectures with Microservices
Legacy Typesafe (now Lightbend)
 
PPTX
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and more
Legacy Typesafe (now Lightbend)
 
PPTX
Akka 2.4 plus new commercial features in Typesafe Reactive Platform
Legacy Typesafe (now Lightbend)
 
PDF
How to deploy Apache Spark ‹to Mesos/DCOS
Legacy Typesafe (now Lightbend)
 
PDF
Reactive Revealed Part 3 of 3: Resiliency, Failures vs Errors, Isolation, Del...
Legacy Typesafe (now Lightbend)
 
PPTX
Akka 2.4 plus commercial features in Typesafe Reactive Platform
Legacy Typesafe (now Lightbend)
 
PDF
Four Things to Know About Reliable Spark Streaming with Typesafe and Databricks
Legacy Typesafe (now Lightbend)
 
PPTX
Modernizing Your Aging Architecture: What Enterprise Architects Need To Know ...
Legacy Typesafe (now Lightbend)
 
PPTX
Going Reactive in Java with Typesafe Reactive Platform
Legacy Typesafe (now Lightbend)
 
PPTX
Why Play Framework is fast
Legacy Typesafe (now Lightbend)
 
PDF
[Sneak Preview] Apache Spark: Preparing for the next wave of Reactive Big Data
Legacy Typesafe (now Lightbend)
 
The How and Why of Fast Data Analytics with Apache Spark
Legacy Typesafe (now Lightbend)
 
Reactive Design Patterns
Legacy Typesafe (now Lightbend)
 
Revitalizing Aging Architectures with Microservices
Legacy Typesafe (now Lightbend)
 
Typesafe Reactive Platform: Monitoring 1.0, Commercial features and more
Legacy Typesafe (now Lightbend)
 
Akka 2.4 plus new commercial features in Typesafe Reactive Platform
Legacy Typesafe (now Lightbend)
 
How to deploy Apache Spark ‹to Mesos/DCOS
Legacy Typesafe (now Lightbend)
 
Reactive Revealed Part 3 of 3: Resiliency, Failures vs Errors, Isolation, Del...
Legacy Typesafe (now Lightbend)
 
Akka 2.4 plus commercial features in Typesafe Reactive Platform
Legacy Typesafe (now Lightbend)
 
Four Things to Know About Reliable Spark Streaming with Typesafe and Databricks
Legacy Typesafe (now Lightbend)
 
Modernizing Your Aging Architecture: What Enterprise Architects Need To Know ...
Legacy Typesafe (now Lightbend)
 
Going Reactive in Java with Typesafe Reactive Platform
Legacy Typesafe (now Lightbend)
 
Why Play Framework is fast
Legacy Typesafe (now Lightbend)
 
[Sneak Preview] Apache Spark: Preparing for the next wave of Reactive Big Data
Legacy Typesafe (now Lightbend)
 
Ad

Recently uploaded (20)

PPTX
MiniTool Power Data Recovery Full Crack Latest 2025
muhammadgurbazkhan
 
PPTX
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PPTX
How Apagen Empowered an EPC Company with Engineering ERP Software
SatishKumar2651
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
PPTX
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
PPTX
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
PPTX
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
PPTX
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
PPTX
Human Resources Information System (HRIS)
Amity University, Patna
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PPTX
Engineering the Java Web Application (MVC)
abhishekoza1981
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
PPTX
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
PPTX
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
MiniTool Power Data Recovery Full Crack Latest 2025
muhammadgurbazkhan
 
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
How Apagen Empowered an EPC Company with Engineering ERP Software
SatishKumar2651
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
Fundamentals_of_Microservices_Architecture.pptx
MuhammadUzair504018
 
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
Human Resources Information System (HRIS)
Amity University, Patna
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Import Data Form Excel to Tally Services
Tally xperts
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
Engineering the Java Web Application (MVC)
abhishekoza1981
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 

Microservices 101: Exploiting Reality's Constraints with Technology

Editor's Notes

  • #3: This means that software is -collaborating- in an increasing rate. Collaboration is at the very heart of this growing world of software. Communication is at the very heart of collaboration.
  • #4: Programmers, my self included, all too often jump too quickly into code. It is worth reminding oneself that programming is “merely” the encoding of a solution for a machine to execute. The solution ALWAYS exists outside of the code itself. The point being that it is helpful to ask oneself early—how would I solve this -without- writing any code?
  • #5: Programmers, my self included, all too often jump too quickly into code. It is worth reminding oneself that programming is “merely” the encoding of a solution for a machine to execute. The solution ALWAYS exists outside of the code itself. The point being that it is helpful to ask oneself early—how would I solve this -without- writing any code?
  • #6: Programmers, my self included, all too often jump too quickly into code. It is worth reminding oneself that programming is “merely” the encoding of a solution for a machine to execute. The solution ALWAYS exists outside of the code itself. The point being that it is helpful to ask oneself early—how would I solve this -without- writing any code?
  • #7: Perhaps not a bold assertion, but let’s think about it like this: No matter how wonderful the imaginary is, the constraints of reality cannot cease to exist. Being aware of the constraints of reality is -essential- to being able to reason about the viability of solutions. Not only from the initial outset of the project—but laid out over the projected lifetime of it.
  • #10: Alright, so do we all agree that in what we call Reality, we have multiple dimensions? What things do we get from that? Comm for Coo: So given that entities do not exist in the same place, it means that they need to communicate if they want to coordinate -anything-. Delays: Ever observed a race-condition that as you tried to fix it just became less likely? That’s shortened delays—making the window of opportunity smaller but still possible. Partial failures: Since things do not exist in the same location, they especially if collaborating on something, will risk failing individually—where one succeeded and one failed, for example. Knowledge: Since communication is how we coordinate, it is also how we coordinate -information-, and since we have delays and partial failures, we will only ever have a subjective view of the world, one that is bound to be incomplete and stale.
  • #11: System: noun, “a set of things working together as parts of a mechanism or an interconnecting network; a complex whole.” What’s a system? We build systems, right? Computer systems? Are you a system? Are you a component within a system? Is everything systems within systems within systems within

  • #12: A mechanical watch has a very simple purpose, but a watch movement has complex inner workings, consists of a lot of small mechanical components that communicate via force Or the Google Search bar — and whatever kind of beast that powers it :)
  • #13: This means that software is -collaborating- in an increasing rate. Collaboration is at the very heart of this growing world of software. Communication is at the very heart of collaboration.
  • #14: Why? Because, as we’ve discussed, communication is -essential- for collaboration, and organization is ALL about collaboration
  • #19: Different media have different transport speeds Different media have different reception rates & delays
  • #20: speed of light in vacuum in meters per second
  • #21: speed of sound at sea level in meters per second
  • #22: Recent studies have shown that it can take up to almost 400 msec before visual information is available for conscious report (e.g., Scharnowski et al., 2009; Heinen, Jolij, & Lamme, 2005).
  • #23: The 3 C’s: Concurrency Contention Coherency Beta = 0 == Amdahl’s Law
  • #32: Little's Law tells us that the average number of customers in the store L, is the effective arrival rate λ, times the average time that a customer spends in the store W, or simply:
  • #33: If we observe an effective arrival rate and a mean length, we can calculate the mean time spent
  • #38: the crucial addition is to make the exchange bidirectional, and explicitly so message-passing between publisher and subscriber allows asynchronous non-blocking back pressure . data items flow downstream . demand flows upstream . data items flow only when there is demand . recipient is in control of incoming data rate . data in flight is bounded by signaled demand
  • #58: What I have described here for you today, is the essence of the Reactive Manifesto