SlideShare une entreprise Scribd logo
1  sur  114
Télécharger pour lire hors ligne
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/

Contenu connexe

Tendances

From macro to micro goto
From macro to micro   gotoFrom macro to micro   goto
From macro to micro gotoSam Newman
 
Principles of Microservices - NDC 2014
Principles of Microservices  - NDC 2014Principles of Microservices  - NDC 2014
Principles of Microservices - NDC 2014Sam Newman
 
Practical microservices - NDC 2014
Practical microservices  - NDC 2014Practical microservices  - NDC 2014
Practical microservices - NDC 2014Sam Newman
 
AppSec & Microservices - Velocity 2016
AppSec & Microservices - Velocity 2016AppSec & Microservices - Velocity 2016
AppSec & Microservices - Velocity 2016Sam Newman
 
AppSec And Microservices
AppSec And MicroservicesAppSec And Microservices
AppSec And MicroservicesSam Newman
 
BETA - Securing microservices
BETA - Securing microservicesBETA - Securing microservices
BETA - Securing microservicesSam Newman
 
Testing & deploying Microservices GeeCon 2014
Testing & deploying Microservices   GeeCon 2014Testing & deploying Microservices   GeeCon 2014
Testing & deploying Microservices GeeCon 2014Sam Newman
 
Practical microservices - YOW 2013
Practical microservices  - YOW 2013Practical microservices  - YOW 2013
Practical microservices - YOW 2013Sam Newman
 
Practical microservices - javazone 2014
Practical microservices -  javazone 2014Practical microservices -  javazone 2014
Practical microservices - javazone 2014Sam Newman
 
Deploying and Scaling Microservices
Deploying and Scaling MicroservicesDeploying and Scaling Microservices
Deploying and Scaling MicroservicesSam Newman
 
Deploying & operating microservices
Deploying & operating microservicesDeploying & operating microservices
Deploying & operating microservicesThoughtworks
 
Keynote: Sam Newman, Building Microservices | The Tyranny Of Data | Kafka Sum...
Keynote: Sam Newman, Building Microservices | The Tyranny Of Data | Kafka Sum...Keynote: Sam Newman, Building Microservices | The Tyranny Of Data | Kafka Sum...
Keynote: Sam Newman, Building Microservices | The Tyranny Of Data | Kafka Sum...HostedbyConfluent
 
Building better content creation with wysiwyg fields and custom formatters
Building better content creation with wysiwyg fields and custom formattersBuilding better content creation with wysiwyg fields and custom formatters
Building better content creation with wysiwyg fields and custom formattersStuart Clark
 
Tips & tricks for building your product quicker
Tips & tricks for building your product quickerTips & tricks for building your product quicker
Tips & tricks for building your product quickerChristopher Maneu
 
Networks, Networks Everywhere, And Not A Packet To Drink
Networks, Networks Everywhere, And Not A Packet To DrinkNetworks, Networks Everywhere, And Not A Packet To Drink
Networks, Networks Everywhere, And Not A Packet To DrinkReadWrite
 
Ramp up your Mobile Content Slideshow
Ramp up your Mobile Content SlideshowRamp up your Mobile Content Slideshow
Ramp up your Mobile Content SlideshowDan Lapham
 
Track A - Use your website as a tool to automate and enhance your affiliate e...
Track A - Use your website as a tool to automate and enhance your affiliate e...Track A - Use your website as a tool to automate and enhance your affiliate e...
Track A - Use your website as a tool to automate and enhance your affiliate e...Affiliate Summit
 
Reactive Summit 2020 - How state helps you to stay reactive
Reactive Summit 2020 - How state helps you to stay reactiveReactive Summit 2020 - How state helps you to stay reactive
Reactive Summit 2020 - How state helps you to stay reactiveBernd Ruecker
 
Virtual Reality for B2B: Reclaiming a Captive Audience in a World of Distract...
Virtual Reality for B2B: Reclaiming a Captive Audience in a World of Distract...Virtual Reality for B2B: Reclaiming a Captive Audience in a World of Distract...
Virtual Reality for B2B: Reclaiming a Captive Audience in a World of Distract...Business Marketing Association (SoCal BMA)
 
Lost in transaction - Strategies to deal with (in)consistency in distributed ...
Lost in transaction - Strategies to deal with (in)consistency in distributed ...Lost in transaction - Strategies to deal with (in)consistency in distributed ...
Lost in transaction - Strategies to deal with (in)consistency in distributed ...Bernd Ruecker
 

Tendances (20)

From macro to micro goto
From macro to micro   gotoFrom macro to micro   goto
From macro to micro goto
 
Principles of Microservices - NDC 2014
Principles of Microservices  - NDC 2014Principles of Microservices  - NDC 2014
Principles of Microservices - NDC 2014
 
