Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf ·...
Transcript of Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf ·...
![Page 1: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/1.jpg)
Microservices. Worauf es wirklich ankommt.
Leon Rosenberg @dvayanu
Bed Con 2015
![Page 2: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/2.jpg)
![Page 3: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/3.jpg)
Who am I
• Leon Rosenberg, Java Developer, Architect, OpenSource and DevOps Evangelist.
• 1997 Started programming with Java
• 2000 Started building portals
• 2007 Started MoSKito
![Page 4: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/4.jpg)
![Page 5: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/5.jpg)
Was sind die typischen Probleme und wie löst man sie? Wie baut man elastische und robuste Microservices-Anwendungen, wie monitored man sie, und was passiert wenn
es kracht.
![Page 6: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/6.jpg)
So what are we talking about?
![Page 7: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/7.jpg)
In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight
mechanisms, often an HTTP resource API
http://martinfowler.com/articles/microservices.html
![Page 8: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/8.jpg)
A service-oriented architecture (SOA) is an architectural pattern in computer software design in which
application components provide services to other components via a communications protocol, typically over a network. The principles of service-orientation are
independent of any vendor, product or technology.
https://en.wikipedia.org/wiki/Service-oriented_architecture
![Page 9: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/9.jpg)
Microservices = SOA - ESB
![Page 10: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/10.jpg)
Architecture
• Paradigms
• Communication
• Conventions
![Page 11: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/11.jpg)
Paradigms
• Design by … (responsibility)
• Dumb vs. Smart Data
• Communication
• Trades
![Page 12: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/12.jpg)
![Page 13: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/13.jpg)
Communication
• Synchronous vs Asynchronous
• 1:1, 1:n, n:m
• Direction
• Cycles
![Page 14: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/14.jpg)
Problems
• Distributed transactions
• Too many calls (performance)
• Repetitions
• Communication overhead
![Page 15: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/15.jpg)
Distributed transactions
• Manual rollback.
• Special services (OTS).
• Allow it (order of modification).
• Consistency checks.
• Handle it when you need to.
![Page 16: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/16.jpg)
Too many calls
• Combine calls.
• Execute calls in parallel.
![Page 17: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/17.jpg)
Repetition
• Frontend User != Service User.
• Same steps are repeated over and over again.
• Separate business and presentation logic.
• Provide a service like client-side API for frontend, Presentation API.
![Page 18: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/18.jpg)
Storage / DB tier
Presentation tier
Application tier
Architecture
Delivery Layer
Rendering and UI
Presentation Logic
Business Logic
Persistence
Resources
Remoting
3rd party (NTFS, CIFS, EXT3, TCP/IP)
loadbalancer, apache, squid
spring-mvc/struts/…
api
services, processes
DAOs, Exporter, Importer, FS-Writer
Postgresql, Mongo, FS
![Page 19: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/19.jpg)
Caches
• Object cache.
• Expiry/Proxy/Client-side cache.
• Query cache.
• Negative cache.
• Partial cache.
• Index.
![Page 20: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/20.jpg)
Just one service?
• Single point of failure
• Bottleneck
• Generally considered extremely uncool
![Page 21: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/21.jpg)
Multiple Instances
• Failing strategy
• Routing
![Page 22: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/22.jpg)
Failing
• Fail fast.
• Retry once/twice/…
• Failover to next node (and return or stay).
• Failover for xxx seconds.
![Page 23: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/23.jpg)
Routing / Balancing
• Round-Robin
• Sharding
• Sticky
![Page 24: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/24.jpg)
Combinations
• Round-Robin / Repeat once
• Failover for 60 seconds and return
• Mod 3 - Sharded with Repeat twice and failover to next node
![Page 25: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/25.jpg)
Non-Mod-able
• Problem: Who creates new data?
• Do-what-I-did.
• Separate data segments.
• Proxy - Service.
![Page 26: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/26.jpg)
Example
• Assume we have a User Object we need upon each request at least once, but up to several hundreds (mailbox, favorite lists etc), with assumed mid value of 20.
• Assume we have an incoming traffic of 1000 requests per second.
![Page 27: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/27.jpg)
userIduserNameregDatelastLogin
UsergetUsergetUserByUserNameupdateUsercreateUser
UserService
<<use>>
UserServiceImpl
UserServiceDAO
<<create>>
1
1dao
Naive approach
![Page 28: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/28.jpg)
client:Class LookupUtility1.1 getService
service:UserService
facade:UserService
1.1.1 createFacade1.2 getUser
dao:UserServiceDAO1.2.1 getUser
Database
1.2.1.1 getUser
network
![Page 29: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/29.jpg)
Naive approach
• The DB will have to handle 20.000 requests per second.
• Average response time must be 0,05 milliseconds.
• … Tricky …
![Page 30: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/30.jpg)
client:Class LookupUtility1.1 getService
service:UserService
facade:UserService
1.1.1 createFacade1.2 getUser
dao:UserServiceDAO1.2.1 getUser
Database
1.2.1.1 getUser
network
1000*20=20.000
20.00020.000
![Page 31: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/31.jpg)
usernameCache
nullCache
cache
userIduserNameregDatelastLogin
UsergetUsergetUserByUserNameupdateUsercreateUser
UserService
LocalUserServiceProxy RemoteUserServiceProxy
getFromCacheputInCache
CachegetIdCacheable
expiryDurationExpiryCache
PermanentCache
<<use>>
1
1
proxied
proxied
SoftReferenceCache
<<use>>
1
1
1
1
UserServiceImpl
2
1
1
1
cachecache
UserServiceDAO
<<create>>
1
1dao
Some optimization
![Page 32: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/32.jpg)
client:Class LookupUtility1.1 getService
service:UserService
facade:UserService
1.1.1 createFacade1.2 getUser
dao:UserServiceDAO
1.2.2.2.1 getFromCache
Database
1.2.2.2.3.1 getUser
network
service:LocalUserServiceProxy
proxied:UserService cache:Cache
1.2.1 getFromCache
1.2.2 getUser
service:RemoteUserServiceProxy
network
cache:Cache
1.2.2.1 getFromCache
proxied:UserService
1.2.2.2 getUser
cache:Cache
negative:Cache1.2.2.2.2 getFromCache
1.2.2.2.3 getUser
1.2.2.2.4 putInCache
1.2.2.3 putInCache
1.2.3 putInCache
![Page 33: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/33.jpg)
Optimized approach• LocalServiceProxy can handle approx.
20% of the requests.
• With Mod 5, 5 Instances of RemoteServiceProxy will handle 16000/s requests or 3200/s each. They will cache away 90% of the requests.
• 1600 remaining requests per second will arrive at the UserService.
![Page 34: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/34.jpg)
Optimized approach (II)
• Permanent cache of the user service will be able to cache away 98% of the requests.
• NullUser Cache will cache away 1% of the original requests.
• Max 16 Requests per second will reach to the DB, demanding a response time of 62,5ms --> Piece of cake. And no changes in client code at all!
![Page 35: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/35.jpg)
client:Class LookupUtility1.1 getService
service:UserService
facade:UserService
1.1.1 createFacade1.2 getUser
dao:UserServiceDAO
1.2.2.2.1 getFromCache
Database
1.2.2.2.3.1 getUser
network
service:LocalUserServiceProxy
proxied:UserService cache:Cache
1.2.1 getFromCache
1.2.2 getUser
service:RemoteUserServiceProxy
network
cache:Cache
1.2.2.1 getFromCache
proxied:UserService
1.2.2.2 getUser
cache:Cache
negative:Cache1.2.2.2.2 getFromCache
1.2.2.2.3 getUser
1.2.2.2.4 putInCache
1.2.2.3 putInCache
1.2.3 putInCache
1000*20=20.000
4000 stop here
14400 stop herein different instances
1568 stop here
16 stop here
16 make it to DB
Partytime !
![Page 36: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/36.jpg)
Monitoring (APM)
• Who needs it anyway?
![Page 37: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/37.jpg)
Production
Loadbalancer (pair)
Static poolguest pool member pool
business logic servers pool
Database (pair) FileSystem Storage
Exporter
web01webgb01 webgb02 web02 web03 web12
biz01 biz02 biz03 biz04 biz09biz00
hotstandby
data01 data02
registry
console
neofonie
omniture
Pix pool
incoming request
Connector heidelpay
clickandbuy
ExtAPI pool
Admin pool...
...
parship
attivio
profile data
user data
user data
usage dataprofiles
profiles
payment
payment
neofonie searchattivioprofile data
![Page 38: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/38.jpg)
![Page 39: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/39.jpg)
39
![Page 40: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/40.jpg)
![Page 41: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/41.jpg)
Top 5 things people are doing wrong with Application Performance Management
![Page 42: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/42.jpg)
5
You don’t have any Application Performance Management.
At all.
![Page 43: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/43.jpg)
4
You measure room temperature to find out if the patient has fever.
![Page 44: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/44.jpg)
3
You have APM, but you only look at it, when the system crashes, and switch it off when its alive.
![Page 45: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/45.jpg)
2
You don’t care about business key figures and don’t have any in your
APM.
![Page 46: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/46.jpg)
1
Everyone has it’s own Application Performance Management.
And no-one speaks to each other.
![Page 47: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/47.jpg)
und wenn es kracht?
und wenn es kracht?
![Page 48: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/48.jpg)
Oliver’s First Rule of Concurrency
With enough concurrent requests any condition in code marked with „Can’t happen“ -
will happen.
![Page 49: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/49.jpg)
Oliver’s Second Rule of Concurrency
After you fixed the „can’t happen“ part, and you are sure, that it „REALLY can’t happen now“ -
It will happen again.
![Page 50: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/50.jpg)
a user will always
• Outsmart you.
• Find THE input data that crashes you.
• Hit F5.
![Page 51: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/51.jpg)
So, what do I do?
• Accept possibility of failure.
• Handle failures fast.
• Minimize the effect.
• Build a chaos monkey!
![Page 52: Microservices. - bedconbed-con.org/2015/files/slides/Microservices_Leon_Rosenberg.pdf · Microservices. Worauf es wirklich ankommt. Leon Rosenberg @dvayanu Bed Con 2015. Who am I](https://reader033.fdocuments.net/reader033/viewer/2022052611/5f05c0bb7e708231d41487fe/html5/thumbnails/52.jpg)
Thank youTech Stack
http://www.moskito.org
http://www.distributeme.org
http://blog.anotheria.net/msk/the-complete-moskito-integration-guide-step-1/
https://github.com/anotheria/moskito
https://github.com/anotheria/distributeme
Human Stack
http://leon-rosenberg.net http://www.speakerdeck.com/dvayanu@dvayanu