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
Search
Jun Lin
August 01, 2018
Programming
0
53
Microservices
A brief introduction to Microservices.
Jun Lin
August 01, 2018
Tweet
Share
More Decks by Jun Lin
See All by Jun Lin
A brief introduction to GenStage
linjunpop
1
41
Actor Model
linjunpop
0
20
Ruby for iOS developer
linjunpop
0
980
A brief introduction to GitHub
linjunpop
1
60
Test Driven Development
linjunpop
0
41
Ruby 2.0
linjunpop
1
160
Other Decks in Programming
See All in Programming
Next.js App Router
quramy
11
1.6k
使ってみよう Azure AI Document Intelligence
kosmosebi
2
360
デフォルトにして至高、RubyMineの大好きな所
ruzia
0
660
AppRouter Panel Talk
yosuke_furukawa
PRO
1
450
Ruby Function Composition
bkuhlmann
1
340
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.4k
#phpcon_odawara オープン・クローズドなテストフィクスチャを求めて / open closed test fixtures
77web
3
240
雑に思考を整理する技術と効能
konifar
62
30k
MicrosoftのPlatform Engineeringガイドを読んで実際になにかやってみた
ymd65536
1
490
dbtのドメイン分割による データ基盤の改善とDigdagとの連携
sakama
0
430
Go製Webアプリケーションのエラーとの向き合い方大全、あるいはやっぱりスタックトレース欲しいやん / Kyoto.go #50
utgwkk
6
1.7k
Git Rebase
bkuhlmann
11
1.6k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
126
32k
In The Pink: A Labor of Love
frogandcode
138
21k
Atom: Resistance is Futile
akmur
260
25k
How STYLIGHT went responsive
nonsquared
92
4.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
7
1.3k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
GraphQLの誤解/rethinking-graphql
sonatard
55
9.3k
Docker and Python
trallard
35
2.7k
Code Review Best Practice
trishagee
56
15k
Building Your Own Lightsaber
phodgson
100
5.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
660
120k
Transcript
Microservices A brief introduction to
Microservices Building scalable cloud-based software applications
The Outline • What is a Monolith • What are
Microservices • The benefit • The drawback • A demo • What Archiver can do • What’s Next
Monolith
A single application bundle Web Service Mail DB Push
What’s wrong?
Slow compile/startup time 15s
Bundled scalability Web Service Mail DB Push Web Service Mail
DB Push Web Service Mail DB Push
Failure diffusion 1 2 3 1 2 3
Chaos on cooperation 1 2 3 4 A B C
Application Teams
Delay shipping 1 2 3 4
Long-term commitment to a technology stack
What are microservices
An architectural style
Self-contained Billing System Auth System Recommendation System
Communication Billing System Auth System Recommendation System
Replaceable Smart Recommendation System Billing System Auth System Stupid Recommendation
System
Is it good?
Benefits • Independent development • Independent deployment • Independent scalability
• Reusability
Independent development
Team-Service Billing Recommend ation A B Support C
Faster iteration Version 1 Version 2 Version 3 Version 1
Version 2
Polyglot Application Java Rust Javascript Ruby
Independent deployment
Rapidly shipment Order Support Social
Fault isolation Order Support Social Uptime 99.999%
Independent scalability
Scale independently Order Support Social Order Order Social Order
Reusability
Reusability Transcoding Streaming Upload Transcoding Download Social Application A Application
B
Is it that good?
Additional complexity Service A Service B Service C
Inter-service communication RESTful AMPQ grpc Authentication Discovery MessagePack Protocol Buffers
Connection pools Timeouts
Costs on the remote calls Service Service Service UI 10ms
20ms 30 ms
Shared library Order Social Support Shared logic
Hard to see the big picture
Dev dependency hell 2 1 3 New feature 4
Not a silver bullet
Demo
Exporter Fetcher Google Drive Dropbox The System
Fetcher The System Platform API Grab recordings
Exporter The System Export Google Drive Dropbox
Fetcher Google Drive Dropbox UI Components
Demo https://git.io/archiver-demo
• Self-Contained service • Inter-application communication protocol (http/json) • Shared
library (Archiver.Shared) • Storage (service maintain it’s own state) • Supervising What’s implemented
None
Archiver
Find the boundary
12-Factor App https://12factor.net
Monitoring
Progressive migration
Recap
Recap • What is a Monolith • What are Microservices
• The benefit • The drawback • A demo • What Archiver can do
What’s Next
• ServiceMesh • Serverless (AWS Lambda) • Spring Cloud or
Akka or .. • https://segment.com/blog/introducing-centrifuge/
One more thing
Actor Model
The Actor Model Actor Mailbox State
https://commons.wikimedia.org/wiki/File:Erlang_logo.svg http://www.erlang.org
Object Orientation OO is only about message passing and isolation
and protection of state. - Alan Kay http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en
None