SlideShare a Scribd company logo
Microservices:
Redundancy =
Maintainability!
Eberhard Wolff
@ewolff
Fellow
innoQ
http://continuous-delivery-buch.de/
http://microservices-buch.de/ http://microservices-book.com/
http://microservices-book.com/primer.html
FREE!!!!
Maintainablity
Redundant data
Redudant code
Legacy System
Microservices: Redundancy=Maintainability
Too many dependencies
Cyclic dependencies
(dotted lines)
> COBOL, Assembler
> Not maintainable
> Not replaceable
L
> We will replace it!
> We will make it maintainable!
> It will be beautiful!
We will take good care
of the code!
Clean
Like
Spring
Clean Architecture
Developer
Developer
Result?
Microservices: Redundancy=Maintainability
> Legacy System
> Java
> Not maintainable
> Not replaceable
L
> We didn’t try hard enough!
> We will replace it!
> We will make it maintainable!
> It will be beautiful!
LI need a new job.
While there are still
developers:
Replace the legacy system.
Repeat
Insanity:
Doing the same thing
over and over again
and expecting different
results.
Albert Einstein
We can achieve
maintainability with
clean architecture +
clean code.
We can achieve
maintainability with
clean architecture +
clean code.
Clean approach tried often.
Results?
Lots of Legacy Code
…and secure jobs.
We need a different
approach!
Parnas 1972
Modules
ECommerce
System
Order
Catalog
Billing
Search
Modules by Domain
> Each domain problem solved
in one module.
> New features easy to add
Modules
> Programming language feature
> Class, package, library …
> Rather weak modules
Developer
Microservices
> Modules
> Separate deployment units
> Separate VM / process
Server Server
Micro
Service
Micro
Service
ECommerce
System
Order
Catalog
Billing
Search
Module = separate
deployment units!
ECommerce
System
Order
Catalog
Billing
Search
Module = separate
deployment units!
Communication e.g. REST
REST REST
ECommerce
System
Order
Catalog
Billing
Search
Dependencies between
systems cannot sneak in
ECommerce
System
Order
Catalog
Billing
Search
Dependencies between
systems cannot sneak in
ECommerce
System
Order
Catalog
Billing
Search
Dependencies between
systems cannot sneak in
“Architecture Firewalls”
“Architecture Firewall”
like REST
enforce the architecture
ECommerce
System
Order
Catalog
Billing
Search
Components small
ECommerce
System
Order
Catalog
Billing
Search
Components small
Hard to mess up
ECommerce
System
Order
Catalog
Billing
Search
Components small
Hard to mess up
ECommerce
System
Catalog
Billing
Search
Components small
Hard to mess up
ECommerce
System
Order
Catalog
Billing
Search
Components small
Hard to mess up
Replace if messed up.
Small,
independent deployable
modules
are recyclable.
Recycle your
software!
!
How many people
are trying
to replace legacy
systems?
Replaceability
is usually no goal
for a software project.
Why??
We can achieve
maintainability with
clean architecture +
clean code
We can achieve
maintainability with
architecture firewalls +
recyclable modules
Maintainability
Redundancy
Redundancy
Redundant data
Every information
should be stored and
updated in one place.
No redundancy for
our product data!
ECommerce
System
Products
database
ECommerce
System
Invoicing
System
Products
database
ECommerce
System
Invoicing
System
Products
database
Products
database
ECommerce
System
Products
database
Invoicing
System
ECommerce
System
Products
database
Invoicing
System
Purchase
System
ECommerce
System
Products
database
Invoicing
System
Purchase
System
Marketing
System
Products
data model?
Microservices: Redundancy=Maintainability
No redundancies
High complexity
Hard to change
A central,
redundancy-free data model
is the optimum.
A central,
redundancy-free data model
is the optimum.
UBIQUITOUS
LANGUAGE
VALUE
OBJECT
ENTITY
Address
VALUE
OBJECT
ENTITYor
529 pages
Part IV
Chapter 14
A domain model
is only useful
in a Bounded Context.
There is no
universal data model
in a large system.
Let me repeat:
There is no
universal data model
in a large system.
Address
for a customer
VALUE
OBJECT
ENTITYor
Address
for calculating the
drones’ routes
VALUE
OBJECT
ENTITYor
ECommerce
System
Products
Invoicing
System
Purchase
System
Marketing
System
ECommerce
System
Invoicing
System
Purchase
System
Marketing
System
BOUNDED
CONTEXT
BOUNDED
CONTEXT
BOUNDED
CONTEXT
BOUNDED
CONTEXT
Create a model
for each BOUNDED CONTEXT.
Each BOUNDED CONTEXT
can be a Microservice
with its own database schema
Low complexity
Easy to change
i.e. easy to maintain
Microservices: Redundancy=Maintainability
Few redundancies
Separate facets
ECommerce
System
Invoicing
System
Purchase
System
Marketing
System
Product:
Image
Product:
Price
Product:
Supplier
Product:
Brochure
A central,
redundancy-free data model
is the optimum.
A central,
“redundancy-free”
data model
is often hard to maintain
and wrong.
Redundancy
Redundant data
Redundancy
Redundant code
Redundant code:
The ultimate sin
> Fix bug in many different place
> Decisions implemented in
many places
> ...and hard to change
DRY
Don’t
Repeat
Yourself
DRY Systems?
Great!
DRY between systems?
DRY is a trade-off
System System System System
common common common common
System System System System
common abstraction
Reuse:
The Holy Grail
of the nineties
So where are all the
reusable internal
frameworks?
Premature optimization,
that’s like a sneeze.
Premature abstraction
is like Ebola;
it makes my eyes bleed.
Christer Ericson
The entire history of
software engineering
is that of the
rise in levels of abstraction.
Grady Booch
Using code is hard.
Reusing code is almost
impossible.
But we are reusing Open
Source all the time!
Create an Open
Source project!
Open Source
> Good code quality
> Documentation
> Model to accept contributions
“But high quality Open Source is hard.
We just share code!”
“You only provide high quality as Open
Source…
...but for colleagues low quality is OK?”
Let’s assume it’s possible to reuse code.
Reuse is still a tradeoff.
System System System System
common common common common
System System System System
abstraction
System System System System
abstraction
Change!
System System System System
abstractionChange!
System System System System
abstractionChange!
Impact Impact Impact
System System System System
abstractionChange!
Impact Impact Impact
Now we have reuse
…and a dependency.
Dependency not just
in software!
System System System System
common abstractionChange!
Impact Impact Impact
Dependency between teams
Coordination
Meetings
Getting no real work done
L
Reuse is a tradeoff:
Reuse vs.
Independence
Independence=
Easy to change=
Maintainability
Independence is important
for self-organization.
Self-organization =
deciding yourself
Not meetings upon meetings
Deciding yourself
is only possible,
if teams and modules
are independent.
Redundancies between
systems must be avoided.
Redundancies between
systems must be avoided.
Reuse is a tradeoff:
Reuse vs.
Independence
Microservices focus
on independence
The Microservices
Manifesto ;-)
Microservices
Manifesto ;-)
We value:
Replaceability over
maintainability
Microservices
Manifesto ;-)
We value:
BOUNDED CONTEXT over
redundancy-free data
Microservices
Manifesto ;-)
We value:
Independence over
“Don’t Repeat Yourself!”
Replaceability over
maintainability
BOUNDED CONTEXT over
redundant-free data
Independence over DRY

