This document discusses the concept of microservices, emphasizing their role as independent modules that facilitate decoupled feature development by separate teams. It outlines the importance of defining bounded contexts to achieve effective architecture and scalability, while also addressing challenges in transitioning existing architectures to microservices. Additionally, it highlights technical reasons for implementing microservices, including independent scalability and efficient handling of legacy systems.
Introduction to the topic by Eberhard Wolff. A focus on splitting systems into microservices.
Definition of microservices as independent deployment units aimed at decoupling.
Discusses why splitting services is crucial, outlining benefits and potential goals.Details various scenarios and how they influence the splitting of microservices.
Introduction to 'bounded context' as a key concept in designing microservices architecture.
Discusses challenges of creating bounded contexts based on coherence and independence.Recommends organizing microservices around use cases for better independence.
Evaluates how existing architecture impacts transitioning to microservices.
Integrating external systems into microservices to simplify data management.
Technical justifications for microservices including independent scalability.
The implications of requirements on the design and independence of microservices.
Summarizes key points about microservices, their frameworks, and integration results.
Microservices:
Definition
> No consistentdefinition
> Microservices are modules
> Independent deployment units
> E.g. Docker container
> Microservice owned by one team
Why is theSplit so
Important?
> Microservices implement a part of the logic
> Allow isolated development of features
> …and independent teams
> If split is wrong, you won’t achieve goals.
> …and there is just more complexity.
> But there are even more goals!
10.
Why Microservices?
Strong Modularization
ScalingAgile
Sustainable development
Replaceable Services
Continuous Delivery
Free choice of technology
Handle Legacy efficient
Independent Scaling
Robustness
Small teams develop and
deploy independently
Add services – not code
Small Services
Failure limited to single
Microservice
Why would youbuild
a universal data
model if that is
neither possible nor
useful??
32.
Bounded Context:
Challenge
> Nota way to design a great architecture
> …but consequence of good domain
architecture
> i.e. clearly separated domains will lead to
separated BOUNDED CONTEXTS
> …containing logic and data
> How can you find BOUNDED CONTEXTS?
Divide by UseCases
> Microservice should implement a use case
> …ideally without calling other microservices
> Divide use cases among microservices
> …then decide about the BOUNDED CONTEXT
35.
BrowsingRegistration
Creating Microservices
User RegistrationSearch Products
by Keywords
Browse Products
by Category
Checkout
Payment
Define ShipmentUpdate Profile
Basic customer
data
Preferences
Recommendations
Billing address
Payment
information
All these services have data about the customer!!
Bounded Contexts
> Browsingdistributed in many artifacts
> Change to Browsing might influence all of
them
> …or not
> BOUNDED CONTEXTS would be desirable
42.
Migrate to BoundedContext
Product Customer Warehouse
Product
Service
Customer
Service
Warehouse
Service
iOS Android PoS Web
BrowsingBrowsing
43.
Introducing
Bounded Contexts
> …wouldchange the architecture completely
> …might be very hard
> …and risky
> Is it worth it?
> Is it even doable?
> Might also change the organization
Existing Architecture
> ...hasan impact on the target architecture
> What good is an architecture you cannot
migrate into?
> Might overrule everything else
> Even BOUNDED CONTEXT
External Systems
> Limitintegration for each external system to
one Microservice
> External system might belong to a domain
> …or BOUNDED CONTEXT
> ...or not
> Simplifies integration
> Easier to achieve robustness
53.
External Systems
Scaling Agile
Sustainabledevelopment
Continuous Delivery
Free choice of technology
Handle Legacy efficient
Independent Scaling
Robustness
Organization
Deployment
Units
Technology
Technical Reasons
> Independentscalability is just one technical
reason
> There are many more
> Might be OK to share database in this
scenario
> Might even split read and write
58.
CQRS
> Command –Query Responsibility
Segregation
> Commands change data
> Query provide data
> Implement in separate microservices
EMail [email protected] toget:
Slides
+ Microservices Primer
+ Sample Microservices Book
+ Sample of Continuous Delivery Book
Powered by Amazon Lambda & Microservices