Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Microservices in Practice
Jano González
October 24, 2014
Technology
7
580
Microservices in Practice
My talk at RubyConf Argentina 2014
Jano González
October 24, 2014
Tweet
Share
More Decks by Jano González
See All by Jano González
Containerizing your monolith
janogonzalez
0
140
Migrando a Microservicios
janogonzalez
1
180
Extracting services from a monolith
janogonzalez
3
230
¿Después de 10 años, realmente entiendo esta industria?
janogonzalez
3
340
Two programmers in one
janogonzalez
1
110
The Bipolar Programmer
janogonzalez
4
520
Ruby for your two internal programmers
janogonzalez
4
180
Ruby for Java minds
janogonzalez
4
790
How Ruby Programmed Me
janogonzalez
11
440
Other Decks in Technology
See All in Technology
開発者のための GitHub Organization の安全な運用と 継続的なモニタリング
flatt_security
2
3.2k
Puny to Powerful PostgreSQL Rails Apps
andyatkinson
PRO
0
210
Babylon.js v5 新機能の紹介
limes2018
0
990
Babylon.js で簡単 WebXR
yuhara0928
1
930
エンジニアと気軽に繋がれるプラットフォーム「ハッカー飯」で行った セキュリティ・モニタリングに関する取り組みについて
nobuakikikuchi
0
350
【OCHaCafe#5】その Pod 突然落ちても大丈夫ですか?
k6s4i53rx
1
120
20220510_簡単にできるコスト異常検出(Cost Anomaly Detection) /jaws-ug-asa-cost-anomaly-detection-20220510
emiki
2
310
Adopting Kafka for the #1 job site in the world
ymyzk
1
270
AWSの基礎を学ぼうで学んだ9種類のDBを勝手にふりかえる
98lerr
2
710
Steps toward self-service operations in eureka
fukubaka0825
0
420
読者のことを考えて書いてみよう / Write with your reader in mind
line_developers
PRO
3
300
LINEのData Platform室が実践する大規模分散環境のCapacity Planning
line_developers
PRO
0
250
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
310
33k
Design by the Numbers
sachag
271
17k
The Art of Programming - Codeland 2020
erikaheidi
31
5.8k
Navigating Team Friction
lara
175
11k
A Modern Web Designer's Workflow
chriscoyier
689
180k
The Most Common Mistakes in Cover Letters
jrick
PRO
4
24k
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
4 Signs Your Business is Dying
shpigford
169
20k
GraphQLとの向き合い方2022年版
quramy
16
8.1k
Web Components: a chance to create the future
zenorocha
303
40k
Building Your Own Lightsaber
phodgson
94
4.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.3k
Transcript
None
@janogonzalez MICROSERVICES IN PRACTICE
LAST YEAR…
None
Leandro “Inkel” López, 2013 “El ordenador, ordena. La computadora, computa”
˝
12hrs AUDIO/min
HUNDREDS OF MILLIONS users/month
MANY PLATFORMS
$ rails soundcloud
The Mothership
Pearl Jam - Do the Evolution “It’s evolution, baby!” ˝
soundcloud.com iOS/Android 3rd party Public API Domain logic The Mothership
None
WELCOME TO THE MONOLITH Population: you
CONWAY’S LAW
Marvin Conway, 1968 “Organizations produce systems whose design is a
copy of the structure of the organization”
BREAKING THE MONOLITH ˝
MICROSERVICES ARCHITECTURE
JUST SOA FOR HIPSTERS?
CROSS FUNCTIONAL TEAMS ˝
None
None
BOUNDED CONTEXTS ˝
Track User Favoriting
DOMAIN MODEL FITS IN YOUR HEAD ˝
Track Likes Count Favoriting
YOU CAN USE THE RIGHT TOOLS ˝
FASTERS TESTS ˝
ENABLES REPLACEABILITY ˝
None
CONTINUOUS DEPLOYMENT ˝
SOA WITHOUT VENDOR LOCK-IN?
SMART COMPONENTS, DUMB PIPES ˝
HC SVNT DRACONES ˝
YOU CAN USE TOO MANY TOOLS ˝
DUPLICATED EFFORTS ˝
AVAILABILITY VS CONSISTENCY ˝
CASCADING FAILURES ˝
None
None
None
None
TOO MANY NETWORK CALLS ˝
None
YOU HAVE NETWORK CALLS ˝
L. Peter Deutsch - Ten Fallacies of Distributed Computing “The
network is reliable”
WHO CALLS WHO AGAIN?
OUR MIGRATION TO MICROSERVICES
SAY NO TO THE BIG-BANG ˝
EXTRACT WHEN MODIFYING ˝
Client Apps Public API Domain logic The Mothership Microservice Internal
API (bounded context)
DE-ACTIVE RECORD ˝
def index likes = user_likes_service.public_track_likes( @user, pagination_params) ! respond collection_for(likes)
end
USE FEATURE FLAGS ˝
if $feature.active?(:use_likes_service, current_user) … else … end
CREATE YOUR SERVICE ˝
MONITOR YOUR SERVICE ˝
PREVENT CASCADING FAILURES ˝
None
CIRCUIT BREAKERS ˝
None
X X X
X X X
X X
USE LIFECYCLE EVENTS ˝
Public API Domain logic The Mothership Microservice Internal API Events
Broker
EVENTUAL CONSISTENCY ˝
Microservice Microservice Client b1:(p,q,r), b2:(/) (a1;b1),(a1;b2)
DEFINE AUTHORITATIVE SOURCES ˝
DEFINE SYSTEM ROLES ˝
Microservice Microservice Client b1:(p,q,r), b2:(/) (a1;b1),(a1;b2)
Listing system Entity System Client b1:(p,q,r), b2:(/) (a1;b1),(a1;b2)
REDUCE “CHATTINESS” ˝
ONE SIZE DOESN’T FIT ALL ˝
CLIENT SPECIFIC APIs ˝
BFF ˝
Listing system Entity System Entity System Client specific API
Listing system Entity System Entity System Client specific API (a1;b1),(a1;b2)
Listing system Entity System Entity System Client specific API a1:(x,y,z)
b1:(p,q,r), b2:(/)
Listing system Entity System Entity System Client specific API (a1.x,
a1.y, b1.p)
EXTRACTING LIBRARIES ˝
COMING SOON…
DISTRIBUTED TRACING ˝
MORE TOLERANT READERS ˝
BINARY PROTOCOLS? ˝
CONCLUSIONS
SMALL FOCUSED TEAMS ˝
DELIVERING FAST ˝
BEWARE OF LOSING THE BIG PICTURE ˝
BEWARE OF TOO MANY STACKS ˝
BEWARE OF DUPLICATE EFFORTS ˝
AVOID BIG-BANG MIGRATIONS ˝
EXPECT DISTRIBUTED FAILURE ˝
MONITOR ALL THE SERVICES ˝
MICROSERVICES WORK FOR US, BUT…
NO SILVER BULLET ˝
THANK YOU jano@soundcloud.com http://soundcloud.com/jobs
(WE ARE HIRING) jano@soundcloud.com http://soundcloud.com/jobs
•https://www.flickr.com/photos/rubyconfar/11231906253/in/set-72157638113568114 •"Gilbert Hill, Andheri" by Madhav Pai - originally posted
to Flickr as Gilbert Hill, Andheri. Licensed under Creative Commons Attribution 2.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/ File:Gilbert_Hill,_Andheri.jpg#mediaviewer/File:Gilbert_Hill,_Andheri.jpg