Building Microservices: Designing Fine-Grained System by Sam Newman

25

Transcript of Building Microservices: Designing Fine-Grained System by Sam Newman

Page 1: Building Microservices: Designing Fine-Grained System by Sam Newman
Page 2: Building Microservices: Designing Fine-Grained System by Sam Newman

services?What is Microservices?

Page 3: Building Microservices: Designing Fine-Grained System by Sam Newman

Microservices are small, autonomous services that work

together

Page 4: Building Microservices: Designing Fine-Grained System by Sam Newman
Page 5: Building Microservices: Designing Fine-Grained System by Sam Newman

ModelliModelling Microservices

Page 6: Building Microservices: Designing Fine-Grained System by Sam Newman

What makes a good service? Loose Coupling + High Cohesion

Page 7: Building Microservices: Designing Fine-Grained System by Sam Newman

The Bounded ContextSpecific responsibility enforced by explicit boundaries

Page 8: Building Microservices: Designing Fine-Grained System by Sam Newman
Page 9: Building Microservices: Designing Fine-Grained System by Sam Newman

grationIntegration

Page 10: Building Microservices: Designing Fine-Grained System by Sam Newman

Avoid breaking changes

Technology Agnostics

Simple for Consumers

Hide internal implementation detail

Integration Technology - what are we looking for?

Page 11: Building Microservices: Designing Fine-Grained System by Sam Newman

Avoid at all cost:The Shared Database

Page 12: Building Microservices: Designing Fine-Grained System by Sam Newman

Decide between:

Synchronous vs AsynchronousOrchestration vs Choreography

Page 13: Building Microservices: Designing Fine-Grained System by Sam Newman

RecommendationsAvoid database integration at all cost

Strongly consider REST for request/response integration

Prefer choreography over orchestration

Avoid breaking changes and the need to version

Page 14: Building Microservices: Designing Fine-Grained System by Sam Newman

User IntUser Interface

Page 15: Building Microservices: Designing Fine-Grained System by Sam Newman

API Composition

Page 16: Building Microservices: Designing Fine-Grained System by Sam Newman

UI Fragment Composition

Page 17: Building Microservices: Designing Fine-Grained System by Sam Newman

API Gateway - not like this

Page 18: Building Microservices: Designing Fine-Grained System by Sam Newman

Backends for Frontends done properly

Page 19: Building Microservices: Designing Fine-Grained System by Sam Newman

estingTesting

Page 20: Building Microservices: Designing Fine-Grained System by Sam Newman

Mike Cohn’s Test Pyramid

Page 21: Building Microservices: Designing Fine-Grained System by Sam Newman

End-to-end tests are...Flaky, brittle, and slow

Page 22: Building Microservices: Designing Fine-Grained System by Sam Newman

Consumer-Driven tests to the rescueNo real tests against the real consumers, use consumer-driven contract (CDC)

Page 23: Building Microservices: Designing Fine-Grained System by Sam Newman

Recommendations

Optimize for fast feedback

Avoid end-to-end tests when possible (use consumer-driven contracts)

Use consumer-driven contracts to provide conversation between teams

Understand the trade-off between putting more efforts into testing and detecting

issues faster in production

Page 24: Building Microservices: Designing Fine-Grained System by Sam Newman

Topics not coveredSplitting the Monolith

Deployment

Monitoring

Security

...and many more

Page 25: Building Microservices: Designing Fine-Grained System by Sam Newman

Any organization that designs a system will inevitably produce a design whose structure is a copy of the

organization’s communication structure