microservices - rainfocus · recipe: microservices (makes 5-10 microservices) ingredients: a...
TRANSCRIPT
![Page 1: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/1.jpg)
MicroservicesA Tutorial Session
JavaOne 2016
![Page 2: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/2.jpg)
by Jason Swartz@swartzrock
![Page 3: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/3.jpg)
MICROSERVICES
![Page 4: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/4.jpg)
WHAT
WHYa.k.a “WHEN”
HOW
![Page 5: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/5.jpg)
What’s AMicroservice?
![Page 6: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/6.jpg)
Your Application,Subdivided
![Page 7: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/7.jpg)
Recipe: Microservices(makes 5-10 microservices)
Ingredients: ● A Monolithic API, Too Big To Handle
Instructions:1. Find the seams in your application - by operation, business area, or team.2. Split your API into multiple smaller API’s, each on its own server.3. Figure out how to deploy them w/o breaking everything.4. Figure out how they’ll talk to each other w/o breaking more things. 5. Figure out how complex data operations will work across multiple data stores.
![Page 8: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/8.jpg)
![Page 9: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/9.jpg)
![Page 10: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/10.jpg)
![Page 11: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/11.jpg)
Let’s Split-UpThat Service
![Page 12: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/12.jpg)
![Page 13: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/13.jpg)
![Page 14: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/14.jpg)
![Page 15: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/15.jpg)
1. Small & Maintainable2. Private data3. Generally Isolated
Microservice Properties
![Page 16: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/16.jpg)
1. Small & Maintainable2. Private data3. Generally Isolated
Microservice Nice-To-Haves
![Page 17: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/17.jpg)
1. Findable2. Scalable3. Resilient4. Monitorable
Microservice Nice-To-Haves
![Page 18: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/18.jpg)
Microservices That Speak To Each Other Via Asynchronous Communication
Microservice Real Nice-To-Haves
![Page 19: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/19.jpg)
![Page 20: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/20.jpg)
Let’s See a Real
Transaction
![Page 21: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/21.jpg)
Web Client: PUT issues/123 Assignee=10
Issues Service: Read from issues db
Issues Service: GET users/10
Issues Service: POST users/notify/10
Issues Service: Write to issues db
Issues Service: Return response with result
Web Client: Read response & status then handle it
![Page 22: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/22.jpg)
Web Client: PUT issues/123 Assignee=10
Issues Service: Read from issues db
// block for synchronous transaction
// block for synchronous transaction
Issues Service: Write to issues db
Issues Service: Return response with result
Web Client: Read response & status then handle it
![Page 23: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/23.jpg)
Blocking Isn’t Isolated, Scalable
Or Resilient
![Page 24: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/24.jpg)
But It Is Easy!
![Page 25: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/25.jpg)
1. Easy!2. Gratifying.3. Testable.
Synchronous Messaging Pros
![Page 26: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/26.jpg)
1. Prevents microservices from being isolated, scalable, and resilient.
2. Hope you like waiting.
Synchronous Messaging Cons
![Page 27: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/27.jpg)
MicroservicesShould Talk
Asynchronously
![Page 28: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/28.jpg)
1. Non-Blocking IO (eg RxJava, Netty)2. Queues (eg SQS)3. Event Streams (eg Kafka, Kinesis)4. Actors (eg Akka)
Talking Asynchronously
![Page 29: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/29.jpg)
What About TheClients?
![Page 30: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/30.jpg)
1. Synchronous REST with Async Clients2. Http 202 3. Websockets4. Http/2
Responding Asynchronously
![Page 31: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/31.jpg)
That’s What Microservices Are All
About
![Page 32: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/32.jpg)
WHAT
WHYa.k.a “WHEN”
HOW
![Page 33: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/33.jpg)
MonolithTo
Microservices
![Page 34: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/34.jpg)
WhyMight This Be A
Good Idea?
![Page 35: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/35.jpg)
(Assuming You’re Planning to Split Up your Monolith)
![Page 36: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/36.jpg)
1. Finding code and refactoring it is pretty easy.2. No network lag3. No format conversion errors4. Deploy in one go
Monoliths - Not So Bad
![Page 37: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/37.jpg)
That’s AllThanks For Listening!
![Page 38: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/38.jpg)
1. Hard to scale up just one feature2. Hard to deploy just one change3. Not suitable for more than a small team
Monoliths - Not So Scalable Either
![Page 39: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/39.jpg)
Organizations Are Constrained To Produce
Designs That Match Their Communication Structure
![Page 40: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/40.jpg)
![Page 41: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/41.jpg)
Max Capacity:One Team
![Page 42: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/42.jpg)
![Page 43: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/43.jpg)
Max Capacity:Two Teams
![Page 44: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/44.jpg)
Don’t Split MonolithsAcross Your
Communication Structures
![Page 45: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/45.jpg)
(we kind of covered this already)
Microservices Pros
![Page 46: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/46.jpg)
1. Network Lag2. Multiple Data Formats3. Service Resolution4. Troubleshooting5. More Deployment Work6. More Monitoring
Microservices Challenges
![Page 47: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/47.jpg)
No Problem. Let’s Get Started On
HowYou’ll Build Em
![Page 48: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/48.jpg)
WHAT
WHYa.k.a “WHEN”
HOW
![Page 49: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/49.jpg)
Microservices In Java
![Page 50: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/50.jpg)
How Will You Get Your App In
Production?
![Page 51: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/51.jpg)
1. Self-Running Jar’s2. VM Images3. Docker Images
Deployment Formats
![Page 52: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/52.jpg)
1. Use A CI To Build / Test / Merge in CI2. Use A CD To Deploy (Push-Button / Auto)3. VM Deployment (eg Spinnaker)4. Docker Deployment (eg ECS, K8s, Marathon)5. Cluster Management (eg K8s, Mesos, Swarm)
Deployment Strategies
![Page 53: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/53.jpg)
Yes
Should I Deploy To The Cloud?
![Page 54: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/54.jpg)
YES OH YES
Should I Test It First?
![Page 55: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/55.jpg)
1. Service Resolution (K8s, Consul)2. Scaling3. Visibility4. Authentication5. Monitoring
Microservice Management
![Page 56: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/56.jpg)
Let’s TalkMicroservices
Development
![Page 57: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/57.jpg)
(why switch now?)
Choosing A Framework
![Page 58: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/58.jpg)
1. Spring Boot2. Lagom3. Ratpack4. Dropwizard
Choosing A Framework
![Page 59: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/59.jpg)
1. Good Ol’ SQL (eg MySQL, Postgresql)2. Document-type NoSQL3. Fast Key-Value Caches
Choosing A Data Store
![Page 60: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/60.jpg)
1. CRUD operations endpoints & tables2. CRUD endpoints and immutable tables3. Event-Sourced Data
Choosing A Data Scheme
![Page 61: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/61.jpg)
Create-Read-Update-Delete
![Page 62: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/62.jpg)
Let’s Talk AboutImmutable Tables
![Page 63: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/63.jpg)
![Page 64: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/64.jpg)
GET /issuesGET /issues/{id}POST /issuesPUT /issues/{id}
Issue Endpoints
![Page 65: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/65.jpg)
How Do These EventsAffect The Database?
![Page 66: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/66.jpg)
1. POST /issues title=’Config ELB’
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:13 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+
![Page 67: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/67.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=10
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:16 | Config ELB | 10 | false |+------+-------------+------------+----------+-------+
![Page 68: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/68.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=103. PUT /issues/1 done=true
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | NULL | true |+------+-------------+------------+----------+-------+
![Page 69: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/69.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=103. PUT /issues/1 done=true
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | NULL | true |+------+-------------+------------+----------+-------+
Not Bad.
![Page 70: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/70.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=103. PUT /issues/1 done=true
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | NULL | true |+------+-------------+------------+----------+-------+
Do You Know How We Got Here?
![Page 71: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/71.jpg)
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | NULL | true |+------+-------------+------------+----------+-------+
Do You Know How We Got Here?
![Page 72: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/72.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=103. PUT /issues/1 done=true
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | NULL | true |+------+-------------+------------+----------+-------+
Do You Know How We Got Here?
![Page 73: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/73.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=103. PUT /issues/1 done=true
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | NULL | true |+------+-------------+------------+----------+-------+
Why is ‘assignee’ NULL?
![Page 74: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/74.jpg)
Mutable Table Rows Lose History
![Page 75: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/75.jpg)
Immutable Table Rows Keep Their History
![Page 76: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/76.jpg)
Let’s Try To Lock Down
Our State
![Page 77: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/77.jpg)
1. POST /issues title=’Config ELB’
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:13 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+
![Page 78: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/78.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=10
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:13 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:16 | Config ELB | 10 | false |+------+-------------+------------+----------+-------+
![Page 79: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/79.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=103. PUT /issues/1 done=true
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:13 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:16 | Config ELB | 10 | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:19 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | NULL | true |+------+-------------+------------+----------+-------+
![Page 80: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/80.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=103. PUT /issues/1 done=true
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:13 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:16 | Config ELB | 10 | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:19 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | NULL | true |+------+-------------+------------+----------+-------+
![Page 81: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/81.jpg)
1. GET /issues/1
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:13 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:16 | Config ELB | 10 | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:19 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+
+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | NULL | true |+------+-------------+------------+----------+-------+
![Page 82: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/82.jpg)
How Do You Make An Append-Only
Table?
![Page 83: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/83.jpg)
One: Don’t Let Your DB User Make
Changes
![Page 84: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/84.jpg)
Grant select, insert on issues to my-db-user;
![Page 85: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/85.jpg)
Two: Pick The RightColumns
![Page 86: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/86.jpg)
create table issues ( id serial, created timestamp default now(), creator_id int, issue_id int default nextval(‘iseq’), title text, assignee int, done boolean default false)
![Page 87: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/87.jpg)
Do We Still Need State?
![Page 88: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/88.jpg)
Let’s Talk AboutEvent-Sourcing
![Page 89: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/89.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=103. PUT /issues/1 done=true
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:13 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:16 | Config ELB | 10 | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | 10 | true |+------+-------------+------------+----------+-------+
![Page 90: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/90.jpg)
1. POST /issues title=’Config ELB’2. PUT /issues/1 assignee=103. PUT /issues/1 done=true
+------+-------------+------------+----------+-------+| id | updated | title | assignee | done |+------+-------------+------------+----------+-------+| 1 | 09-18 18:13 | Config ELB | NULL | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:16 | Config ELB | 10 | false |+------+-------------+------------+----------+-------+| 1 | 09-18 18:24 | Config ELB | 10 | true |+------+-------------+------------+----------+-------+
Events
States
![Page 91: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/91.jpg)
![Page 92: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/92.jpg)
![Page 93: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/93.jpg)
![Page 94: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/94.jpg)
![Page 95: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/95.jpg)
Now We’re Storing Events,
Not States
![Page 96: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/96.jpg)
create table issue_events ( id serial, created timestamp default now(), issue_id int default nextval(‘iseq’), originator text, payload text)
![Page 97: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/97.jpg)
1. POST /issue/1/event ‘Originator: 4a48239-8a..’ payload=’<Update val=”done=true”>’
+----+-------------+----------+------------+---------+| id | created | issue_id | originator | payload |+----+-------------+----------+------------+---------+| 14 | 09-18 18:50 | 1 | 4a482... | <...> |+----+-------------+----------+------------+---------+
![Page 98: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/98.jpg)
Create Events AndSimulate The State
![Page 99: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/99.jpg)
1. Create-Issue
Issue(“Config ELB”, null, false);
Real Events
Virtual States
![Page 100: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/100.jpg)
1. Create-Issue2. Assign-Issue
Issue(“Config ELB”, 10, false);
Real Events
Virtual States
![Page 101: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/101.jpg)
1. Create-Issue2. Assign-Issue3. Complete-Issue
Issue(“Config ELB”, 10, true);
Real Events
Virtual States
![Page 102: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/102.jpg)
So Why UseEvent-Sourcing?
![Page 103: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/103.jpg)
1. High Write Performance2. Potential for Command/Query Separation3. Auditable4. Replayable5. Undo-able6. Monitorable
Reasons For Event-Sourcing
![Page 104: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/104.jpg)
It’s Like Having Control Over The Versions Of
Your State Changes
![Page 105: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/105.jpg)
It’s Like Having Control Over The Versions Of
Your Data
![Page 106: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/106.jpg)
It’s Like GitFor Your Data
![Page 107: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/107.jpg)
1. Frankly, It’s Weird2. Requires Events. No Events, No Event-Sourcing.3. As Of Sept 2016, It’s Still Non-Standard
Reasons Against Event-Sourcing
![Page 108: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/108.jpg)
That About Sums Up Microservice Development
![Page 109: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/109.jpg)
That About Sums Up Microservice Development
![Page 110: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/110.jpg)
Okay, Actually That’s The Entire Session
Unless There’s More Time
![Page 111: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/111.jpg)
WHAT
WHYa.k.a “WHEN”
HOW
![Page 112: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/112.jpg)
by Jason Swartz@swartzrock
![Page 113: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/113.jpg)
MicroservicesA Tutorial Session
JavaOne 2016
![Page 114: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/114.jpg)
Web Applications for the REST of Us: An Introduction to Ember.js, Akka, and Spray (Craig Tataryn & Sean Kowaski)
A Practical RxJava Example with Ratpack (Laurent Doguin)
One Microservice Is No Microservice: They Come In Systems (Markus Eisele)
Make Sure To See...
![Page 115: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/115.jpg)
Thank You For Attending
![Page 116: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/116.jpg)
Fin
![Page 117: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/117.jpg)
Just Kidding, There’s Another Section
![Page 118: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/118.jpg)
Let’s Talk Asynchronous
Architectures in AWS
![Page 119: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/119.jpg)
Do You Want To Use Caches To Prevent
Unnecessary Blocking Calls?
![Page 120: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/120.jpg)
![Page 121: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/121.jpg)
Do You Want To Insert Rows And Publish
Events In One Stroke?
![Page 122: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/122.jpg)
![Page 123: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/123.jpg)
![Page 124: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/124.jpg)
Do You Want To Mass-Publish One Event
To All Microservices?
![Page 125: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/125.jpg)
![Page 126: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/126.jpg)
![Page 127: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/127.jpg)
Note About Your Solution:I’m Not Saying It’s AWS
![Page 128: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/128.jpg)
But It’s AWS
![Page 129: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/129.jpg)
Okay, We Are Really Done This Time
![Page 130: Microservices - RainFocus · Recipe: Microservices (makes 5-10 microservices) Ingredients: A Monolithic API, Too Big To Handle Instructions: 1. Find the seams in your application](https://reader030.vdocument.in/reader030/viewer/2022040214/5ec80c1d20a4c7630261e18a/html5/thumbnails/130.jpg)
THIS SPACELEFT BLANK