SlideShare a Scribd company logo
1 of 158
Download to read offline
scalingmicroserviceswith
messagequeues,springbootand
kubernetes
@danielepolencic
scalabilityandrobustness
10:00 pm08:00 pm06:00 pm05:00 pm03:00 pm01:00 pm
10k req/s
7k req/s
3k req/s
howdoyoudealwith
somuchtraffic?
!"
backend+frontend
BACKEND REST API
BACKEND REST API
BACKEND REST API
BACKEND REST API
BACKEND REST API
BACKEND REST API
BACKEND REST API
planningforlaunch!
User
User
BACKEND
API
User
BACKEND BACKEND BACKEND BACKEND
API
LOAD BALANCER
User
BACKEND BACKEND BACKEND BACKEND
API
LOAD BALANCER
LOAD BALANCER
User
BACKEND BACKEND BACKEND BACKEND
performancetests
BACKEND
BACKEND
• Stateless
• Limit: 1000 rq/s
BACKEND
• Stateless
• Limit: 1000 rq/s
• Stateless
• Limit: 250 rq/s
BACKEND
RATIO
1:4
ready…
10:00 pm08:00 pm06:00 pm05:00 pm03:00 pm01:00 pm
10k req/s
7k req/s
3k req/s
NOW
LOAD BALANCER
LOAD BALANCER
User
BACKEND BACKEND BACKEND BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND BACKEND BACKEND BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND BACKEND BACKEND BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND BACKEND BACKEND BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
toolittle,toolate
10:00 pm08:00 pm06:00 pm05:00 pm03:00 pm01:00 pm
10k req/s
7k req/s
3k req/s
NOW
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
User User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
User User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
User User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
User User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
User User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
User User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
User User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
User User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
gameover!
nicestory,butweknowhowtodo
scaling.
— Smart guy
theretailerreportedlydidn'thave
enoughserverstohandlethe
trafficsurgefortheday
— fortune.com
amazonhadtomanuallyadd
serverstoaddresstheissue(and
failedtoaddthemfastenough)
— fortune.com
whatcouldyouimprove?
1.automaticscaling?
2.decouplingscaling?
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND BACKEND
BACKENDBACKEND
BACKEND BACKEND
BACKEND
RATIO
1:4
LOAD BALANCER
LOAD BALANCER
BACKEND
BACKEND BACKEND
BACKENDBACKEND
BACKEND BACKEND
BACKEND
User
RATIO
1:4
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND BACKEND
BACKEND BACKEND
BACKEND BACKEND
BACKENDBACKEND
BACKEND BACKEND
BACKEND
RATIO
1:4
LOAD BALANCER
LOAD BALANCER
User
RATIO
1:2
BACKEND
BACKEND BACKEND
BACKEND BACKEND
BACKEND BACKEND
BACKENDBACKEND
BACKEND BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
RATIO
1:2
BACKEND
BACKEND
BACKEND
BACKEND
3.decouplingfailures?
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
LOAD BALANCER
LOAD BALANCER
User
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
BACKEND
whatif…
messagebroker
User
BACKEND
User
BACKEND
User
BACKEND
User
BACKEND
User
BACKEND
User
BACKEND
User
BACKEND
User
BACKEND
User
BACKEND
User
BACKEND
User
BACKEND
User
BACKEND
User
BACKEND
scaleidependently✅
User
BACKEND
User
BACKEND
BACKEND BACKEND
BACKEND
User
BACKEND
BACKEND BACKEND
BACKEND
canhandlefailures✅
User
BACKEND
whataboutautomaticscaling?
Mesos
1.opensource
1.opensource
2.multi-cloud
1.opensource
2.multi-cloud
3.designedtoscale
scaleidependently
canhandlefailures
automaticscaling
scaleidependently✅
canhandlefailures
automaticscaling
scaleidependently✅
canhandlefailures✅
automaticscaling
scaleidependently✅
canhandlefailures✅
automaticscaling✅
soundslikeaplan
demo
theapp
containers,containers,containers
JAR
XML
+
JAR
XML
JCE+ +
JAR
XML
JCE+ +
CONTAINER
deployingappsin
kubernetes
FRONTEND FRONTEND BACKEND
Incoming
traffic
FRONTEND FRONTEND BACKEND
Incoming
traffic
FRONTEND FRONTEND BACKEND ACTIVEMQ
Incoming
traffic
FRONTEND FRONTEND BACKEND ACTIVEMQ
Incoming
traffic
Autoscaling Group
FRONTEND FRONTEND
Front-end service
BACKEND
Backend service Queue service
ACTIVEMQ
Incoming
traffic
Autoscaling Group
FRONTEND
Pod 1
FRONTEND
Pod 2
Front-end service
BACKEND
Pod 3
Backend service
ACTIVEMQ
Pod 4
Incoming
traffic
Queue service
Autoscaling Group
FRONTEND
Pod 1
FRONTEND
Pod 2
Front-end service
Horizontal Pod Autoscaling
BACKEND
Pod 3
Backend service
ACTIVEMQ
Pod 4
Incoming
traffic
Queue service
lessonslearned
1.scalingink8s
2.besttetrisplayerever
3.kubernetes==restapi
thanks
waitthere'smore?
https://learnk8s.io/blog/scaling-spring-boot-microservices
https://github.com/learnk8s/spring-boot-k8s-hpa
https://learnk8s.io/training
Node 2
APP
Pod 1
APP
Pod 2
APP
Pod 3
APP
Pod 4
Node 1 Node 3
Node 2
APP
Pod 1
APP
Pod 2
APP
Pod 3
APP
Pod 4
Node 1 Node 3
questions?

