This website collects cookies to deliver better user experience
[1] Notes on "Building Microservices"
[1] Notes on "Building Microservices"
Currently reading Building Microservices: Designing Fine-Grained Systems and trying to curate notes for myself and some greater good 😉. I'm trying to approach this in a minimalistic way keeping the essence of chapters intact.
Introduction
Small, and Focused on Doing One Thing Well
Cohesion - To have related code grouped together.
Enforcing SRP by Uncle BOB
Gather together those things that change for the same reason, and separate those things that change for different reasons.
Key rules
Small enough and no smaller.
Is it codebase too big to be managed by a small team?
Autonomous : Freedom to govern itself
Golden rule: Can you make a change to a service and deploy it by itself without changing anything else?
Decoupling is an important aspect
Modelling the service right
Choosing right good, decoupled APIs
Key benefits
Tech Heterogenity
Performance improvement can be done easily by consuming a new stack
Adopting new tech is easy - Start with a service with limited potential impact.
Resilience : Capacity to recover quickly
Key : Bulkheads (Barriers between services)
Service boundaries are obvious bulkheads
In monolithic, everthing stops at once. We run it on multiple machines to handle this scenario.
In microservices, building a system that handles total of failure of one service( and degrade functionality accordingly).
Scalability
Scaling is easier for micro than monolithic service. One aspect of complete service can be scaled individually.
On-demand provisioning (like by AWS) on pieces that need it.
Easy of deployment
Key factors
Delta in subsequent releases
Avoiding High Risk, Large Impact deployments
Microservices mitigates above factors' bad consequences
Organizational Alignment
Working on any one codebase to hit the sweet spot of team size and productivity.
Composability
Reuse of existing functionality
Web, native application, mobile web, tablet app, or wearable device