surviving in a microservices environment
TRANSCRIPT
![Page 1: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/1.jpg)
Surviving In A Microservices Environment
Steve Pember CTO, ThirdChannel
Gr8Conf US, 2017
@svpember
![Page 2: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/2.jpg)
@svpember
Microservice Blog Posts & Presentations• Microservices: Yay!
• Microservices: Boo!
• Smashing The Monolith (and here’s how we did it)
• Microservices + Technology X
• Microservices + Methodology Y
![Page 3: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/3.jpg)
Microservices have many lessons to offer
![Page 4: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/4.jpg)
What even are Microservices?
![Page 5: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/5.jpg)
![Page 6: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/6.jpg)
@svpember
Why Choose Microservices?• Reduce Coupling!
• Right Tool for the Job
• Continuous Delivery
• Smaller codebases are easier to reason about
• Easy to replace old services
• Efficient Scaling
• Can move quickly (once you’re up and running)
![Page 7: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/7.jpg)
![Page 8: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/8.jpg)
![Page 9: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/9.jpg)
Help?
![Page 10: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/10.jpg)
@svpember
Microservice Topics• Infrastructure
• Architecture
• Team Communication
• Miscellaneous Advice
![Page 11: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/11.jpg)
@svpember
Microservice Topics• Infrastructure
![Page 12: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/12.jpg)
@svpember
Infrastructure• How do we manage the logs?
![Page 13: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/13.jpg)
Centralized Logs are your #1 Priority
![Page 14: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/14.jpg)
@svpember
![Page 15: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/15.jpg)
@svpember
![Page 16: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/16.jpg)
@svpember
![Page 17: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/17.jpg)
@svpember
![Page 18: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/18.jpg)
@svpember
![Page 19: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/19.jpg)
@svpember
Infrastructure• How do we manage the logs?
• How about metrics / telemetry?
![Page 20: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/20.jpg)
You’d best be monitoring your platform.
![Page 21: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/21.jpg)
![Page 22: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/22.jpg)
–Johnny Appleseed
“Type a quote here.”
![Page 23: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/23.jpg)
![Page 24: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/24.jpg)
@svpember
Infrastructure• How do we manage the logs?
• How about metrics / telemetry?
• How do we deploy our code?
![Page 25: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/25.jpg)
![Page 26: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/26.jpg)
@svpember
![Page 27: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/27.jpg)
@svpember
Infrastructure• How do we manage the logs?
• How about metrics / telemetry?
• How do we deploy our code?
• How/where are our builds done?
![Page 28: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/28.jpg)
@svpember
![Page 29: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/29.jpg)
@svpember
![Page 30: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/30.jpg)
@svpember
![Page 31: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/31.jpg)
@svpember
Infrastructure• How do we manage the logs?
• How about metrics / telemetry?
• How do we deploy our code?
• How/where are our builds done?
• Do we have any coding conventions?
![Page 32: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/32.jpg)
Check Style? Coverage?
![Page 33: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/33.jpg)
@svpember
![Page 34: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/34.jpg)
@svpember
![Page 35: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/35.jpg)
@svpember
![Page 36: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/36.jpg)
@svpember
![Page 37: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/37.jpg)
@svpember
Infrastructure• How do we manage the logs?
• How about metrics / telemetry?
• How do we deploy our code?
• How/where are our builds done?
• Do we have any coding conventions?
• Can I generate a Service template?
![Page 38: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/38.jpg)
wget https://github.com/thirdchannel/base-template/archive/release.zip
(This is not a real url, but you get the idea)
![Page 39: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/39.jpg)
@svpember
Infrastructure• How do we manage the logs?
• How about metrics / telemetry?
• How do we deploy our code?
• How/where are our builds done?
• Do we have any coding conventions?
• Can I generate a Service template?
• How do we share code?
![Page 40: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/40.jpg)
Whoops! Gotcha!
![Page 41: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/41.jpg)
![Page 42: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/42.jpg)
@svpember
Sharing Code• It’s OK to reimplement functionality within each service
• Setup your own internal Artifactory!
• DO share infrastructure libraries (e.g. communications)
• NEVER share Domain or business logic libraries
![Page 43: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/43.jpg)
@svpember
Infrastructure• How do we manage the logs?
• How about metrics / telemetry?
• How do we deploy our code?
• How/where are our builds done?
• Do we have any coding conventions?
• Can I generate a Service template?
• How do we share code?
• How do we manage our (multiple) environments?
![Page 44: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/44.jpg)
@svpember
![Page 45: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/45.jpg)
Test & Develop in Isolation
![Page 46: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/46.jpg)
@svpember
Infrastructure• How do we manage the logs?
• How about metrics / telemetry?
• How do we deploy our code?
• How/where are our builds done?
• Do we have any coding conventions?
• Can I generate a Service template?
• How do we share code?
• How do we manage our (multiple) environments?
• Do our Devs get time to work on Infrastructure?
![Page 47: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/47.jpg)
@svpember
Microservice Topics• Infrastructure
• Architecture
![Page 48: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/48.jpg)
@svpember
Architecture• Do we have an overall design vision?
![Page 49: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/49.jpg)
Does Anyone Know What We’re Doing?!
![Page 50: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/50.jpg)
![Page 51: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/51.jpg)
![Page 52: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/52.jpg)
@svpember
Architecture• Do we have an overall design vision?
• What technologies do we use?
• How much freedom do we have in choosing new technologies?
![Page 53: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/53.jpg)
@svpember
![Page 54: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/54.jpg)
@svpember
![Page 55: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/55.jpg)
Be Careful When Choosing New Tech
![Page 56: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/56.jpg)
@svpember
Architecture• Do we have an overall design vision?
• What technologies do we use?
• How much freedom do we have in choosing new technologies?
• How do we test an individual service?
![Page 57: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/57.jpg)
Integration Tests are the Best Tests
![Page 58: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/58.jpg)
@svpember
Architecture• Do we have an overall design vision?
• What technologies do we use?
• How much freedom do we have in choosing new technologies?
• How do we test an individual service?
• How do we test the platform as a whole?
![Page 59: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/59.jpg)
@svpember
Test Environment• Run periodically (e.g. nightly)
• Each service generates fixture data
• Service data reset after EACH test
![Page 60: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/60.jpg)
@svpember
Architecture• Do we have an overall design vision?
• What technologies do we use?
• How much freedom do we have in choosing new technologies?
• How do we test an individual service?
• How do we test the platform as a whole?
• How do our services communicate?
![Page 61: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/61.jpg)
HTTP vs Async Events
![Page 62: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/62.jpg)
@svpember
HTTP• Well Established
• Built In libraries
• Existing structure for response codes (2**, 4**, 5**, etc)
• Synchronous
• Increases coupling
• Requires services to know which others require their data
• Has dependency on Service Discovery mechanism
• Susceptible to Data Loss
![Page 63: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/63.jpg)
@svpember
Events• Asynchronous
• Pub-sub / Fire and forget
• Loose Coupling
• Prevents Data Loss
• Allows for Reactive systems
• No existing structure for response error handling
• Dependency on Message Broker technology
• Can be difficult for Junior folks to understand
![Page 64: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/64.jpg)
Ensure you have Circuit Breaker or a Dead Letter Mechanism
![Page 65: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/65.jpg)
@svpember
![Page 66: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/66.jpg)
@svpember
<3 RabbitMq• Intelligent broker; dumb consumers
• Highly nuanced & robust routing
• Backpressure
• Dead letters /retries
• Message Ordering
• Multiple deliveries
• Ack / Nack/ Reject … re-enqueue
![Page 67: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/67.jpg)
@svpember
Architecture• Do we have an overall design vision?
• What technologies do we use?
• How much freedom do we have in choosing new technologies?
• How do we test an individual service?
• How do we test the platform as a whole?
• How do our services communicate?
• How/where is our data persisted?
![Page 68: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/68.jpg)
@svpember
Locality of Reference• Spatial: “How close together is our data?”
![Page 69: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/69.jpg)
@svpember
Locality of Reference• Spatial: “How close together is our data?”
• Temporal: “How often is our data accessed?”
![Page 70: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/70.jpg)
@svpember
![Page 71: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/71.jpg)
@svpember
![Page 72: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/72.jpg)
Beware the ‘Mini-Monolith’
![Page 73: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/73.jpg)
@svpember
Architecture• Do we have an overall design vision?
• What technologies do we use?
• How much freedom do we have in choosing new technologies?
• How do we test an individual service?
• How do we test the platform as a whole?
• How do our services communicate?
• How/where is our data persisted?
• Do we follow an overall architectural style?
![Page 74: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/74.jpg)
Make Sure Everyone Is Aware
![Page 75: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/75.jpg)
Applies to Both Intra- and Inter-Service
![Page 76: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/76.jpg)
It all Started With =>
![Page 77: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/77.jpg)
@svpember
Domain Driven Design• Ubiquitous Language
• Entities
• Aggregates
• Bounded Contexts
• No Direct communications across Boundaries
![Page 78: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/78.jpg)
@svpember
![Page 79: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/79.jpg)
@svpember
![Page 80: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/80.jpg)
… And CQRS
![Page 81: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/81.jpg)
@svpember
![Page 82: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/82.jpg)
@svpember
![Page 83: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/83.jpg)
Allows for interesting Architectures
![Page 84: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/84.jpg)
![Page 85: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/85.jpg)
While we’re at it, go Reactive
![Page 86: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/86.jpg)
@svpember
Architecture• Do we have an overall design vision?
• What technologies do we use?
• How much freedom do we have in choosing new technologies?
• How do we test an individual service?
• How do we test the platform as a whole?
• How do our services communicate?
• How/where is our data persisted?
• Do we follow an overall architectural style?
• When do we create new services?
![Page 87: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/87.jpg)
DDD to the rescue
![Page 88: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/88.jpg)
![Page 89: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/89.jpg)
@svpember
New Service?• Initially: design platform around Bounded Contexts, create services from
inner Contexts
• Don’t create services ‘just because’
• Do make an effort to identify boundaries
• Ensure a service has/will have proper context boundaries before creating
• If two services need to communicate synchronously or frequently, good candidates for MERGING
![Page 90: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/90.jpg)
# of services < # of developers
![Page 91: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/91.jpg)
@svpember
Microservice Topics• Infrastructure
• Architecture
• Team Communication
![Page 92: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/92.jpg)
@svpember
Team Communication• How are our teams structured?
![Page 93: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/93.jpg)
Conway’s Law is REAL
![Page 94: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/94.jpg)
–Johnny Appleseed
“Type a quote here.”
DBA
Engineers
QA
UX
![Page 95: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/95.jpg)
@svpember
![Page 96: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/96.jpg)
@svpember
Team Communication• How are our teams structured?
• Who owns which Service?
![Page 97: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/97.jpg)
Teams should be Owners
![Page 98: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/98.jpg)
@svpember
Team Communication• How are our teams structured?
• Who owns which Service?
• What’s our process for merging code?
![Page 99: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/99.jpg)
![Page 100: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/100.jpg)
@svpember
Team Communication• How are our teams structured?
• Who owns which Service?
• What’s our process for merging code?
• What’s our process for releasing code?
![Page 101: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/101.jpg)
@svpember
![Page 102: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/102.jpg)
@svpember
Team Communication• How are our teams structured?
• Who owns which Service?
• What’s our process for merging code?
• What’s our process for releasing code?
• What’s our process for monitoring code in production? Dealing with bugs?
![Page 103: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/103.jpg)
@svpember
![Page 104: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/104.jpg)
–Johnny Appleseed
“Type a quote here.”
![Page 105: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/105.jpg)
@svpember
Team Communication• How are our teams structured?
• Who owns which Service?
• What’s our process for merging code?
• What’s our process for releasing code?
• What’s our process for monitoring code in production? Dealing with bugs?
• Do we add more process if something goes wrong?
![Page 106: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/106.jpg)
Be Reluctant to Add New Process
![Page 107: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/107.jpg)
High Freedom / High Responsibility
![Page 108: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/108.jpg)
@svpember
Microservice Topics• Infrastructure
• Architecture
• Team Communication
• Miscellaneous Advice
![Page 109: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/109.jpg)
@svpember
Miscellaneous Advice• Don’t get cute with the naming of services
![Page 110: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/110.jpg)
Any idea what these
do?
![Page 111: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/111.jpg)
@svpember
Miscellaneous Advice• Don’t get cute with the naming of services
• New Feature -> walk backwards from what the user will see
![Page 112: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/112.jpg)
@svpember
Miscellaneous Advice• Don’t get cute with the naming of services
• New Feature -> walk backwards from what the user will see
• Release when a feature is ready
![Page 113: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/113.jpg)
@svpember
Miscellaneous Advice• Don’t get cute with the naming of services
• New Feature -> walk backwards from what the user will see
• Release when a feature is ready
• If a service A has another service B as a dependency => release B first
![Page 114: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/114.jpg)
@svpember
Miscellaneous Advice• Don’t get cute with the naming of services
• New Feature -> walk backwards from what the user will see
• Release when a feature is ready
• If a service A has another service B as a dependency => release B first
• How to bootstrap a new service?
![Page 115: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/115.jpg)
@svpember
Miscellaneous Advice• Don’t get cute with the naming of services
• New Feature -> walk backwards from what the user will see
• Release when a feature is ready
• If a service A has another service B as a dependency => release B first
• How to bootstrap a new service?
• Don’t release Friday afternoons
![Page 116: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/116.jpg)
In Summary
![Page 117: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/117.jpg)
Most of the Challenge is In infrastructure
![Page 118: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/118.jpg)
<3 Microservices
![Page 119: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/119.jpg)
Please share your survival tips!
![Page 120: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/120.jpg)
Any Questions? Anything I missed?
![Page 121: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/121.jpg)
Thank you!
@svpember
![Page 122: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/122.jpg)
@svpember
Images• Bad Odds (Jon Snow): https://www.reddit.com/r/gameofthrones/comments/4owm95/s6e9_megathread_gifwallpaperscreenshot_requests/
• Say Anything / John Cusak: http://www.glamour.com/story/happy-birthday-john-cusack-and
• Wilderness Survival Guide: https://www.kobo.com/us/en/ebook/the-wilderness-survival-guide-1
• XKCD: Code Review: https://xkcd.com/1513/
• Monolithic vs Microservices: @alvaro_sanchez
• Picard FacePalm: https://www.flickr.com/photos/30418788@N03/8381426895
• Council of Ricks: https://www.reddit.com/r/rickandmorty/comments/3exy00/it_looks_like_there_might_some_sort_of_council_of/
• Drago (break you): https://giphy.com/gifs/GWD5nSpiHxs3K
• Wrecking Ball: https://www.flickr.com/photos/rhysasplundh/5202454842/in/photostream/
• Rocky Stairs: http://pixgood.com/rocky-stairs.html
• Technical Difficulties: https://www.youtube.com/watch?v=EC15BmzsdhM
• Grafana example: https://i.imgur.com/KOqcD6L.png
• Zipkin example: https://blog.buoyant.io/2016/05/17/distributed-tracing-for-polyglot-microservices/
• Assembly Line: http://www.solidsmack.com/culture/humans-need-apply-new-short-film-explores-future-robots-manufacturing-automation/
![Page 123: Surviving in a microservices environment](https://reader031.vdocument.in/reader031/viewer/2022030318/5a6ed25c7f8b9a91058b5037/html5/thumbnails/123.jpg)
@svpember
Links• Eric Evans: DDD and Microservices: https://www.youtube.com/watch?
v=yPvef9R3k-M