More Related Content

Similar to Scaling Microservices with Message Queues, Spring Boot and Kubernetes

インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
Akihiro Kuwano
 
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
Yuuki Namikawa
 
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
Yuuki Namikawa
 
PaaSの作り方 Sqaleの場合
PaaSの作り方 Sqaleの場合PaaSの作り方 Sqaleの場合
PaaSの作り方 Sqaleの場合
hiboma
 
カンタン画像サムネイル作成「Smalllight」
カンタン画像サムネイル作成「Smalllight」カンタン画像サムネイル作成「Smalllight」
カンタン画像サムネイル作成「Smalllight」
livedoor
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
Masahiro Nagano
 

Similar to Scaling Microservices with Message Queues, Spring Boot and Kubernetes (20)

Kubernetes on Alibaba Cloud
Kubernetes on Alibaba CloudKubernetes on Alibaba Cloud
Kubernetes on Alibaba Cloud
 
Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月Project calico introduction - OpenStack最新情報セミナー 2017年7月
Project calico introduction - OpenStack最新情報セミナー 2017年7月
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
 
CloudFront構築事例 ハートビーツ 20121025
CloudFront構築事例 ハートビーツ 20121025CloudFront構築事例 ハートビーツ 20121025
CloudFront構築事例 ハートビーツ 20121025
 
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
 
Using Chef for Infrastructure Automation of Ameba Pigg
Using Chef for Infrastructure Automation of Ameba PiggUsing Chef for Infrastructure Automation of Ameba Pigg
Using Chef for Infrastructure Automation of Ameba Pigg
 
We Should Know About in this SocialNetwork Era 2011_1112
We Should Know About in this SocialNetwork Era 2011_1112We Should Know About in this SocialNetwork Era 2011_1112
We Should Know About in this SocialNetwork Era 2011_1112
 
PaaSの作り方 Sqaleの場合
PaaSの作り方 Sqaleの場合PaaSの作り方 Sqaleの場合
PaaSの作り方 Sqaleの場合
 
RoRとAWSで100,000Req/Minを処理する
RoRとAWSで100,000Req/Minを処理するRoRとAWSで100,000Req/Minを処理する
RoRとAWSで100,000Req/Minを処理する
 
Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議Devops @ Gengo -- AWS日本語初会議
Devops @ Gengo -- AWS日本語初会議
 
Info talk #36
Info talk #36Info talk #36
Info talk #36
 
カンタン画像サムネイル作成「Smalllight」
カンタン画像サムネイル作成「Smalllight」カンタン画像サムネイル作成「Smalllight」
カンタン画像サムネイル作成「Smalllight」
 
20150803 baas meetup
20150803 baas meetup20150803 baas meetup
20150803 baas meetup
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
Riakはなぜ良いのか
Riakはなぜ良いのかRiakはなぜ良いのか
Riakはなぜ良いのか
 
SSDとTokyoTyrantやMySQLの性能検証
SSDとTokyoTyrantやMySQLの性能検証SSDとTokyoTyrantやMySQLの性能検証
SSDとTokyoTyrantやMySQLの性能検証
 
2015-01-27 Introduction to Docker
2015-01-27 Introduction to Docker2015-01-27 Introduction to Docker
2015-01-27 Introduction to Docker
 
2014_0206 aws startup_tech
2014_0206 aws startup_tech2014_0206 aws startup_tech
2014_0206 aws startup_tech
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューション
 

Scaling Microservices with Message Queues, Spring Boot and Kubernetes