Practical microservices - NDC 2014
Practical microservices  - NDC 2014Practical microservices  - NDC 2014
Practical microservices - NDC 2014
 
AppSec & Microservices - Velocity 2016
AppSec & Microservices - Velocity 2016AppSec & Microservices - Velocity 2016
AppSec & Microservices - Velocity 2016
 
AppSec And Microservices
AppSec And MicroservicesAppSec And Microservices
AppSec And Microservices
 
BETA - Securing microservices
BETA - Securing microservicesBETA - Securing microservices
BETA - Securing microservices
 
Testing & deploying Microservices GeeCon 2014
Testing & deploying Microservices   GeeCon 2014Testing & deploying Microservices   GeeCon 2014
Testing & deploying Microservices GeeCon 2014
 
Practical microservices - YOW 2013
Practical microservices  - YOW 2013Practical microservices  - YOW 2013
Practical microservices - YOW 2013
 
Practical microservices - javazone 2014
Practical microservices -  javazone 2014Practical microservices -  javazone 2014
Practical microservices - javazone 2014
 
Deploying and Scaling Microservices
Deploying and Scaling MicroservicesDeploying and Scaling Microservices
Deploying and Scaling Microservices
 
Deploying & operating microservices
Deploying & operating microservicesDeploying & operating microservices
Deploying & operating microservices
 
Keynote: Sam Newman, Building Microservices | The Tyranny Of Data | Kafka Sum...
Keynote: Sam Newman, Building Microservices | The Tyranny Of Data | Kafka Sum...Keynote: Sam Newman, Building Microservices | The Tyranny Of Data | Kafka Sum...
Keynote: Sam Newman, Building Microservices | The Tyranny Of Data | Kafka Sum...
 
Building better content creation with wysiwyg fields and custom formatters
Building better content creation with wysiwyg fields and custom formattersBuilding better content creation with wysiwyg fields and custom formatters
Building better content creation with wysiwyg fields and custom formatters
 
Tips & tricks for building your product quicker
Tips & tricks for building your product quickerTips & tricks for building your product quicker
Tips & tricks for building your product quicker
 
Networks, Networks Everywhere, And Not A Packet To Drink
Networks, Networks Everywhere, And Not A Packet To DrinkNetworks, Networks Everywhere, And Not A Packet To Drink
Networks, Networks Everywhere, And Not A Packet To Drink
 
Ramp up your Mobile Content Slideshow
Ramp up your Mobile Content SlideshowRamp up your Mobile Content Slideshow
Ramp up your Mobile Content Slideshow
 
Track A - Use your website as a tool to automate and enhance your affiliate e...
Track A - Use your website as a tool to automate and enhance your affiliate e...Track A - Use your website as a tool to automate and enhance your affiliate e...
Track A - Use your website as a tool to automate and enhance your affiliate e...
 
Reactive Summit 2020 - How state helps you to stay reactive
Reactive Summit 2020 - How state helps you to stay reactiveReactive Summit 2020 - How state helps you to stay reactive
Reactive Summit 2020 - How state helps you to stay reactive
 
Virtual Reality for B2B: Reclaiming a Captive Audience in a World of Distract...
Virtual Reality for B2B: Reclaiming a Captive Audience in a World of Distract...Virtual Reality for B2B: Reclaiming a Captive Audience in a World of Distract...
Virtual Reality for B2B: Reclaiming a Captive Audience in a World of Distract...
 
Lost in transaction - Strategies to deal with (in)consistency in distributed ...
Lost in transaction - Strategies to deal with (in)consistency in distributed ...Lost in transaction - Strategies to deal with (in)consistency in distributed ...
Lost in transaction - Strategies to deal with (in)consistency in distributed ...
 

Similaire à Hiding The Lead: Coupling, cohesion and microservices

INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newman
INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam NewmanINTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newman
INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newmanapidays
 
Ryan Smith's talk from the AWS Chicago user group May 22 - Security
Ryan Smith's talk from the AWS Chicago user group May 22 - Security Ryan Smith's talk from the AWS Chicago user group May 22 - Security
Ryan Smith's talk from the AWS Chicago user group May 22 - Security AWS Chicago
 
How to Design a Kafka Architecture Resilient to Cloud Outages With Julie Wied...
How to Design a Kafka Architecture Resilient to Cloud Outages With Julie Wied...How to Design a Kafka Architecture Resilient to Cloud Outages With Julie Wied...
How to Design a Kafka Architecture Resilient to Cloud Outages With Julie Wied...HostedbyConfluent
 
From fire fighting to fire insurance
From fire fighting to fire insuranceFrom fire fighting to fire insurance
From fire fighting to fire insuranceEd Kless
 
