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
Case study of the good enough architecture
Search
Jakub Kubryński
July 01, 2017
Programming
0
360
Case study of the good enough architecture
Jakub Kubryński
July 01, 2017
Tweet
Share
More Decks by Jakub Kubryński
See All by Jakub Kubryński
Autonomous deployments in modern distributed systems
jkubrynski
1
95
Bulletproof communication in distributed systems
jkubrynski
0
430
JVM Workshop
jkubrynski
1
180
Engineering architecture
jkubrynski
0
700
JPA - Beyond Copy-Paste
jkubrynski
3
1.4k
Microservices - The Naked Truth Of The Maintainability
jkubrynski
1
620
Other Decks in Programming
See All in Programming
Ruby on Fails - effective error handling with Rails conventions
talyssonoc
0
210
仕様と実装で学ぶOpenTelemetry
drumato
1
130
Open AI APIを使う前に知っておきたいアカウントTier の話
akki_megane
0
110
From Spring Boot 2 to Spring Boot 3 with Java 21 and Jakarta EE
ivargrimstad
0
880
Criando a Woovi em uma semana
daniloab
0
100
AppRouter Panel Talk
yosuke_furukawa
PRO
1
500
Deep Dive into React Stream/Serialize
mugi_uno
3
760
2 週間で Twitter Bot を作ってみた
contour_gara
0
810
Go製Webアプリケーションのエラーとの向き合い方大全、あるいはやっぱりスタックトレース欲しいやん / Kyoto.go #50
utgwkk
6
1.9k
Apache Hive 4 on Treasure Data
ryukobayashi
1
450
大規模UIKitベースアプリへのTCAの段階的導入/gradual-adoption-of-tca-in-a-large-scale-uikit-based-app
takehilo
2
210
Milestoner
bkuhlmann
1
420
Featured
See All Featured
Side Projects
sachag
451
41k
Thoughts on Productivity
jonyablonski
60
3.9k
Making the Leap to Tech Lead
cromwellryan
125
8.5k
Unsuck your backbone
ammeep
664
57k
Mobile First: as difficult as doing things right
swwweet
217
8.6k
Happy Clients
brianwarren
92
6.4k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Building a Modern Day E-commerce SEO Strategy
aleyda
22
6.4k
GraphQLとの向き合い方2022年版
quramy
33
12k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
80
44k
Music & Morning Musume
bryan
41
5.6k
The Brand Is Dead. Long Live the Brand.
mthomps
49
29k
Transcript
@jkubrynski CASE STUDY OF THE GOOD ENOUGH ARCHITECTURE JAKUB KUBRYNSKI
[email protected]
/ @jkubrynski / kubrynski.com
$ WHOAMI DEVSKILLER CO-FOUNDER BOTTEGA TRAINER DEVOXX.PL PROGRAM COMMITTEE MEMBER
OPEN SOURCE CONTRIBUTOR
"Have no fear of perfection - you'll never reach it."
― Salvador Dalí
WHAT YOU CAN LEARN FROM A STARTUP
IS THERE A PERFECT ARCHITECTURE?
FAST FEEDBACK AND COST-EFFECTIVE
1. MOST ORGANIZATIONS "DO AGILE" 2. MOST ORGANIZATIONS SHIP NEW
FEATURES IN MONTHS
DON'T DO AGILE. BE AGILE!
CONTINUOUS DELIVERY
RELEASE VS DEPLOYMENT
REGRESSION IS TOO EXPENSIVE
VERIFY CRITICAL PATHS AND LET YOUR USERS DO THE REST
BUT... CARE ABOUT UNIT TESTS AND FIX BUGS AS ASAP
AS POSSIBLE
MICROSERVICES AUTONOMOUS RELEASES CLOUD READY FAST PIPELINES
COMMUNICATION IS THE ROOT OF ALL EVIL
SLA 99.9 ^ 10 = 99.0
QUALITY SHARED MODEL? E2E TESTS?
CONTRACTS FTW! IF A==C && B==C THEN A==B
SAY NO TO VERSIONING BE UP TO DATE
PERFORMANCE
PERFORMANCE TESTS ARE EVEN MORE EXPENSIVE THAN REGRESSION
PERFORMANCE TESTS CANARY DEPLOYMENTS MONITORING
MONITORING IS THE NEW TESTING
MONITORING PERFORMANCE SYSTEM HEALTH EXCEPTIONS
METRICS EVERYWHERE LIVE BUSINESS INTELLIGENCE DATA DRIVEN ORGANIZATION
DATA DRIVEN MEANS ONLY VALUABLE STUFF
ANY ACTION IS AN INVESTMENT
THINK ABOUT ROI
SAFE TO FAIL MINIMIZE IMPACT
SAFE TO FAIL SELF-HEALING COMMUNICATION
SAFE TO FAIL INSTANT WARNING
SAFE TO FAIL ROLLBACK
SAFE TO FAIL ELIMINATE HUMAN ERRORS
REPEATABILITY
AUTOMATION
MACHINES COMPARED TO HUMANS: ARE GOOD IN REPEATING TASKS ARE
EASY TO ESTIMATE ARE MUCH CHEAPER
AUTOMATE TESTS
AUTOMATE DEPLOYMENTS
AUTOMATE SETUP
AUTOMATE INFRASTRUCTURE
EVERYTHING IS CODE APPLICATION SOURCE BUILD JOBS DEPLOYMENT PIPELINES DEPLOYMENT
SCRIPTS INFRASTRUCTURE OS CONFIGURATION APPLICATION PROPERTIES RUN BOOKS
NO BACKUPS * EXCEPT DATA AND GIT
MINIMIZE OVERHEAD BY KEEPING ORDER
CONVENTION OVER CONFIGURATION
CONVENTION EXAMPLE repository: git.acme.com/repos/{serviceName}.git artifactId: target/{serviceName}.jar application home: /opt/{serviceName} logs:
/opt/{serviceName}/logs/service.log dashboard: grafana.acme.com/dashboard/db/{serviceName} public ip: acme-prod-weu-{serviceName}-pip loadbalancer: acme-prod-weu-{serviceName}-lb VMs: acme-prod-weu-{serviceName}-vm-{i}
GOOD ENOUGH
KEY TAKEAWAYS MONITORING AUTOMATION CONVENTIONS CONTINUOUS DELIVERY
QUESTIONS?
THANKS FOR YOUR PATIENCE