HIDING THE LEAD
COUPLING, COHESION AND MICROSERVICES
Sam Newman
https://www.flickr.com/photos/spongebabyalwaysfull/8793058944/
@samnewman
Sam Newman
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
@samnewman
NEW BOOK!
https://samnewman.io/books/monolith-to-microservices/
@samnewman
INDEPENDENT DEPLOYABILITY
Inventory
Returns
Invoicing
Accounts
v1
Customer
Service
Shipping
@samnewman
INDEPENDENT DEPLOYABILITY
Inventory
Returns
Invoicing
Customer
Service
Shipping
Accounts
v2
@samnewman
INDEPENDENT DEPLOYABILITY
Inventory
Returns
Invoicing
Customer
Service
Shipping
Accounts
v2
@samnewman
Customer
Service
Accounts
v1
Independent deployability
requires interface stability
Maintaining backwards
compatibility is key
@samnewman
Customer
Service
Accounts
v2
Independent deployability
requires interface stability
Maintaining backwards
compatibility is key
@samnewman
Customer
Service
Accounts
v2
Independent deployability
requires interface stability
Maintaining backwards
compatibility is key
@samnewman
https://www.flickr.com/photos/photographingtravis/16939917735/
@samnewman
MODULES
@samnewman
MODULES
Module A
Module D
Module B
Module C
Module E
@samnewman
MODULES
Module A
Module D
Module B
Module C
Module E
Allow for
independent
working
@samnewman
MODULES
Module A
Module D
Module B
Module C
Module E
Allow for
independent
working
And reuse
@samnewman
MODULES
Module A
Module D
Module B
Module C
Module E
Allow for
independent
working
And reuse
Namespaces,
packages
@samnewman
MODULES
Module A
Module D
Module B
Module C
Module E
Allow for
independent
working
And reuse
Namespaces,
packages
NPMs, Gems,
JARs etc
@samnewman
AND MICROSERVICES?
Module A
Module DModule B
Module C
Module E
@samnewman
AND MICROSERVICES?
Module A
Module DModule B
Module C
Module E
“Modules” run on different
computers
@samnewman
AND MICROSERVICES?
Module A
Module DModule B
Module C
Module E
Communication
between
modules is done
via network calls
“Modules” run on different
computers
@samnewman
AND MICROSERVICES?
Module A
Module DModule B
Module C
Module E
Communication
between
modules is done
via network calls
“Modules” run on different
computers
Allows for easier
independent deployability
@samnewman
Microservices, when done right, are a form of modular
architecture
@samnewmanhttps://www.flickr.com/photos/ibm_media/33838065805/
@samnewman
INFORMATION HIDING
http://repository.cmu.edu/cgi/viewcontent.cgi?article=2979&context=compsci
@samnewman
INFORMATION HIDING
http://repository.cmu.edu/cgi/viewcontent.cgi?article=2979&context=compsci
Published in 1971
@samnewman
INFORMATION HIDING
http://repository.cmu.edu/cgi/viewcontent.cgi?article=2979&context=compsci
Published in 1971
Looked at how best to define
module boundaries
@samnewman
INFORMATION HIDING
http://repository.cmu.edu/cgi/viewcontent.cgi?article=2979&context=compsci
Published in 1971
Looked at how best to define
module boundaries
Found that “information hiding”
worked best
@samnewman
INFORMATION HIDING AND MICROSERVICES
https://blog.acolyer.org/2016/09/05/on-the-criteria-to-be-used-in-decomposing-systems-into-modules/
@samnewman
Accounts
NOT HIDING?
@samnewman
Accounts
NOT HIDING?
Shipping
@samnewman
Accounts
NOT HIDING?
Shipping
If an upstream consumer
can reach into your internal
implementation..
@samnewman
Accounts
NOT HIDING?
Shipping
If an upstream consumer
can reach into your internal
implementation..
…then you can’t change
this implementation without
breaking the consumer
@samnewman
Accounts
NOT HIDING?
Shipping
If an upstream consumer
can reach into your internal
implementation..
…then you can’t change
this implementation without
breaking the consumer
@samnewman
Accounts
NOT HIDING?
Shipping
If an upstream consumer
can reach into your internal
implementation..
…then you can’t change
this implementation without
breaking the consumer
@samnewman
HIDING!
Accounts
Shipping
@samnewman
HIDING!
Accounts
Shipping
Hide your secrets!
Hidden
@samnewman
HIDING!
Accounts
Shipping
Hide your secrets!
Be explicit about what is
shared, and what is
hidden
Hidden
@samnewman
HIDING!
Accounts
Shipping
Hide your secrets!
Be explicit about what is
shared, and what is
hidden
Shared
Hidden
@samnewman
HIDING!
Accounts
Shipping
Hide your secrets!
Be explicit about what is
shared, and what is
hidden
Shared
Hidden
@samnewman
HIDING!
Accounts
Shipping
Hide your secrets!
Be explicit about what is
shared, and what is
hidden
Shared
Hidden
Hidden things can
change, shared things
can’t
@samnewman
ACCIDENTAL BREAKAGE
public class Customer {
private int id;
private String name;
private int age;
…
}
Code
@samnewman
ACCIDENTAL BREAKAGE
public class Customer {
private int id;
private String name;
private int age;
…
}
Code
@samnewman
ACCIDENTAL BREAKAGE
public class Customer {
private int id;
private String name;
private int age;
…
}
Code
{
“id” : 123,
“name” : “sam”,
“age” : 15
}
JSON
@samnewman
ACCIDENTAL BREAKAGE
public class Customer {
private int id;
private String name;
private int age;
…
}
Code
{
“id” : 123,
“name” : “sam”,
“age” : 15
}
JSON
@samnewman
ACCIDENTAL BREAKAGE
public class Customer {
private int id;
private String name;
private int age;
…
}
Code
{
“id” : 123,
“name” : “sam”,
“age” : 15
}
JSON
public class Customer {
private int id;
private String name;
private LocalDate dob;
…
}
Code
@samnewman
ACCIDENTAL BREAKAGE
public class Customer {
private int id;
private String name;
private int age;
…
}
Code
{
“id” : 123,
“name” : “sam”,
“age” : 15
}
JSON
public class Customer {
private int id;
private String name;
private LocalDate dob;
…
}
Code
@samnewman
ACCIDENTAL BREAKAGE
public class Customer {
private int id;
private String name;
private int age;
…
}
Code
{
“id” : 123,
“name” : “sam”,
“age” : 15
}
JSON
public class Customer {
private int id;
private String name;
private LocalDate dob;
…
}
Code
{
“id” : 123,
“name” : “sam”,
“dob” : 15/02/1974
}
JSON
@samnewman
DATA TRANSFER OBJECT
https://martinfowler.com/eaaCatalog/dataTransferObject.html
Customer
@samnewman
DATA TRANSFER OBJECT
https://martinfowler.com/eaaCatalog/dataTransferObject.html
Customer
public class Customer {
private int id;
private String name;
private LocalDate dob;
…
}
@samnewman
DATA TRANSFER OBJECT
https://martinfowler.com/eaaCatalog/dataTransferObject.html
Customer
public class Customer {
private int id;
private String name;
private LocalDate dob;
…
}
public class CustomerDTO {
private int id;
private String name;
private int age;
…
}
@samnewman
DATA TRANSFER OBJECT
https://martinfowler.com/eaaCatalog/dataTransferObject.html
Customer
public class Customer {
private int id;
private String name;
private LocalDate dob;
…
}
public class CustomerDTO {
private int id;
private String name;
private int age;
…
}
{
“id” : 123,
“name” : “sam”,
“age” : 15
}
JSON
@samnewman
AND CONNECTIONS BETWEEN THEM?
@samnewman
AND CONNECTIONS BETWEEN THEM?
“The connections between
modules are the assumptions
which the modules make
about each other.”
- David Parnas
@samnewman
AND CONNECTIONS BETWEEN THEM?
“The connections between
modules are the assumptions
which the modules make
about each other.”
- David Parnas
Information hiding is about
reducing the assumptions
one module has for another
@samnewman
EXPLICIT CONTRACTS?
Module DModule B
@samnewman
EXPLICIT CONTRACTS?
Module DModule B
@samnewman
EXPLICIT CONTRACTS?
Module DModule B
Need an explicit understanding of
the assumptions of consumers
@samnewman
EXPLICIT CONTRACTS?
Module DModule B
Need an explicit understanding of
the assumptions of consumers
To help us understand what can
change easily, and what cannot
@samnewman
EXPLICIT CONTRACTS?
Module DModule B
Need an explicit understanding of
the assumptions of consumers
To help us understand what can
change easily, and what cannot
Schemas can help!
@samnewman
Schemas FTW!
@samnewman
SCHEMAS
https://json-schema.org/ https://developers.google.com/protocol-buffers/
@samnewman
CHECKING SCHEMA COMPATIBILITY
https://protolock.dev/
@samnewman
And of course testing…
@samnewman
STRUCTURED PROGRAMMING
@samnewman
COUPLING AND COHESION
@samnewman
COUPLING AND COHESION
Coupling
@samnewman
COUPLING AND COHESION
Coupling Cohesion
@samnewman
COUPLING AND COHESION
Coupling Cohesion
Low
@samnewman
COUPLING AND COHESION
Coupling Cohesion
Low Strong
@samnewman
COHESION
The code that changes together, stays together
@samnewman
WEAK COHESION
@samnewman
WEAK COHESION
@samnewman
COUPLING
The degree to which changing one module requires a
change in another
@samnewman
CONSTANTINE’S LAW
“A structure is stable if cohesion is strong and coupling is low.”
- Albert Endres and Dieter Rombach
@samnewman
TYPES OF COUPLING
@samnewman
TYPES OF COUPLING
Domain
@samnewman
TYPES OF COUPLING
Domain Tramp
@samnewman
TYPES OF COUPLING
Domain CommonTramp
@samnewman
TYPES OF COUPLING
Domain Common ContentTramp
@samnewman
TYPES OF COUPLING
Domain Common ContentTramp
@samnewman
TYPES OF COUPLING
Domain Common Content
Increasing coupling
Tramp
@samnewman
DOMAIN COUPLING
Order Processor
Warehouse
Reserve Stock
Payment
Take Payment
@samnewman
DOMAIN COUPLING
Order Processor
Warehouse
Reserve Stock
Payment
Take Payment
Domain Coupling
@samnewman
TRAMP COUPLING
@samnewman
Order Processor
TRAMP COUPLING
@samnewman
Order Processor Warehouse
TRAMP COUPLING
@samnewman
Order Processor Warehouse
Shipping Manifest
Send Order Request
# Item ID
3 2231
2 134
TRAMP COUPLING
@samnewman
Order Processor
Shipping
Warehouse
Shipping Manifest
Send Order Request
# Item ID
3 2231
2 134
TRAMP COUPLING
@samnewman
Order Processor
Shipping
Warehouse
Shipping Manifest
Send Order Request
# Item ID
3 2231
2 134
TRAMP COUPLING
Shipping Manifest
Dispatch Package
Request
@samnewman
AVOIDING TRAMP COUPLING
@samnewman
AVOIDING TRAMP COUPLING
Order Processor
@samnewman
AVOIDING TRAMP COUPLING
Order Processor Warehouse
@samnewman
AVOIDING TRAMP COUPLING
Order Processor Warehouse
Send Order Request
# Item ID
3 2231
2 134
@samnewman
AVOIDING TRAMP COUPLING
Order Processor
Shipping
Warehouse
Send Order Request
# Item ID
3 2231
2 134
@samnewman
AVOIDING TRAMP COUPLING
Order Processor
Shipping
Warehouse
Shipping Manifest
Send Order Request
# Item ID
3 2231
2 134
@samnewman
AVOIDING TRAMP COUPLING (CONT)
Order Processor Warehouse
Shipping
1342
22313
ItemID#
Send Order Request
Shipping Manifest
Dispatch Package Request
123 The Place, UK
Express Shipping
@samnewman
COMMON COUPLING
Warehouse
@samnewman
COMMON COUPLING
Warehouse
Stock Levels
@samnewman
COMMON COUPLING
Warehouse
Stock Levels
@samnewman
COMMON COUPLING
Warehouse
Stock Levels Order Processor
@samnewman
COMMON COUPLING
Warehouse
Stock Levels Order ProcessorForecasting
@samnewman
COMMON COUPLING
Warehouse
Stock Levels Order ProcessorForecasting
Change to the common data
impacts multiple microservices
@samnewman
CONTENT COUPLING
Order ID Status
123 PLACED
456 SHIPPED
@samnewman
CONTENT COUPLING
Order ID Status
123 PLACED
456 SHIPPED
Order Processor
@samnewman
CONTENT COUPLING
Order ID Status
123 PLACED
456 SHIPPED
WarehouseOrder Processor
@samnewman
CONTENT COUPLING
Order ID Status
123 PLACED
456 SHIPPED
WarehouseOrder Processor
Information hiding bypassed
@samnewman
CONTENT COUPLING
Order ID Status
123 PLACED
456 SHIPPED
WarehouseOrder Processor
Information hiding bypassed
Unclear what can safely be
changed in the Order service
@samnewman
CONTENT COUPLING
Order ID Status
123 PLACED
456 SHIPPED
WarehouseOrder Processor
Information hiding bypassed
Unclear what can safely be
changed in the Order service
Aka Pathological Coupling
@samnewman
TYPES OF COUPLING
Domain Common ContentTramp
@samnewman
TYPES OF COUPLING
Domain Common Content
Increasing coupling
Tramp
@samnewman
IN SUMMARY
@samnewman
IN SUMMARY
Information hiding is super important
@samnewman
IN SUMMARY
Information hiding is super important
Some coupling is worse than others
@samnewman
IN SUMMARY
Information hiding is super important
Some coupling is worse than others
Information hiding, low coupling, strong
cohesion = Independent Deployability
@samnewman
THANKS!
https://samnewman.io/