Describe and Improve your Business Model
Describe and Improve your Business ModelDescribe and Improve your Business Model
Describe and Improve your Business ModelAlexander Osterwalder
 
Business Model Temp
Business Model TempBusiness Model Temp
Business Model Tempcgiardini
 
AI Services and Serverless Workshop
AI Services and Serverless WorkshopAI Services and Serverless Workshop
AI Services and Serverless WorkshopBoaz Ziniman
 
Marketers wear glasses not ties - IMD 1st General Management Week 2014
Marketers wear glasses not ties - IMD 1st General Management Week 2014Marketers wear glasses not ties - IMD 1st General Management Week 2014
Marketers wear glasses not ties - IMD 1st General Management Week 2014Relax In The Air
 
The "Why", "What" & "How" of Microservices - short version
The "Why", "What" & "How" of Microservices - short versionThe "Why", "What" & "How" of Microservices - short version
The "Why", "What" & "How" of Microservices - short versionINPAY
 
Oli Gardner SMD Warsaw 2014 - Advanced Landing Page Optimization With Conve...
Oli Gardner  SMD Warsaw 2014  - Advanced Landing Page Optimization With Conve...Oli Gardner  SMD Warsaw 2014  - Advanced Landing Page Optimization With Conve...
Oli Gardner SMD Warsaw 2014 - Advanced Landing Page Optimization With Conve...Joanna Gęsicka
 
Wordpress Proposal Template PowerPoint Presentation Slides
Wordpress Proposal Template PowerPoint Presentation SlidesWordpress Proposal Template PowerPoint Presentation Slides
Wordpress Proposal Template PowerPoint Presentation SlidesSlideTeam
 
Ipad mockups
Ipad mockupsIpad mockups
Ipad mockupsMianlside
 
Setting Up a Machine Learning Platform
Setting Up a Machine Learning PlatformSetting Up a Machine Learning Platform
Setting Up a Machine Learning PlatformChristopher Mohritz
 
Be kind to your future admin self, Silvia Denaro & Nathaniel Sombu
Be kind to your future admin self, Silvia Denaro & Nathaniel SombuBe kind to your future admin self, Silvia Denaro & Nathaniel Sombu
Be kind to your future admin self, Silvia Denaro & Nathaniel SombuCzechDreamin
 
Case Study: Nordstrom Succeeds in E-Commerce with Innovative Performance Test...
Case Study: Nordstrom Succeeds in E-Commerce with Innovative Performance Test...Case Study: Nordstrom Succeeds in E-Commerce with Innovative Performance Test...
Case Study: Nordstrom Succeeds in E-Commerce with Innovative Performance Test...CA Technologies
 
Building Enterprise Apps Rapidly with Salesforce Mobile Packs Webinar
Building Enterprise Apps Rapidly with Salesforce Mobile Packs WebinarBuilding Enterprise Apps Rapidly with Salesforce Mobile Packs Webinar
Building Enterprise Apps Rapidly with Salesforce Mobile Packs WebinarSalesforce Developers
 
London Microservices Meetup: Lessons learnt adopting microservices
London Microservices  Meetup: Lessons learnt adopting microservicesLondon Microservices  Meetup: Lessons learnt adopting microservices
London Microservices Meetup: Lessons learnt adopting microservicesCobus Bernard
 

Similaire à Hiding The Lead: Coupling, cohesion and microservices (20)

INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newman
INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam NewmanINTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newman
INTERFACE by apidays - Microservices, APIs, and the Cost Of Change by Sam Newman
 
Ryan Smith's talk from the AWS Chicago user group May 22 - Security
Ryan Smith's talk from the AWS Chicago user group May 22 - Security Ryan Smith's talk from the AWS Chicago user group May 22 - Security
Ryan Smith's talk from the AWS Chicago user group May 22 - Security
 
How to Design a Kafka Architecture Resilient to Cloud Outages With Julie Wied...
How to Design a Kafka Architecture Resilient to Cloud Outages With Julie Wied...How to Design a Kafka Architecture Resilient to Cloud Outages With Julie Wied...
How to Design a Kafka Architecture Resilient to Cloud Outages With Julie Wied...
 
Copper Mobile
Copper MobileCopper Mobile
Copper Mobile
 
From fire fighting to fire insurance
From fire fighting to fire insuranceFrom fire fighting to fire insurance
From fire fighting to fire insurance
 
Describe and Improve your Business Model
Describe and Improve your Business ModelDescribe and Improve your Business Model
Describe and Improve your Business Model
 
Business Model Temp
Business Model TempBusiness Model Temp
Business Model Temp
 
AI Services and Serverless Workshop
AI Services and Serverless WorkshopAI Services and Serverless Workshop
AI Services and Serverless Workshop
 
Going web native
Going web nativeGoing web native
Going web native
 