More Related Content

PPTX
Size, Shape and Arrangement of bacteria
PPTX
Mesopotamia
PPT
The human tongue
PPT
Respiratory system
PDF
How to Split Your System into Microservices
PDF
Data Architecturen Not Just for Microservices
PDF
Five (easy?) Steps Towards Continuous Delivery
PDF
Software Architecture for Innovation
Size, Shape and Arrangement of bacteria
Mesopotamia
The human tongue
Respiratory system
How to Split Your System into Microservices
Data Architecturen Not Just for Microservices
Five (easy?) Steps Towards Continuous Delivery
Software Architecture for Innovation

Viewers also liked (15)

PDF
Nanoservices and Microservices with Java
PDF
Microservices: Architecture to Support Agile
PPTX
Redundancy
PDF
How Small Can Java Microservices Be?
PDF
Self-contained Systems: A Different Approach to Microservices
PDF
Microservices: Architecture to scale Agile
PDF
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
PDF
Microservices and Self-contained System to Scale Agile
PDF
Deployment - Done Right!
PDF
Data Architecture not Just for Microservices
PDF
Microservices Technology Stack
PPT
Redundancy
PDF
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
PDF
There is no such thing as a microservice! (oracle code nyc)
PDF
What is tackled in the Java EE Security API (Java EE 8)
Nanoservices and Microservices with Java
Microservices: Architecture to Support Agile
Redundancy
How Small Can Java Microservices Be?
Self-contained Systems: A Different Approach to Microservices
Microservices: Architecture to scale Agile
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices and Self-contained System to Scale Agile
Deployment - Done Right!
Data Architecture not Just for Microservices
Microservices Technology Stack
Redundancy
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
There is no such thing as a microservice! (oracle code nyc)
What is tackled in the Java EE Security API (Java EE 8)
Ad