More Related Content

PDF
Escaping Dependency Hell: A deep dive into Gradle's dependency management fea...
PDF
Scenarios_and_Architecture_SkillsMatter_April_2022.pdf
PDF
Resolving technical debt in software architecture
PDF
More the merrier: a microservices anti-pattern
PDF
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
PDF
The microservice architecture: what, why, when and how?
PDF
DDD SoCal: Decompose your monolith: Ten principles for refactoring a monolith...
PDF
Using patterns and pattern languages to make better architectural decisions
Escaping Dependency Hell: A deep dive into Gradle's dependency management fea...
Scenarios_and_Architecture_SkillsMatter_April_2022.pdf
Resolving technical debt in software architecture
More the merrier: a microservices anti-pattern
Microservices Architectures: Become a Unicorn like Netflix, Twitter and Hailo
The microservice architecture: what, why, when and how?
DDD SoCal: Decompose your monolith: Ten principles for refactoring a monolith...
Using patterns and pattern languages to make better architectural decisions

What's hot (20)

PDF
A Pattern Language for Microservices
PDF
QConPlus 2021: Minimizing Design Time Coupling in a Microservice Architecture
PPTX
Microservice architecture design principles
PDF
A pattern language for microservices - June 2021
PDF
YOW2018 - Events and Commands: Developing Asynchronous Microservices
PDF
"Anti-patterns of Software Architecture — To defeat enemies, you need to know...
PDF
Designing loosely coupled services
PDF
iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...
PDF
Microservice Architecture Patterns, by Richard Langlois P. Eng.
PDF
Saturn 2018: Managing data consistency in a microservice architecture using S...
PDF
Microservice architecture
PDF
Decompose your monolith: Six principles for refactoring a monolith to microse...
PPTX
Introduction to microservices
PDF
Decompose your monolith: strategies for migrating to microservices (Tide)
PPTX
Microservices Architecture Part 2 Event Sourcing and Saga
PDF
MicroCPH - Managing data consistency in a microservice architecture using Sagas
PDF
Dark Energy, Dark Matter and the Microservices Patterns?!
PPTX
Domain Driven Design(DDD) Presentation
PDF
GotoChgo 2019: Not Just Events: Developing Asynchronous Microservices
PDF
Microservices architecture
A Pattern Language for Microservices
QConPlus 2021: Minimizing Design Time Coupling in a Microservice Architecture
Microservice architecture design principles
A pattern language for microservices - June 2021
YOW2018 - Events and Commands: Developing Asynchronous Microservices
"Anti-patterns of Software Architecture — To defeat enemies, you need to know...
Designing loosely coupled services
iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...
Microservice Architecture Patterns, by Richard Langlois P. Eng.
Saturn 2018: Managing data consistency in a microservice architecture using S...
Microservice architecture
Decompose your monolith: Six principles for refactoring a monolith to microse...
Introduction to microservices
Decompose your monolith: strategies for migrating to microservices (Tide)
Microservices Architecture Part 2 Event Sourcing and Saga
MicroCPH - Managing data consistency in a microservice architecture using Sagas
Dark Energy, Dark Matter and the Microservices Patterns?!
Domain Driven Design(DDD) Presentation
GotoChgo 2019: Not Just Events: Developing Asynchronous Microservices
Microservices architecture
Ad

