Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Bulletproof communication in distributed systems
Search
Jakub Kubryński
March 30, 2019
Programming
570
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Bulletproof communication in distributed systems
Jakub Kubryński
March 30, 2019
More Decks by Jakub Kubryński
See All by Jakub Kubryński
Autonomous deployments in modern distributed systems
jkubrynski
1
130
JVM Workshop
jkubrynski
1
210
Engineering architecture
jkubrynski
0
830
Case study of the good enough architecture
jkubrynski
0
480
JPA - Beyond Copy-Paste
jkubrynski
3
1.6k
Microservices - The Naked Truth Of The Maintainability
jkubrynski
1
740
Other Decks in Programming
See All in Programming
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
160
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
500
act2-costs.pdf
sumedhbala
0
120
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
180
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
630
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
1
240
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
220
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
610
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
140
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
490
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
900
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
350
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
300
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
620
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Building Applications with DynamoDB
mza
96
7.1k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Automating Front-end Workflow
addyosmani
1370
210k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
420
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.7k
Facilitating Awesome Meetings
lara
57
7k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.8k
Transcript
@jkubrynski / kubrynski.com @jkubrynski / kubrynski.com BULLETPROOF BULLETPROOF COMMUNICATION COMMUNICATION
JAKUB KUBRYNSKI JAKUB KUBRYNSKI
[email protected]
/ @jkubrynski / kubrynski.blog
$ 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
DEVSKILLER IS LOOKING FOR DEVSKILLER IS LOOKING FOR HELLO-WORLD DEVELOPERS
HELLO-WORLD DEVELOPERS
WHY DISTRIBUTED SYSTEMS? WHY DISTRIBUTED SYSTEMS? SCALABILITY SCALABILITY POLYGLOT POLYGLOT
RESILIENCE RESILIENCE
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
IF YOU WON'T RESPECT FALLACIES IF YOU WON'T RESPECT FALLACIES
YOU'LL BUILD DISTRIBUTED MONOLITH YOU'LL BUILD DISTRIBUTED MONOLITH
BRACE YOURSELF BRACE YOURSELF FAILURE IS COMING FAILURE IS COMING
IN MONOLITH ALL COLLABORATORS ARE IN MONOLITH ALL COLLABORATORS ARE
ALWAYS AVAILABLE ALWAYS AVAILABLE
IN DISTRIBUTED SYSTEMS THEY ARE NOT IN DISTRIBUTED SYSTEMS THEY
ARE NOT NETWORK ISSUES NETWORK ISSUES REDEPLOYS REDEPLOYS OUTAGES OUTAGES
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
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)
TEMPORAL COUPLING TEMPORAL COUPLING
DESIGN FOR FAILURE DESIGN FOR FAILURE
PREFER ASYNCHRONOUS PREFER ASYNCHRONOUS OVER SYNCHRONOUS OVER SYNCHRONOUS
ASYNCHRONOUS ACTORS ASYNCHRONOUS ACTORS COMMANDS (QUEUES) COMMANDS (QUEUES) EVENTS (TOPICS)
EVENTS (TOPICS)
ASYNCHRONOUS PRINCIPLES ASYNCHRONOUS PRINCIPLES PERSISTENT PERSISTENT AT-LEAST-ONCE DELIVERY AT-LEAST-ONCE DELIVERY
EXPONENTIAL RETRIES EXPONENTIAL RETRIES
SYNCHRONOUS SYNCHRONOUS IS USED ONLY WHEN REQUIRED IS USED ONLY
WHEN REQUIRED
WHAT COULD POSSIBLY GO WRONG? WHAT COULD POSSIBLY GO WRONG?
¯\_(ツ)_/¯ ¯\_(ツ)_/¯
TIMEOUT?!?! TIMEOUT?!?! RETRY RETRY
CIRCUIT BREAKER CIRCUIT BREAKER KEEP CALM AND FALLBACK KEEP CALM
AND FALLBACK
IN MONOLITH TOPOLOGY IS FIXED IN MONOLITH TOPOLOGY IS FIXED
IN DISTRIBUTED SYSTEMS IT'S NOT IN DISTRIBUTED SYSTEMS IT'S NOT
CLOUD NATIVE / CONTAINERS CLOUD NATIVE / CONTAINERS DYNAMIC SCALABILITY DYNAMIC SCALABILITY
ALWAYS USE SERVICE DISCOVERY ALWAYS USE SERVICE DISCOVERY
LOAD BALANCERS SUCKS LOAD BALANCERS SUCKS IT'S SINGLE POINT OF
FAILURE IT'S SINGLE POINT OF FAILURE
ALWAYS USE CLIENT SIDE LOAD BALACING ALWAYS USE CLIENT SIDE
LOAD BALACING
IT'S ALL ABOUT COMMUNICATION IT'S ALL ABOUT COMMUNICATION SO NICE
TO KNOW IT WORKS SO NICE TO KNOW IT WORKS
DISTRIBUTED SYSTEMS DISTRIBUTED SYSTEMS VS VS MICROSERVICES MICROSERVICES
MICROSERVICES BRING MICROSERVICES BRING AUTONOMY AUTONOMY
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
LOOSE COUPLING LOOSE COUPLING OVER OVER CANONICAL MODEL CANONICAL MODEL
END-TO-END TESTS ARE HARD END-TO-END TESTS ARE HARD FALSE-NEGATIVE FALSE-NEGATIVE
FALSE-POSITIVE FALSE-POSITIVE
VERIFY CONTRACTS VERIFY CONTRACTS A == C && B ==
C A == C && B == C A == B A == B
CONTRACT CONVERTS TO CONTRACT CONVERTS TO SERVER TEST SERVER TEST
CLIENT STUB CLIENT STUB
PERFORMANCE? PERFORMANCE?
MONITORING IS THE NEW TESTING MONITORING IS THE NEW TESTING
MONITORING MONITORING EXCEPTIONS EXCEPTIONS BUSINESS METRICS BUSINESS METRICS APPLICATION PERFORMANCE
MANAGEMENT APPLICATION PERFORMANCE MANAGEMENT
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
PERCENTILES PERCENTILES P50, P90, P95, P99 P50, P90, P95, P99
MONITOR MONITOR P99.9 OR P99.95 P99.9 OR P99.95
THANKS THANKS
DROGA.DEV DROGA.DEV
QUESTIONS? QUESTIONS?
"Have no fear of perfection - you'll never reach it."
― Salvador Dalí