📗

Building Microservices

image

What are Microservices?

independently releaseble services

Microservices avoid the use of a shared databases in most circumstance. Instead, each microservice encapsulate it's own database where required.

Microservice embrace the concept of information hiding. (expose only what is necessary)

Goal is to enable independent releasability of functionality

Key concepts

‣
Independent deployability
‣
Modeled around a business domain
‣
Owning there own state
‣
Size
‣
Flexibility
‣
Alignement of architecture and organisation

The monoliths

Microservice is the oposite of a monolith: a monolith is when all functionality in a system must be deployed together.

‣
The single process monolith
‣
The modular monolith
‣
The distributed monolith
‣
Monoliths and delivery contention
‣
Monolith advantage

Enabling technology

‣
Log aggregation and distributed tracing
‣
Container and kubernetes
‣
Streaming
‣
Public Cloud and serverless

Advantage of microservices

‣
Technology heterogenity
‣
Robustness
‣
Scaling
‣
Ease of deployment
‣
Organizational Alignement
‣
Composability

Microservices pain points

‣
Developer experience
‣
Technology overload
‣
costs
‣
Reporting
‣
Monitoring and trouble shooting
‣
Security
‣
Testing
‣
Latency
‣
Data consistency

Should I use microservice?

‣
Whom they might not work for
‣
Where they work well