Reactive
Reactive
MICROSERVICES
BLA BLA
DIRECTOR'S CUT
JONAS BONÉR
@JBONER
CTO LIGHTBEND
KNOCK, KNOCK. WHO’S THERE?
REALITY
Traditional application
architectures and
platforms
are obsolete.
— Gartner
MICROSERVICES.
WHAT MAKES THEM SO POPULAR?
ONE DEFINITION
A SYSTEM OF
AUTONOMOUS
COLLABORATIVE
DISTRIBUTED
SERVICES
AUTONOMY
FROM GREEK AUTO-NOMOS:
AUTO MEANING SELF
NOMOS MEANING LAW
PROMISE THEORY
LEADS THE WAY
THINK IN PROMISES
NOT COMMANDS
Autonomy makes information local,
leading to greater certainty
and stability
—IN SEARCH FOR CERTAINTY BY MARK BURGESS
> Commands diverge into unpredictable outcomes from
definite beginnings ⇒ decreased certainty
> Promises converge towards a definite outcome from
unpredictable beginnings ⇒ improved certainty
AN AUTONOMOUS SERVICE
CAN ONLY PROMISE
ITS OWN BEHAVIOUR
IT WILL SLICE UP YOUR
1. ORGANIZATION
2. ARCHITECTURE
Organizations which
design systems
...are constrained to
produce designs which
are copies of the
communication
structures of these
organizations.
— Melvin Conway
USE BULKHEADING
BUT
WHAT ABOUT THE
TITANIC?
RESILIENCE
IS THE ABILITY TO SELF-HEAL, WHICH REQUIRES
COMPARTMENTALIZATION OF FAILURE
GO
ASYNCHRONOUS
ASYNC IO
—IS ABOUT NOT BLOCKING THREADS
ASYNC COMMUNICATION
—IS ABOUT NOT BLOCKING REQUESTS
ASYNCHRONOUS
IO
SYNCHRONOUS DISPATCH
ASYNCHRONOUS DISPATCH
ASYNCHRONOUS
COMMUNICATION
ASYNC COMMUNICATION ALLOWS DECOUPLING IN
SPACE AND
TIME
ASYCHRONOUS MESSAGE-PASSING
EMBRACES THE CONSTRAINTS OF
DISTRIBUTED SYSTEMS
MESSAGE-PASSING ALLOWS FOR LOCATION TRANSPARENCY
ONE COMMUNICATION ABSTRACTION ACROSS ALL DIMENSIONS OF SCALE
CORE ⇒ SOCKET ⇒
CPU ⇒ CONTAINER ⇒
SERVER ⇒ RACK ⇒
DATA CENTER ⇒ SYSTEM
MICROWHAT?
The Unix philosophy:
Write programs that do
one thing & do it well.
Write programs to
work together.
— Doug McIlroy
DO ONE THING
AND
DO IT WELL
BUT WHAT ABOUT
STATE?
OWN YOUR STATE, EXCLUSIVELY
THERE IS NO SUCH THING AS A
"STATELESS" ARCHITECTURE
IT'S JUST SOMEONE ELSE'S PROBLEM
THINK IN TERMS OF
CONSISTENCY BOUNDARIES
BOUNDED
CONTEXTS
POLYGLOT
PERSISTENCE
The truth is the log.
The database is a cache
of a subset of the log.
— Pat Helland
FAVOR
EVENT LOGGING
THE LOG
IS A DATABASE OF THE PAST
NOT JUST A DATABASE OF THE PRESENT
EVENT SOURCING
WITH CQRS
EVENT LOGGING AVOIDS THE INFAMOUS
OBJECT-RELATIONAL
IMPEDENCE MISMATCH
YOU NEED TO SEPARATE
THE STATELESS PART — THE BEHAVIOR
FROM
THE STATEFUL PART — THE KNOWLEDGE
STAY MOBILE
BUT ADDRESSABLE
But I'll take my time
anywhere.
I'm free to speak my
mind anywhere.
And I'll redefine
anywhere.
Anywhere I roam.
Where I lay my head is
home.
— Wherever I May Roam by Lars Ulrich,
James Hetfield (Metallica)
WHY WOULD I NEED
VIRTUAL ADRESSING?
1. Load-balancing between stateless services
2. State replication of stateful services
3. Relocation of a stateful service
REFERENCES SHOULD ALWAYS WORK
...AND NOW WHAT?
One actor is no actor.
Actors come in systems.
— Carl Hewitt
MICROSERVICES
COME IN SYSTEMS
SYSTEMS NEED TO
EXPLOIT REALITY
INFORMATION HAS
LATENCY
WE ARE ALWAYS LOOKING INTO THE PAST
THE COST OF MAINTAINING THE
ILLUSION
OF AN ABSOLUTE
NOW
AS LATENCY GETS HIGHER, THE
ILLUSION CRACKS EVEN MORE
In a distributed system,
you can know where
the work is done
or you can know when
the work is done
but you can’t know both
— Pat Helland
INSIDE DATA: OUR CURRENT PRESENT
OUTSIDE DATA: BLAST FROM THE PAST
BETWEEN SERVICES: HOPE FOR THE FUTURE
— PAT HELLAND (DATA ON THE INSIDE VS DATA ON THE OUTSIDE)
STRIVE TO MINIMIZE
COUPLING &
COMMUNICATION
Words are very
unecessary.
They can only do harm.
Enjoy the silence.
— Enjoy the Silence by Martin Gore
(Depeche Mode)
Silence is not only
golden, it is seldom
misquoted.
— Bob Monkhouse
The contents of
a message are
always from the past!
They are never “now.”
— Pat Helland
WE HAVE TO RELY ON
EVENTUAL CONSISTENCY
BUT DON'T BE SURPRISED
IT'S HOW THE WORLD WORKS
NO ONE WANTS
EVENTUAL CONSISTENCY
IT IS A NECESSARY EVIL
THINK IN FACTS
CAUSALITY
IS A PATH TO KNOWLEDGE
To condense fact from
the vapor of nuance
— Neal Stephenson, Snow Crash
WE NEED TO
CONTAIN MUTABLE STATE &
PUBLISH FACTS
HOW CAN WE MANAGE
PROTOCOL EVOLUTION?
Be conservative
in what you do,
be liberal in what you
accept from others.
— Jon Postel
CONSIDER USING AN
ANTI-CORRUPTION LAYER
(CLASSIC DDD PATTERN)
CONSIDER USING AN
API GATEWAY
TO SIMPLIFY CLIENT COMMUNICATION
HOW CAN WE MANAGE
THE COMPLEXITY OF
COMMUNICATION?
INTEGRATION
WITH OTHER SYSTEMS
IS A RISKY BUSINESS
SYNCHRONOUS
COMMUNICATION
PUTS YOU AT THE
MERCY
OF THE OTHER SYSTEM
USE CIRCUIT BREAKERS
ALWAYS APPLY BACK-PRESSURE
OR SOMEONE WILL GET HURT
A FAST SYSTEM
SHOULD NOT OVERLOAD
A SLOW SYSTEM
BUT
WHAT ABOUT
TRANSACTIONS?
In general,
application developers
simply do not implement
large scalable
applications
assuming distributed
transactions.
— Pat Helland
“Two-phase commit is
the anti-availability
protocol.”
— Pat Helland
GUESS.
APOLOGIZE.
COMPENSATE.
IT'S HOW THE
WORLD WORKS
BUT... I REALLY NEED TRANSACTIONS
SAGA
PATTERN
IN SUMMARY
EMBRACE REALITY
AND ITS CONSTRAINTS
SHALL SET YOU FREE
(OR SOMETHING LIKE THAT)
LEARN
MORE
HTTP://BIT.LY/REACTIVE-MICROSERVICES-ARCHITECTURE
NEVER. STOP. READING.