Slide 1

Slide 1 text

@jkubrynski / kubrynski.com @jkubrynski / kubrynski.com BULLETPROOF BULLETPROOF COMMUNICATION COMMUNICATION JAKUB KUBRYNSKI JAKUB KUBRYNSKI [email protected] / @jkubrynski / kubrynski.blog

Slide 2

Slide 2 text

$ WHOAMI $ WHOAMI DEVSKILLER CO-FOUNDER DEVSKILLER CO-FOUNDER BOTTEGA TRAINER BOTTEGA TRAINER DEVOXX.PL PROGRAM COMMITTEE MEMBER DEVOXX.PL PROGRAM COMMITTEE MEMBER SPRING CLOUD CONTRACT CO-AUTHOR SPRING CLOUD CONTRACT CO-AUTHOR

Slide 3

Slide 3 text

DEVSKILLER IS LOOKING FOR DEVSKILLER IS LOOKING FOR HELLO-WORLD DEVELOPERS HELLO-WORLD DEVELOPERS

Slide 4

Slide 4 text

WHY DISTRIBUTED SYSTEMS? WHY DISTRIBUTED SYSTEMS? SCALABILITY SCALABILITY POLYGLOT POLYGLOT RESILIENCE RESILIENCE

Slide 5

Slide 5 text

DISTRIBUTED SYSTEMS FALLACIES DISTRIBUTED SYSTEMS FALLACIES THE NETWORK IS RELIABLE THE NETWORK IS RELIABLE LATENCY IS ZERO LATENCY IS ZERO THE NETWORK IS SECURE THE NETWORK IS SECURE TOPOLOGY DOESN'T CHANGE TOPOLOGY DOESN'T CHANGE

Slide 6

Slide 6 text

IF YOU WON'T RESPECT FALLACIES IF YOU WON'T RESPECT FALLACIES YOU'LL BUILD DISTRIBUTED MONOLITH YOU'LL BUILD DISTRIBUTED MONOLITH

Slide 7

Slide 7 text

BRACE YOURSELF BRACE YOURSELF FAILURE IS COMING FAILURE IS COMING

Slide 8

Slide 8 text

IN MONOLITH ALL COLLABORATORS ARE IN MONOLITH ALL COLLABORATORS ARE ALWAYS AVAILABLE ALWAYS AVAILABLE

Slide 9

Slide 9 text

IN DISTRIBUTED SYSTEMS THEY ARE NOT IN DISTRIBUTED SYSTEMS THEY ARE NOT NETWORK ISSUES NETWORK ISSUES REDEPLOYS REDEPLOYS OUTAGES OUTAGES

Slide 10

Slide 10 text

AVAILABILITY VS DOWNTIME AVAILABILITY VS DOWNTIME 9 9 . 9 9 9 % 35d 4d 8h 50m 5m per year 2.5h 14m 1.5m 8s 0.8s per day

Slide 11

Slide 11 text

99.9 (1.5 MIN/DAY) 99.9 (1.5 MIN/DAY) 5 * 99.9 => 99.5 (7 MIN/DAY) 5 * 99.9 => 99.5 (7 MIN/DAY)

Slide 12

Slide 12 text

TEMPORAL COUPLING TEMPORAL COUPLING

Slide 13

Slide 13 text

DESIGN FOR FAILURE DESIGN FOR FAILURE

Slide 14

Slide 14 text

PREFER ASYNCHRONOUS PREFER ASYNCHRONOUS OVER SYNCHRONOUS OVER SYNCHRONOUS

Slide 15

Slide 15 text

ASYNCHRONOUS ACTORS ASYNCHRONOUS ACTORS COMMANDS (QUEUES) COMMANDS (QUEUES) EVENTS (TOPICS) EVENTS (TOPICS)

Slide 16

Slide 16 text

ASYNCHRONOUS PRINCIPLES ASYNCHRONOUS PRINCIPLES PERSISTENT PERSISTENT AT-LEAST-ONCE DELIVERY AT-LEAST-ONCE DELIVERY EXPONENTIAL RETRIES EXPONENTIAL RETRIES

Slide 17

Slide 17 text

SYNCHRONOUS SYNCHRONOUS IS USED ONLY WHEN REQUIRED IS USED ONLY WHEN REQUIRED

Slide 18

Slide 18 text

