BLA BLA
MICROSERVICES
BLA BLA
DIRECTOR'S CUT
JONAS BONÉR
@JBONER
CTO LIGHTBEND
Slide 2
Slide 2 text
KNOCK, KNOCK. WHO’S THERE?
REALITY
Slide 3
Slide 3 text
Traditional application
architectures and
platforms
are obsolete.
— Gartner
Slide 4
Slide 4 text
MICROSERVICES.
WHAT MAKES THEM SO POPULAR?
Slide 5
Slide 5 text
ONE DEFINITION
SUPPORTS MULTIPLE AUTONOMOUS TEAMS
ORGANIZED TO SCALE THE DEVELOPMENT
WHERE THE TEAMS CAN DEVELOP, DEPLOY AND MANAGE
THEIR SERVICES INDEPENDENTLY
Slide 6
Slide 6 text
THE ARCHITECTURAL CONTEXT OF MICROSERVICES:
DISTRIBUTED SYSTEMS
Slide 7
Slide 7 text
ANOTHER DEFINITION
A SYSTEM OF
AUTONOMOUS
COLLABORATIVE
DISTRIBUTED
SERVICES
Slide 8
Slide 8 text
AUTONOMY
FROM GREEK AUTO-NOMOS:
AUTO MEANING SELF
NOMOS MEANING LAW
Slide 9
Slide 9 text
PROMISE THEORY
LEADS THE WAY
Slide 10
Slide 10 text
THINK IN PROMISES
NOT COMMANDS
Slide 11
Slide 11 text
Autonomy makes information local,
leading to greater certainty
and stability
—IN SEARCH FOR CERTAINTY BY MARK BURGESS
Slide 12
Slide 12 text
> Commands diverge into unpredictable outcomes from
definite beginnings ˰ decreased certainty
> Promises converge towards a definite outcome from
unpredictable beginnings ˰ improved certainty
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
AN AUTONOMOUS SERVICE
CAN ONLY PROMISE
ITS OWN BEHAVIOUR
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
IT WILL SLICE UP YOUR
1. ORGANIZATION
2. ARCHITECTURE
Slide 17
Slide 17 text
Organizations which
design systems
...are constrained to
produce designs which
are copies of the
communication
structures of these
organizations.
— Melvin Conway
Slide 18
Slide 18 text
USE BULKHEADING
Slide 19
Slide 19 text
BUT
WHAT ABOUT THE
TITANIC?
Slide 20
Slide 20 text
RESILIENCE
IS THE ABILITY TO SELF-HEAL, WHICH REQUIRES
COMPARTMENTALIZATION OF FAILURE
Slide 21
Slide 21 text
GO
ASYNCHRONOUS
Slide 22
Slide 22 text
ASYNC IO
—IS ABOUT NOT BLOCKING THREADS
ASYNC COMMUNICATION
—IS ABOUT NOT BLOCKING REQUESTS
Slide 23
Slide 23 text
ASYNCHRONOUS
IO
Slide 24
Slide 24 text
SYNCHRONOUS DISPATCH
Slide 25
Slide 25 text
ASYNCHRONOUS DISPATCH
Slide 26
Slide 26 text
ASYNCHRONOUS
COMMUNICATION
Slide 27
Slide 27 text
ASYNC COMMUNICATION ALLOWS DECOUPLING IN
SPACE
AND
TIME
Slide 28
Slide 28 text
ASYCHRONOUS MESSAGE-PASSING
EMBRACES THE CONSTRAINTS OF
DISTRIBUTED SYSTEMS
Slide 29
Slide 29 text
MESSAGE-PASSING ALLOWS FOR LOCATION TRANSPARENCY
ONE COMMUNICATION ABSTRACTION ACROSS ALL DIMENSIONS OF SCALE
CORE ˰ SOCKET ˰
CPU ˰ CONTAINER ˰
SERVER ˰ RACK ˰
DATA CENTER ˰ SYSTEM
Slide 30
Slide 30 text
MICROWHAT?
Slide 31
Slide 31 text
The Unix philosophy:
Write programs that do
one thing & do it well.
Write programs to
work together.
— Doug McIlroy
Slide 32
Slide 32 text
DO ONE THING
AND
DO IT WELL
Slide 33
Slide 33 text
BUT WHAT ABOUT
STATE?
Slide 34
Slide 34 text
OWN YOUR STATE, EXCLUSIVELY
Slide 35
Slide 35 text
THERE IS NO SUCH THING AS A
"STATELESS" ARCHITECTURE
IT'S JUST SOMEONE ELSE'S PROBLEM
Slide 36
Slide 36 text
THINK IN TERMS OF
CONSISTENCY BOUNDARIES
Slide 37
Slide 37 text
BOUNDED
CONTEXTS
Slide 38
Slide 38 text
POLYGLOT
PERSISTENCE
Slide 39
Slide 39 text
The truth is the log.
The database is a cache
of a subset of the log.
— Pat Helland
Slide 40
Slide 40 text
FAVOR
EVENT LOGGING
Slide 41
Slide 41 text
THE LOG
IS A DATABASE OF THE PAST
NOT JUST A DATABASE OF THE PRESENT
Slide 42
Slide 42 text
EVENT SOURCING
WITH CQRS
Slide 43
Slide 43 text
EVENT LOGGING AVOIDS THE INFAMOUS
OBJECT-RELATIONAL
IMPEDENCE MISMATCH
Slide 44
Slide 44 text
YOU NEED TO SEPARATE
THE STATELESS PART — THE BEHAVIOR
FROM
THE STATEFUL PART — THE KNOWLEDGE
Slide 45
Slide 45 text
STAY MOBILE
BUT ADDRESSABLE
Slide 46
Slide 46 text
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)
Slide 47
Slide 47 text
WHY WOULD I NEED
VIRTUAL ADRESSING?
1. Load-balancing between stateless services
2. State replication of stateful services
3. Relocation of a stateful service
Slide 48
Slide 48 text
REFERENCES SHOULD ALWAYS WORK
Slide 49
Slide 49 text
...AND NOW WHAT?
Slide 50
Slide 50 text
One actor is no actor.
Actors come in systems.
— Carl Hewitt
Slide 51
Slide 51 text
MICROSERVICES
COME IN SYSTEMS
Slide 52
Slide 52 text
SYSTEMS NEED TO
EXPLOIT REALITY
Slide 53
Slide 53 text
INFORMATION HAS
LATENCY
Slide 54
Slide 54 text
WE ARE ALWAYS LOOKING INTO THE PAST
Slide 55
Slide 55 text
THE COST OF MAINTAINING THE
ILLUSION
OF AN ABSOLUTE
NOW
Slide 56
Slide 56 text
AS LATENCY GETS HIGHER, THE
ILLUSION CRACKS EVEN MORE
Slide 57
Slide 57 text
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
Slide 58
Slide 58 text
No content
Slide 59
Slide 59 text
No content
Slide 60
Slide 60 text
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)
Slide 61
Slide 61 text
STRIVE TO MINIMIZE
COUPLING &
COMMUNICATION
Slide 62
Slide 62 text
Words are very
unecessary.
They can only do harm.
Enjoy the silence.
— Enjoy the Silence by Martin Gore
(Depeche Mode)
Slide 63
Slide 63 text
Silence is not only
golden, it is seldom
misquoted.
— Bob Monkhouse
Slide 64
Slide 64 text
The contents of
a message are
always from the past!
They are never “now.”
— Pat Helland
Slide 65
Slide 65 text
WE HAVE TO RELY ON
EVENTUAL CONSISTENCY
BUT DON'T BE SURPRISED
IT'S HOW THE WORLD WORKS
Slide 66
Slide 66 text
NO ONE WANTS
EVENTUAL CONSISTENCY
IT IS A NECESSARY EVIL
Slide 67
Slide 67 text
THINK IN FACTS
Slide 68
Slide 68 text
CAUSALITY
IS A PATH TO KNOWLEDGE
Slide 69
Slide 69 text
To condense fact from
the vapor of nuance
— Neal Stephenson, Snow Crash
Slide 70
Slide 70 text
WE NEED TO
CONTAIN MUTABLE STATE &
PUBLISH FACTS
Slide 71
Slide 71 text
HOW CAN WE MANAGE
PROTOCOL EVOLUTION?
Slide 72
Slide 72 text
Be conservative
in what you do,
be liberal in what you
accept from others.
— Jon Postel
Slide 73
Slide 73 text
CONSIDER USING AN
ANTI-CORRUPTION LAYER
(CLASSIC DDD PATTERN)
Slide 74
Slide 74 text
CONSIDER USING AN
API GATEWAY
TO SIMPLIFY CLIENT COMMUNICATION
Slide 75
Slide 75 text
HOW CAN WE MANAGE
THE COMPLEXITY OF
COMMUNICATION?
Slide 76
Slide 76 text
INTEGRATION
WITH OTHER SYSTEMS
IS A RISKY BUSINESS
Slide 77
Slide 77 text
SYNCHRONOUS
COMMUNICATION
PUTS YOU AT THE
MERCY
OF THE OTHER SYSTEM
Slide 78
Slide 78 text
USE CIRCUIT BREAKERS
Slide 79
Slide 79 text
ALWAYS APPLY BACK-PRESSURE
OR SOMEONE WILL GET HURT
Slide 80
Slide 80 text
A FAST SYSTEM
SHOULD NOT OVERLOAD
A SLOW SYSTEM
Slide 81
Slide 81 text
BUT
WHAT ABOUT
TRANSACTIONS?
Slide 82
Slide 82 text
In general,
application developers
simply do not implement
large scalable
applications
assuming distributed
transactions.
— Pat Helland
Slide 83
Slide 83 text
“Two-phase commit is
the anti-availability
protocol.”
— Pat Helland
Slide 84
Slide 84 text
GUESS.
APOLOGIZE.
COMPENSATE.
Slide 85
Slide 85 text
IT'S HOW THE
WORLD WORKS
Slide 86
Slide 86 text
BUT... I REALLY NEED TRANSACTIONS
Slide 87
Slide 87 text
SAGA
PATTERN
Slide 88
Slide 88 text
IN SUMMARY
EMBRACE REALITY
AND ITS CONSTRAINTS
SHALL SET YOU FREE
(OR SOMETHING LIKE THAT)
Slide 89
Slide 89 text
LEARN
MORE
HTTP://BIT.LY/REACTIVE-MICROSERVICES-ARCHITECTURE
Slide 90
Slide 90 text
NEVER. STOP. READING.
SOME BOOKS TO GET YOU STARTED