Similar to Hiding The Lead: Coupling, cohesion and microservices (20)

PDF
INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newman
PDF
Retrofitting Architecture - Oredev 2012
PDF
Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, No...
PPTX
Effective Microservices In a Data-centric World
PDF
Keynote: Sam Newman, Building Microservices | The Tyranny Of Data | Kafka Sum...
PPTX
Software Development: Beyond Training wheels
PDF
JavaScript as Data Processing Language & HTML5 Integration
PDF
Building businesspost.ie using Node.js
PPT
Object orientation technology
PDF
Developing polyglot applications on Cloud Foundry (#oredev 2012)
PDF
Rediscovering modularity - JavaOne Brazil 2012
PPT
chapter 5 Objectdesign.ppt
PDF
Developing modular, polyglot applications with Spring (SpringOne India 2012)
PPTX
Scaling your website
PPTX
Web-Services-web services-20052025-051043pm.pptx
PDF
NoSQL and CouchDB
KEY
Drive your dba crazy in 3 easy steps
PDF
PDF
Mastering Your Customer Data on Apache Spark by Elliott Cordo
ODP
MongoDB Topazsocial CRM
INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newman
Retrofitting Architecture - Oredev 2012
Rediscovering Modularity - Java User Groups, Stuttgart, Munich, Nuremberg, No...
Effective Microservices In a Data-centric World
Keynote: Sam Newman, Building Microservices | The Tyranny Of Data | Kafka Sum...
Software Development: Beyond Training wheels
JavaScript as Data Processing Language & HTML5 Integration
Building businesspost.ie using Node.js
Object orientation technology
Developing polyglot applications on Cloud Foundry (#oredev 2012)
Rediscovering modularity - JavaOne Brazil 2012
chapter 5 Objectdesign.ppt
Developing modular, polyglot applications with Spring (SpringOne India 2012)
Scaling your website
Web-Services-web services-20052025-051043pm.pptx
NoSQL and CouchDB
Drive your dba crazy in 3 easy steps
Mastering Your Customer Data on Apache Spark by Elliott Cordo
MongoDB Topazsocial CRM
Ad

More from Sam Newman (20)

PDF
It's a trap!
PDF
Rip It Up - The Microservice Organisation
PDF
What Is This Cloud Native Thing Anyway?
PDF
Confusion In The Land Of The Serverless - 90min Version
PDF
AppSec and Microservices
PDF
Feature Branches And Toggles In A Post-GitHub World
PDF
Confusion In The Land Of The Serverless
PDF
AppSec & Microservices - Velocity 2016
PDF
AppSec And Microservices
PDF
Deploying and Scaling Microservices
PDF
BETA - Securing microservices
PDF
Principles of microservices ndc oslo
PDF
Principles of microservices velocity
PDF
QCon Sao Paulo Keynote - Microservices, an Unexpected Journey
PDF
Principles of microservices XP Days Ukraine
PDF
Testing & deploying microservices - XP Days Ukraine 2014
PDF
Principles of Microservices - NDC 2014
PDF
Practical microservices - NDC 2014
PDF
Practical microservices - javazone 2014
PDF
Testing & deploying Microservices GeeCon 2014
It's a trap!
Rip It Up - The Microservice Organisation
What Is This Cloud Native Thing Anyway?
Confusion In The Land Of The Serverless - 90min Version
AppSec and Microservices
Feature Branches And Toggles In A Post-GitHub World
Confusion In The Land Of The Serverless
AppSec & Microservices - Velocity 2016
AppSec And Microservices
Deploying and Scaling Microservices
BETA - Securing microservices
Principles of microservices ndc oslo
Principles of microservices velocity
QCon Sao Paulo Keynote - Microservices, an Unexpected Journey
Principles of microservices XP Days Ukraine
Testing & deploying microservices - XP Days Ukraine 2014
Principles of Microservices - NDC 2014
Practical microservices - NDC 2014
Practical microservices - javazone 2014
Testing & deploying Microservices GeeCon 2014

Recently uploaded (20)

PDF
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
PDF
Rapid Prototyping: A lecture on prototyping techniques for interface design
PPTX
Training Program for knowledge in solar cell and solar industry
PDF
INTERSPEECH 2025 「Recent Advances and Future Directions in Voice Conversion」
DOCX
search engine optimization ppt fir known well about this
PDF
Transform-Your-Factory-with-AI-Driven-Quality-Engineering.pdf
PDF
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PPT
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
PPTX
future_of_ai_comprehensive_20250822032121.pptx
PPTX
Internet of Everything -Basic concepts details
PPTX
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
PDF
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
PDF
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
PDF
Flame analysis and combustion estimation using large language and vision assi...
PDF
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
PDF
Consumable AI The What, Why & How for Small Teams.pdf
DOCX
Basics of Cloud Computing - Cloud Ecosystem
PPTX
Microsoft User Copilot Training Slide Deck
PDF
Enhancing plagiarism detection using data pre-processing and machine learning...
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
Rapid Prototyping: A lecture on prototyping techniques for interface design
Training Program for knowledge in solar cell and solar industry
INTERSPEECH 2025 「Recent Advances and Future Directions in Voice Conversion」
search engine optimization ppt fir known well about this
Transform-Your-Factory-with-AI-Driven-Quality-Engineering.pdf
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
Convolutional neural network based encoder-decoder for efficient real-time ob...
Galois Field Theory of Risk: A Perspective, Protocol, and Mathematical Backgr...
future_of_ai_comprehensive_20250822032121.pptx
Internet of Everything -Basic concepts details
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
Transform-Your-Supply-Chain-with-AI-Driven-Quality-Engineering.pdf
Flame analysis and combustion estimation using large language and vision assi...
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
Consumable AI The What, Why & How for Small Teams.pdf
Basics of Cloud Computing - Cloud Ecosystem
Microsoft User Copilot Training Slide Deck
Enhancing plagiarism detection using data pre-processing and machine learning...

Hiding The Lead: Coupling, cohesion and microservices