Marketers wear glasses not ties - IMD 1st General Management Week 2014
Marketers wear glasses not ties - IMD 1st General Management Week 2014Marketers wear glasses not ties - IMD 1st General Management Week 2014
Marketers wear glasses not ties - IMD 1st General Management Week 2014
 
Cloud Computing2
Cloud Computing2Cloud Computing2
Cloud Computing2
 
The "Why", "What" & "How" of Microservices - short version
The "Why", "What" & "How" of Microservices - short versionThe "Why", "What" & "How" of Microservices - short version
The "Why", "What" & "How" of Microservices - short version
 
Oli Gardner SMD Warsaw 2014 - Advanced Landing Page Optimization With Conve...
Oli Gardner  SMD Warsaw 2014  - Advanced Landing Page Optimization With Conve...Oli Gardner  SMD Warsaw 2014  - Advanced Landing Page Optimization With Conve...
Oli Gardner SMD Warsaw 2014 - Advanced Landing Page Optimization With Conve...
 
Wordpress Proposal Template PowerPoint Presentation Slides
Wordpress Proposal Template PowerPoint Presentation SlidesWordpress Proposal Template PowerPoint Presentation Slides
Wordpress Proposal Template PowerPoint Presentation Slides
 
Ipad mockups
Ipad mockupsIpad mockups
Ipad mockups
 
Setting Up a Machine Learning Platform
Setting Up a Machine Learning PlatformSetting Up a Machine Learning Platform
Setting Up a Machine Learning Platform
 
Be kind to your future admin self, Silvia Denaro & Nathaniel Sombu
Be kind to your future admin self, Silvia Denaro & Nathaniel SombuBe kind to your future admin self, Silvia Denaro & Nathaniel Sombu
Be kind to your future admin self, Silvia Denaro & Nathaniel Sombu
 
Case Study: Nordstrom Succeeds in E-Commerce with Innovative Performance Test...
Case Study: Nordstrom Succeeds in E-Commerce with Innovative Performance Test...Case Study: Nordstrom Succeeds in E-Commerce with Innovative Performance Test...
Case Study: Nordstrom Succeeds in E-Commerce with Innovative Performance Test...
 
Building Enterprise Apps Rapidly with Salesforce Mobile Packs Webinar
Building Enterprise Apps Rapidly with Salesforce Mobile Packs WebinarBuilding Enterprise Apps Rapidly with Salesforce Mobile Packs Webinar
Building Enterprise Apps Rapidly with Salesforce Mobile Packs Webinar
 
London Microservices Meetup: Lessons learnt adopting microservices
London Microservices  Meetup: Lessons learnt adopting microservicesLondon Microservices  Meetup: Lessons learnt adopting microservices
London Microservices Meetup: Lessons learnt adopting microservices
 

Plus de Sam Newman

AppSec and Microservices
AppSec and MicroservicesAppSec and Microservices
AppSec and MicroservicesSam Newman
 
Feature Branches And Toggles In A Post-GitHub World
Feature Branches And Toggles In A Post-GitHub WorldFeature Branches And Toggles In A Post-GitHub World
Feature Branches And Toggles In A Post-GitHub WorldSam Newman
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocitySam Newman
 
Testing & deploying microservices - XP Days Ukraine 2014
Testing & deploying microservices  - XP Days Ukraine 2014Testing & deploying microservices  - XP Days Ukraine 2014
Testing & deploying microservices - XP Days Ukraine 2014Sam Newman
 
Designing for rapid release goto 2012
Designing for rapid release   goto 2012Designing for rapid release   goto 2012
Designing for rapid release goto 2012Sam Newman
 
Surfing the event stream
Surfing the event streamSurfing the event stream
Surfing the event streamSam Newman
 

Plus de Sam Newman (6)

AppSec and Microservices
AppSec and MicroservicesAppSec and Microservices
AppSec and Microservices
 
Feature Branches And Toggles In A Post-GitHub World
Feature Branches And Toggles In A Post-GitHub WorldFeature Branches And Toggles In A Post-GitHub World
Feature Branches And Toggles In A Post-GitHub World
 
Principles of microservices velocity
Principles of microservices   velocityPrinciples of microservices   velocity
Principles of microservices velocity
 
Testing & deploying microservices - XP Days Ukraine 2014
Testing & deploying microservices  - XP Days Ukraine 2014Testing & deploying microservices  - XP Days Ukraine 2014
Testing & deploying microservices - XP Days Ukraine 2014
 
Designing for rapid release goto 2012
Designing for rapid release   goto 2012Designing for rapid release   goto 2012
Designing for rapid release goto 2012
 
Surfing the event stream
Surfing the event streamSurfing the event stream
Surfing the event stream
 

Dernier

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Dernier (20)

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

Hiding The Lead: Coupling, cohesion and microservices