@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
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
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
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