3. Microservice architectural style is an approach to developing a single application as
a suite of small services, each running in its own process and communicating with
lightweight mechanisms, often an HTTP resource API. These services are built
around business capabilities and independently deployable by fully automated
deployment machinery. There is a bare minimum of centralized management of
these services, which may be written in different programming languages and use
different data storage technologies.
-- James Lewis & Martin Fowler
Microservice oriented architecture
10. What to extract first?
Simple fairly decoupled capability
Edge services
Practice the operational prerequisites
Decoupling capabilities deeply embedded as next step
11. Avoid dependencies to the monolith
Couples the service to the monolith's release cycle
Reverse dependency direction
Minimize dependency to the Monolith
12. Leaky, not well defined domain concept
Identify leaky capabilities
Deconstruct into a well defined domain concept
Split sticky capabilities
Refactor and extract into new services
13. Decouple the data along with service
Data migration strategy
Anti-pattern: decoupling façades
Decouple vertically
14. Extract code or rewrite
Reuse and Extract high value code with low toxicity
Rewrite and Retire low value code with high toxicity
Decouple capability and not code
15. Start with larger services around a rich domain concept
Breakdown services to smaller domain concepts
DDD Bounded Contexts
Go macro first
Anti-pattern: Anemic Services
16. Decouple the new service
Redirect all consumers to new service
Retire the old code path in the monolith
Do it in atomic steps
Anti-pattern: Split new and old consumers