Similar to Microservices: Redundancy=Maintainability (20)

PDF
Microservices: Redundancy = Maintainability! (Eberhard Wolff Technology Stream)
PDF
Saturn2017: No such thing as a microservice!
PDF
YOW2022-BNE-MinimalViableArchitecture.pdf
PDF
Code Freeze 2018: There is no such thing as a microservice!
PDF
From Monoliths to Services: Grafually paying your Technical Debt
PPTX
Reducing External Risk
PDF
Microservice final final
PDF
Software Architecture and Architectors: useless VS valuable
PPTX
The "Why", "What" and "How" of Microservices
PPTX
Software architecture patterns
PPTX
The "Why", "What" & "How" of Microservices - short version
PDF
Meetup6 microservices for the IoT
PPTX
L02 Architecture
PDF
Oracle Code Sydney - There is no such thing as a microservice!
PPTX
Minimum Viable Architecture - Good Enough is Good Enough
PDF
The Case Against Microservices
PPTX
Pragmatic Microservices
PDF
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
PDF
Using patterns and pattern languages to make better architectural decisions
PDF
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Microservices: Redundancy = Maintainability! (Eberhard Wolff Technology Stream)
Saturn2017: No such thing as a microservice!
YOW2022-BNE-MinimalViableArchitecture.pdf
Code Freeze 2018: There is no such thing as a microservice!
From Monoliths to Services: Grafually paying your Technical Debt
Reducing External Risk
Microservice final final
Software Architecture and Architectors: useless VS valuable
The "Why", "What" and "How" of Microservices
Software architecture patterns
The "Why", "What" & "How" of Microservices - short version
Meetup6 microservices for the IoT
L02 Architecture
Oracle Code Sydney - There is no such thing as a microservice!
Minimum Viable Architecture - Good Enough is Good Enough
The Case Against Microservices
Pragmatic Microservices
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Using patterns and pattern languages to make better architectural decisions
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Ad

More from Eberhard Wolff (15)

PDF
Architectures and Alternatives
PDF
Beyond Microservices
PDF
The Frontiers of Continuous Delivery
PDF
Four Times Microservices - REST, Kubernetes, UI Integration, Async
PDF
Microservices - not just with Java
PDF
Top Legacy Sins
PDF
REST vs. Messaging For Microservices
PDF
Continuous Delivery, DevOps, Cloud - New Requirements for New Architectures
PDF
Microservices: Architecture for Agile Software Development
PDF
Microservices with Java, Spring Boot and Spring Cloud
PDF
Microservice - All is Small, All is Well?
PDF
Legacy Sins
PDF
Microservice With Spring Boot and Spring Cloud
PDF
NoSQL Riak MongoDB Elasticsearch - All The Same?
PDF
Micro Service – The New Architecture Paradigm
Architectures and Alternatives
Beyond Microservices
The Frontiers of Continuous Delivery
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Microservices - not just with Java
Top Legacy Sins
REST vs. Messaging For Microservices
Continuous Delivery, DevOps, Cloud - New Requirements for New Architectures
Microservices: Architecture for Agile Software Development
Microservices with Java, Spring Boot and Spring Cloud
Microservice - All is Small, All is Well?
Legacy Sins
Microservice With Spring Boot and Spring Cloud
NoSQL Riak MongoDB Elasticsearch - All The Same?
Micro Service – The New Architecture Paradigm

Recently uploaded (20)

PDF
Machine learning based COVID-19 study performance prediction
PDF
Approach and Philosophy of On baking technology
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
KodekX | Application Modernization Development
PDF
Electronic commerce courselecture one. Pdf
PDF
NewMind AI Monthly Chronicles - July 2025
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Machine learning based COVID-19 study performance prediction
Approach and Philosophy of On baking technology
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Chapter 3 Spatial Domain Image Processing.pdf
Review of recent advances in non-invasive hemoglobin estimation
Advanced methodologies resolving dimensionality complications for autism neur...
Spectral efficient network and resource selection model in 5G networks
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
KodekX | Application Modernization Development
Electronic commerce courselecture one. Pdf
NewMind AI Monthly Chronicles - July 2025
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Reach Out and Touch Someone: Haptics and Empathic Computing
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
The AUB Centre for AI in Media Proposal.docx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx

Microservices: Redundancy=Maintainability