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
Microservices in Practice
Search
Jano González
October 24, 2014
Technology
7
660
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
370
Migrando a Microservicios
janogonzalez
1
300
Extracting services from a monolith
janogonzalez
3
250
¿Después de 10 años, realmente entiendo esta industria?
janogonzalez
3
460
Two programmers in one
janogonzalez
1
160
The Bipolar Programmer
janogonzalez
4
600
Ruby for your two internal programmers
janogonzalez
4
250
Ruby for Java minds
janogonzalez
4
1.1k
How Ruby Programmed Me
janogonzalez
11
500
Other Decks in Technology
See All in Technology
他チームへ越境したら、生データ提供ソリューションのクエリ費用95%削減へ繋がった話 / Cross-Team Impact: 95% Off Raw Data Query Costs
yamamotoyuta
0
250
データ戦略部門 紹介資料
sansan33
PRO
1
3.1k
Digitization部 紹介資料
sansan33
PRO
1
3.8k
Java で学ぶ 代数的データ型
ysknsid25
1
680
Redmineの意外と知らない便利機能 (Redmine 6.0対応版)
vividtone
0
1.3k
Java 30周年記念! Javaの30年をふりかえる
skrb
2
1.5k
[zh-TW] DevOpsDays Taipei 2025 -- Creating Awesome Change in SmartNews!(machine translation)
martin_lover
1
650
TechBull Membersの開発進捗どうですか!?
rvirus0817
0
230
“⾞が通れるほど⼤きな”セキュリティーホールを抑えながらログインしたい
taiseiue
0
160
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.6k
toittaにOpenTelemetryを導入した話 / Mackerel APM リリースパーティ
cohalz
1
490
アプリケーションの中身が見える!Mackerel APMの全貌と展望 / Mackerel APMリリースパーティ
mackerelio
0
450
Featured
See All Featured
The Language of Interfaces
destraynor
158
25k
Fireside Chat
paigeccino
37
3.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
750
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Making Projects Easy
brettharned
116
6.2k
Balancing Empowerment & Direction
lara
1
89
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
A Tale of Four Properties
chriscoyier
159
23k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.5k
The Cult of Friendly URLs
andyhume
78
6.4k
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
[email protected]
http://soundcloud.com/jobs
(WE ARE HIRING)
[email protected]
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