WHAT COULD POSSIBLY GO WRONG? WHAT COULD POSSIBLY GO WRONG? ¯\_(ツ)_/¯ ¯\_(ツ)_/¯

Slide 19

Slide 19 text

TIMEOUT?!?! TIMEOUT?!?! RETRY RETRY

Slide 20

Slide 20 text

CIRCUIT BREAKER CIRCUIT BREAKER KEEP CALM AND FALLBACK KEEP CALM AND FALLBACK

Slide 21

Slide 21 text

IN MONOLITH TOPOLOGY IS FIXED IN MONOLITH TOPOLOGY IS FIXED

Slide 22

Slide 22 text

IN DISTRIBUTED SYSTEMS IT'S NOT IN DISTRIBUTED SYSTEMS IT'S NOT CLOUD NATIVE / CONTAINERS CLOUD NATIVE / CONTAINERS DYNAMIC SCALABILITY DYNAMIC SCALABILITY

Slide 23

Slide 23 text

ALWAYS USE SERVICE DISCOVERY ALWAYS USE SERVICE DISCOVERY

Slide 24

Slide 24 text

LOAD BALANCERS SUCKS LOAD BALANCERS SUCKS IT'S SINGLE POINT OF FAILURE IT'S SINGLE POINT OF FAILURE

Slide 25

Slide 25 text

ALWAYS USE CLIENT SIDE LOAD BALACING ALWAYS USE CLIENT SIDE LOAD BALACING

Slide 26

Slide 26 text

IT'S ALL ABOUT COMMUNICATION IT'S ALL ABOUT COMMUNICATION SO NICE TO KNOW IT WORKS SO NICE TO KNOW IT WORKS

Slide 27

Slide 27 text

DISTRIBUTED SYSTEMS DISTRIBUTED SYSTEMS VS VS MICROSERVICES MICROSERVICES

Slide 28

Slide 28 text

MICROSERVICES BRING MICROSERVICES BRING AUTONOMY AUTONOMY

Slide 29

Slide 29 text

AUTONOMY IS HARD AUTONOMY IS HARD BECAUSE WE NEED TO COORDINATE DEPENDENCIES BECAUSE WE NEED TO COORDINATE DEPENDENCIES AND BE BACKWARD COMPATIBLE AND BE BACKWARD COMPATIBLE

Slide 30

Slide 30 text

LOOSE COUPLING LOOSE COUPLING OVER OVER CANONICAL MODEL CANONICAL MODEL

Slide 31

Slide 31 text

END-TO-END TESTS ARE HARD END-TO-END TESTS ARE HARD FALSE-NEGATIVE FALSE-NEGATIVE FALSE-POSITIVE FALSE-POSITIVE

Slide 32

Slide 32 text

VERIFY CONTRACTS VERIFY CONTRACTS A == C && B == C A == C && B == C A == B A == B

Slide 33

Slide 33 text

CONTRACT CONVERTS TO CONTRACT CONVERTS TO SERVER TEST SERVER TEST CLIENT STUB CLIENT STUB

Slide 34

Slide 34 text

PERFORMANCE? PERFORMANCE?

Slide 35

Slide 35 text

MONITORING IS THE NEW TESTING MONITORING IS THE NEW TESTING

Slide 36

Slide 36 text

MONITORING MONITORING EXCEPTIONS EXCEPTIONS BUSINESS METRICS BUSINESS METRICS APPLICATION PERFORMANCE MANAGEMENT APPLICATION PERFORMANCE MANAGEMENT

Slide 37

Slide 37 text

ANSCOMBE'S QUARTET ANSCOMBE'S QUARTET Mean of x => 9 Sample variance of x => 11 Mean of y => 7.50 Sample variance of y => 4.125 Correlation => 0.816 Linear regression => y = 3.00 + 0.500x

Slide 38

Slide 38 text

PERCENTILES PERCENTILES P50, P90, P95, P99 P50, P90, P95, P99

Slide 39

Slide 39 text

MONITOR MONITOR P99.9 OR P99.95 P99.9 OR P99.95

Slide 40

Slide 40 text

THANKS THANKS

Slide 41

Slide 41 text

DROGA.DEV DROGA.DEV

Slide 42

Slide 42 text

QUESTIONS? QUESTIONS?

Slide 43

Slide 43 text

"Have no fear of perfection - you'll never reach it." ― Salvador Dalí