SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Downloaden Sie, um offline zu lesen
The Seven DEADLY SINS OF Microservices
Daniel Bryant
@danielbryantuk
OpencRedo
(WITH Credit to Tareq Abedrabbo)
The Seven Deadly Sins
1. LUST …
2. GLUTTONY
3. GREED…
4. SLOTH
5. WRATH
6. ENVY
7. PRIDE
12/08/15	
   @danielbryantuk	
  
The Seven Deadly Sins (of Microservices)
1. LUST - Using the latest and greatest tech…
2. GLUTTONY - Excessive communication protocols
3. GREED - All your service are belong to us…
4. SLOTH - Creating a distributed monolith
5. WRATH - Blowing up when bad things happen
6. ENVY - The shared single domain fallacy
7. PRIDE - testing in the world of transience
12/08/15	
   @danielbryantuk	
  
Who Am I?
•  Principle Consultant at OpenCredo
ü  Agile, CI/CD, DevOps
ü  Microservices and cloud
ü  Docker, Mesos and Kubernetes
•  London Java Community Associate
•  Adopt OpenJDK and JSR
•  InfoQ Editor and DZone MVB
12/08/15	
   @danielbryantuk	
  
So, What is a microservice?
“Loosely coupled service oriented architecture
with bounded contexts”
Adrian Cockcroft
“Applications that fit in your head”
James Lewis
12/08/15	
   @danielbryantuk	
  
1. Lust - Using THE LATEST and Greatest Tech…
12/08/15	
   @danielbryantuk	
  
Microservices...
They solve all of our problems, Right?
12/08/15	
   @danielbryantuk	
  
No... Not necessarily good for speed
12/08/15	
   @danielbryantuk	
  
skillsma7er.com/skillscasts/6143-­‐microservices-­‐for-­‐speed	
  	
  
AddiConal	
  Reading!!	
  
marCnfowler.com/bliki/
MonolithFirst.html	
  	
  
No... Check your architecture/design skills
“If you can't build a [well-structured] monolith,
what makes you think microservices are the answer?”
Simon Brown
(bit.ly/1n7D0vp)
12/08/15	
   @danielbryantuk	
  
No... Check your architecture/design skills
12/08/15	
   @danielbryantuk	
  
No... Operational maturity is vital
12/08/15	
   @danielbryantuk	
  
marCnfowler.com/bliki/MicroservicePrerequisites.html	
  	
  
Microservices are very useful
But check your use case...
...Evaluation is a key skill
12/08/15	
   @danielbryantuk	
  
Evaluation
“I will postpone using this shiny new framework until
my peers have validated the proposed benefits with
rigorous scientific experiments”
- Said by no programmer
…ever
12/08/15	
   @danielbryantuk	
  
Pick Your (Technical) Battles...…
•  As Dan McKinley says, “Choose Boring Technology”
– Optimize globally across organisation
•  Java and Spring (Boot) are perfectly acceptable
•  ... As are tomcat/jetty
12/08/15	
   @danielbryantuk	
  
Matt Raible’s Comparison Framework
12/08/15	
   @danielbryantuk	
  
2. GLUTTONY - Excessive Communication PROTOCOLS
12/08/15	
   @danielbryantuk	
  
Standardize Across the Organization
•  Choose one synchronous protocol
–  e.g. JSON over HTTP
•  Choose one asynchronous protocol
–  e.g. RabbitMQ
Don’t gold-plate, but know your options: ProtoBuf, Thrift, ZeroMQ, MQTT
12/08/15	
   @danielbryantuk	
  
Enterprise communication (Beam me up?)
12/08/15	
   @danielbryantuk	
  
www.dzone.com/research/guide-­‐to-­‐enterprise-­‐integraCon	
  	
  
3. GREED - All your service are Belong to us…
12/08/15	
   @danielbryantuk	
  
How Do Committees Invent?
“organizations which design systems ...
are constrained to produce designs which are copies of the
communication structures of these organizations”
- Melvin Conway, 1968
12/08/15	
   @danielbryantuk	
  
12/08/15	
   @danielbryantuk	
  
Dev	
   QA	
   Ops	
  
Hand-­‐off	
  delays	
  Hand-­‐off	
  delays	
  
Slow	
  feedback	
   Slow	
  feedback	
  
Lack	
  of	
  cohesion,	
  shared	
  understanding	
  and	
  joint	
  accountability	
  
Front-­‐end	
   Database	
  
Middleware	
  
12/08/15	
   @danielbryantuk	
  
Technical problems are often people problems...
12/08/15	
   @danielbryantuk	
  
bit.ly/1L43U4H	
  	
  
Cross-functional Teams
•  Spotify (bit.ly/1C46ZKo)
–  Culture
•  Amazon (bit.ly/1F3Dgkm)
–  Communication
•  Gilt (gi.lt/1rgyWvO)
–  Strategic alignment
12/08/15	
   @danielbryantuk	
  
Conway was Telling the Truth... Deal with it!
12/08/15	
   @danielbryantuk	
  
Final Thoughts for the organisation
Can your business team take advantage of microservices?
12/08/15	
   @danielbryantuk	
  
Inspiration (for the business)
12/08/15	
   @danielbryantuk	
  
bit.ly/1Mi3hDi	
  	
  
4. SLOTH - Creating a distributed monolith
12/08/15	
   @danielbryantuk	
  
Can’t Deploy Services Independently?
Check your ‘bounded contexts’ and/or data ‘fault-lines’
(Also, check you have separated deploy and release)
12/08/15	
   @danielbryantuk	
  
Can’t Deploy Services Independently?
•  Schema-first design
–  Michael Bryzek (Gilt): APIdoc
•  Consumer-driven Contracts FTW
–  Martin Fowler: CDC - A Service Evolution Pattern
“CDC is BDD for microservices”
12/08/15	
   @danielbryantuk	
  
Architecture - not a Dirty Word
•  Technical leadership (bit.ly/1EUwpLl)
•  Communication (bit.ly/1Ia3u8o)
•  Promote shared understanding
•  ‘Just enough’ up front design
12/08/15	
   @danielbryantuk	
  
5. WRATH - Blowing up when bad things happen
12/08/15	
   @danielbryantuk	
  
Bring in Michael Nygard (Or some monkeys)
12/08/15	
   @danielbryantuk	
  
Distributed computing - your new best friend
•  Notes on distributed systems for young bloods
–  Jeff hodges (bit.ly/1pKVepz)
•  8 Fallacies of distributed computing
–  Sun Microsystems, ROTEM-GAL-OZ (bit.ly/1IEpFC0)
•  Distributed systems theory for the distributed systems engineer
–  Henry Robinson (bit.ly/1qcxqZ3)
12/08/15	
   @danielbryantuk	
  
OPERATIONAL Concerns: Technical
•  Continuous delivery is a microservice prerequisite
– Rapid provisioning
– Basic monitoring
– Rapid application deployment
•  I.E. Agile & DevOps
12/08/15	
   @danielbryantuk	
  
Operational Concerns: Social
•  Failure happens all the time... Get used to it!
•  'Gameday' or 'Disaster in recovery testing' (Real) Scenarios
•  Failure injection testing (FIT):
– Building 'Failure as a Service' at Netflix without the Simian Army
12/08/15	
   @danielbryantuk	
  
Share the pain...
12/08/15	
   @danielbryantuk	
  
“Dev-on-call”
An occasional spike to the head
is a good thing...
...metaphorically speaking
•  You write it, you run it
–  Accountability
–  Shared responsibility
–  Communication
12/08/15	
   @danielbryantuk	
  
6. ENVY - The shared SINGLE domain fallacy
12/08/15	
   @danielbryantuk	
  
One Model to Rule Them All...
•  One model…
–  Breaks encapsulation
–  Introduces coupling
•  Know your DDD
–  Entities
–  Value Objects
–  Aggregates and Roots
12/08/15	
   @danielbryantuk	
  
But... how do I generate Reports?
•  Aggregated reporting pattern
– Pull by service
•  Data Pumps
– Push (Event sourcing?)
12/08/15	
   @danielbryantuk	
  
7. PRIDE - testing in the world of transience
12/08/15	
   @danielbryantuk	
  
People are surprisingly quiet about this...
12/08/15	
   @danielbryantuk	
  
marCnfowler.com/arCcles/microservice-­‐tesCng/	
  	
  
Testing With Microservices is Difficult...
•  Invest in your build pipeline testing
– Serenity BDD
– Wiremock / Saboteur
– Jenkins Performance plugin
12/08/15	
   @danielbryantuk	
  
Testing With Microservices is Difficult...
•  Do it in production(?)
–  Netflix
–  Hailo
–  Gilt
•  This is an advanced pattern!
–  Automation is essential!
12/08/15	
   @danielbryantuk	
  
Summary
1. LUST - Using the latest and greatest tech…
2. GLUTTONY - Excessive communication protocols
3. GREED - All your service are belong to us…
4. SLOTH - Creating a distributed monolith
5. WRATH - Blowing up when bad things happen
6. ENVY - The shared single domain fallacy
7. PRIDE - testing in the world of transience
12/08/15	
   @danielbryantuk	
  
12/08/15	
   @danielbryantuk	
  
THANKS...
@danielbryantuk
daniel.bryant@opencredo.com
https://www.parleys.com/tutorial/seven-deadly-sins-microservices
(Credit to Tareq Abedrabbo for inspiration/guidance)
12/08/15	
   @danielbryantuk	
  

Weitere ähnliche Inhalte

Was ist angesagt?

OOP2016 "The Business Behind Microservices: Organisational, Architectural and...
OOP2016 "The Business Behind Microservices: Organisational, Architectural and...OOP2016 "The Business Behind Microservices: Organisational, Architectural and...
OOP2016 "The Business Behind Microservices: Organisational, Architectural and...
Daniel Bryant
 

Was ist angesagt? (19)

JAX London 2016: "Empathy - The hidden ingredient of good software development?"
JAX London 2016: "Empathy - The hidden ingredient of good software development?"JAX London 2016: "Empathy - The hidden ingredient of good software development?"
JAX London 2016: "Empathy - The hidden ingredient of good software development?"
 
Microservice Summit 2016 "Microservices: The Organisational and People Impact"
Microservice Summit 2016 "Microservices: The Organisational and People Impact"Microservice Summit 2016 "Microservices: The Organisational and People Impact"
Microservice Summit 2016 "Microservices: The Organisational and People Impact"
 
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
OSCON EU 2016 "Seven (More) Deadly Sins of Microservices"
 
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
vJUG24 2016 "Seven (More) Deadly Sins of Microservice"
 
OOP/MM 2017: "Seven (More) Deadly Sins of Microservices"
OOP/MM 2017: "Seven (More) Deadly Sins of Microservices"OOP/MM 2017: "Seven (More) Deadly Sins of Microservices"
OOP/MM 2017: "Seven (More) Deadly Sins of Microservices"
 
JavaOne 2016 "Java, Microservices, Cloud and Containers"
JavaOne 2016 "Java, Microservices, Cloud and Containers"JavaOne 2016 "Java, Microservices, Cloud and Containers"
JavaOne 2016 "Java, Microservices, Cloud and Containers"
 
OOP2016 "The Business Behind Microservices: Organisational, Architectural and...
OOP2016 "The Business Behind Microservices: Organisational, Architectural and...OOP2016 "The Business Behind Microservices: Organisational, Architectural and...
OOP2016 "The Business Behind Microservices: Organisational, Architectural and...
 
QCon NY 2016: "The Seven (More) Deadly Sins of Microservices"
QCon NY 2016: "The Seven (More) Deadly Sins of Microservices"QCon NY 2016: "The Seven (More) Deadly Sins of Microservices"
QCon NY 2016: "The Seven (More) Deadly Sins of Microservices"
 
MicroManchester 2016 "Microservices from 30000ft: Organisation, Architecture ...
MicroManchester 2016 "Microservices from 30000ft: Organisation, Architecture ...MicroManchester 2016 "Microservices from 30000ft: Organisation, Architecture ...
MicroManchester 2016 "Microservices from 30000ft: Organisation, Architecture ...
 
BCS 2016 "Intro to Microservices (and the Seven Deadly Sins)"
BCS 2016 "Intro to Microservices (and the Seven Deadly Sins)"BCS 2016 "Intro to Microservices (and the Seven Deadly Sins)"
BCS 2016 "Intro to Microservices (and the Seven Deadly Sins)"
 
Micro Manchester Meetup: "The Seven (More) Deadly Sins of Microservices"
Micro Manchester Meetup: "The Seven (More) Deadly Sins of Microservices"Micro Manchester Meetup: "The Seven (More) Deadly Sins of Microservices"
Micro Manchester Meetup: "The Seven (More) Deadly Sins of Microservices"
 
OReilly SACON 2016 "A Practical Guide for Continuous Delivery with Containers"
OReilly SACON 2016 "A Practical Guide for Continuous Delivery with Containers"OReilly SACON 2016 "A Practical Guide for Continuous Delivery with Containers"
OReilly SACON 2016 "A Practical Guide for Continuous Delivery with Containers"
 
MicroManchester 2016 "A Brief Guide to Microservices"
MicroManchester 2016 "A Brief Guide to Microservices"MicroManchester 2016 "A Brief Guide to Microservices"
MicroManchester 2016 "A Brief Guide to Microservices"
 
CTOs in London "The Challenges of Evaluating Development Technology Within th...
CTOs in London "The Challenges of Evaluating Development Technology Within th...CTOs in London "The Challenges of Evaluating Development Technology Within th...
CTOs in London "The Challenges of Evaluating Development Technology Within th...
 
ContainerSched 2015 "Our journey to world (gifting) domination - how notonthe...
ContainerSched 2015 "Our journey to world (gifting) domination - how notonthe...ContainerSched 2015 "Our journey to world (gifting) domination - how notonthe...
ContainerSched 2015 "Our journey to world (gifting) domination - how notonthe...
 
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
 
The London Web "Empathy - The Hidden Ingredient of Good Software Development"
The London Web "Empathy - The Hidden Ingredient of Good Software Development"The London Web "Empathy - The Hidden Ingredient of Good Software Development"
The London Web "Empathy - The Hidden Ingredient of Good Software Development"
 
LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"
LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"
LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"
 
Perpetual Beta Final
Perpetual Beta FinalPerpetual Beta Final
Perpetual Beta Final
 

Ähnlich wie DLJCJUG 2015: The Seven Deadly Sins of Microservices

Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
OpenCredo
 
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
Daniel Bryant
 

Ähnlich wie DLJCJUG 2015: The Seven Deadly Sins of Microservices (20)

muCon 2016: "Seven (More) Deadly Sins of Microservices"
muCon 2016: "Seven (More) Deadly Sins of Microservices"muCon 2016: "Seven (More) Deadly Sins of Microservices"
muCon 2016: "Seven (More) Deadly Sins of Microservices"
 
Lisbon DevOps: "Seven (More) Deadly Sins of Microservices"
Lisbon DevOps: "Seven (More) Deadly Sins of Microservices"Lisbon DevOps: "Seven (More) Deadly Sins of Microservices"
Lisbon DevOps: "Seven (More) Deadly Sins of Microservices"
 
QCon NY 2015 "The Seven Deadly Sins of Microservices"
QCon NY 2015 "The Seven Deadly Sins of Microservices"QCon NY 2015 "The Seven Deadly Sins of Microservices"
QCon NY 2015 "The Seven Deadly Sins of Microservices"
 
The seven deadly sins of microservices
The seven deadly sins of microservicesThe seven deadly sins of microservices
The seven deadly sins of microservices
 
The seven more deadly sins of microservices final
The seven more deadly sins of microservices finalThe seven more deadly sins of microservices final
The seven more deadly sins of microservices final
 
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
Haufe #msaday - Seven More Deadly Sins of Microservices by Daniel Bryant
 
Microservices: The Organizational and People Impact
Microservices: The Organizational and People ImpactMicroservices: The Organizational and People Impact
Microservices: The Organizational and People Impact
 
JAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
JAXDevOps 2017 "The Seven (More) Deadly Sins of MicroservicesJAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
JAXDevOps 2017 "The Seven (More) Deadly Sins of Microservices
 
LMSUG 2015 "The Business Behind Microservices: Organisational, Architectural ...
LMSUG 2015 "The Business Behind Microservices: Organisational, Architectural ...LMSUG 2015 "The Business Behind Microservices: Organisational, Architectural ...
LMSUG 2015 "The Business Behind Microservices: Organisational, Architectural ...
 
Devoxx US 2017 "The Seven (More) Deadly Sins of Microservices"
Devoxx US 2017 "The Seven (More) Deadly Sins of Microservices"Devoxx US 2017 "The Seven (More) Deadly Sins of Microservices"
Devoxx US 2017 "The Seven (More) Deadly Sins of Microservices"
 
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
LJC Mashup "Building Java Microservices for the Cloud && Chuck Norris Doesn't...
 
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
DCEU 18: Continuous Delivery with Docker Containers and Java: The Good, the B...
 
DockerCon EU 2018 "Continuous Delivery with Docker and Java"
DockerCon EU 2018 "Continuous Delivery with Docker and Java"DockerCon EU 2018 "Continuous Delivery with Docker and Java"
DockerCon EU 2018 "Continuous Delivery with Docker and Java"
 
Thinking fast and slow with software development - Daniel Bryant
Thinking fast and slow with software development - Daniel BryantThinking fast and slow with software development - Daniel Bryant
Thinking fast and slow with software development - Daniel Bryant
 
Jax London 2018: "Testing Microservices from Development to Production"
Jax London 2018: "Testing Microservices from Development to Production"Jax London 2018: "Testing Microservices from Development to Production"
Jax London 2018: "Testing Microservices from Development to Production"
 
GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"
GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"
GOTO Chicago/CraftConf 2017 "The Seven (More) Deadly Sins of Microservices"
 
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"
 
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
Continuous Delivery with Containers: The Good, the Bad, and the Ugly - Daniel...
 
microXchg 2017: "Microservices: The People and Organisational Impact"
microXchg 2017: "Microservices: The People and Organisational Impact"microXchg 2017: "Microservices: The People and Organisational Impact"
microXchg 2017: "Microservices: The People and Organisational Impact"
 
Continuous Delivery with Containers: The Good, the Bad, and the Ugly
Continuous Delivery with Containers: The Good, the Bad, and the UglyContinuous Delivery with Containers: The Good, the Bad, and the Ugly
Continuous Delivery with Containers: The Good, the Bad, and the Ugly
 

Mehr von Daniel Bryant

Mehr von Daniel Bryant (20)

ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
ITKonekt 2023: The Busy Platform Engineers Guide to API Gateways
 
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...
 
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"
 
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...
 
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
 
Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"Fall 22: "From Kubernetes to PaaS to... err, what's next"
Fall 22: "From Kubernetes to PaaS to... err, what's next"
 
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
 
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...
 
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...
 
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"
 
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextKubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
KubeCon EU 2022: From Kubernetes to PaaS to Err What's Next
 
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...
 
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"
 
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
 
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...
 
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
 
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"
 
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...
 
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...
 
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (20)

Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 

DLJCJUG 2015: The Seven Deadly Sins of Microservices

  • 1. The Seven DEADLY SINS OF Microservices Daniel Bryant @danielbryantuk OpencRedo (WITH Credit to Tareq Abedrabbo)
  • 2. The Seven Deadly Sins 1. LUST … 2. GLUTTONY 3. GREED… 4. SLOTH 5. WRATH 6. ENVY 7. PRIDE 12/08/15   @danielbryantuk  
  • 3. The Seven Deadly Sins (of Microservices) 1. LUST - Using the latest and greatest tech… 2. GLUTTONY - Excessive communication protocols 3. GREED - All your service are belong to us… 4. SLOTH - Creating a distributed monolith 5. WRATH - Blowing up when bad things happen 6. ENVY - The shared single domain fallacy 7. PRIDE - testing in the world of transience 12/08/15   @danielbryantuk  
  • 4. Who Am I? •  Principle Consultant at OpenCredo ü  Agile, CI/CD, DevOps ü  Microservices and cloud ü  Docker, Mesos and Kubernetes •  London Java Community Associate •  Adopt OpenJDK and JSR •  InfoQ Editor and DZone MVB 12/08/15   @danielbryantuk  
  • 5. So, What is a microservice? “Loosely coupled service oriented architecture with bounded contexts” Adrian Cockcroft “Applications that fit in your head” James Lewis 12/08/15   @danielbryantuk  
  • 6. 1. Lust - Using THE LATEST and Greatest Tech… 12/08/15   @danielbryantuk  
  • 7. Microservices... They solve all of our problems, Right? 12/08/15   @danielbryantuk  
  • 8. No... Not necessarily good for speed 12/08/15   @danielbryantuk   skillsma7er.com/skillscasts/6143-­‐microservices-­‐for-­‐speed     AddiConal  Reading!!   marCnfowler.com/bliki/ MonolithFirst.html    
  • 9. No... Check your architecture/design skills “If you can't build a [well-structured] monolith, what makes you think microservices are the answer?” Simon Brown (bit.ly/1n7D0vp) 12/08/15   @danielbryantuk  
  • 10. No... Check your architecture/design skills 12/08/15   @danielbryantuk  
  • 11. No... Operational maturity is vital 12/08/15   @danielbryantuk   marCnfowler.com/bliki/MicroservicePrerequisites.html    
  • 12. Microservices are very useful But check your use case... ...Evaluation is a key skill 12/08/15   @danielbryantuk  
  • 13. Evaluation “I will postpone using this shiny new framework until my peers have validated the proposed benefits with rigorous scientific experiments” - Said by no programmer …ever 12/08/15   @danielbryantuk  
  • 14. Pick Your (Technical) Battles...… •  As Dan McKinley says, “Choose Boring Technology” – Optimize globally across organisation •  Java and Spring (Boot) are perfectly acceptable •  ... As are tomcat/jetty 12/08/15   @danielbryantuk  
  • 15. Matt Raible’s Comparison Framework 12/08/15   @danielbryantuk  
  • 16. 2. GLUTTONY - Excessive Communication PROTOCOLS 12/08/15   @danielbryantuk  
  • 17. Standardize Across the Organization •  Choose one synchronous protocol –  e.g. JSON over HTTP •  Choose one asynchronous protocol –  e.g. RabbitMQ Don’t gold-plate, but know your options: ProtoBuf, Thrift, ZeroMQ, MQTT 12/08/15   @danielbryantuk  
  • 18. Enterprise communication (Beam me up?) 12/08/15   @danielbryantuk   www.dzone.com/research/guide-­‐to-­‐enterprise-­‐integraCon    
  • 19. 3. GREED - All your service are Belong to us… 12/08/15   @danielbryantuk  
  • 20. How Do Committees Invent? “organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations” - Melvin Conway, 1968 12/08/15   @danielbryantuk  
  • 21. 12/08/15   @danielbryantuk   Dev   QA   Ops   Hand-­‐off  delays  Hand-­‐off  delays   Slow  feedback   Slow  feedback   Lack  of  cohesion,  shared  understanding  and  joint  accountability   Front-­‐end   Database   Middleware  
  • 23. Technical problems are often people problems... 12/08/15   @danielbryantuk   bit.ly/1L43U4H    
  • 24. Cross-functional Teams •  Spotify (bit.ly/1C46ZKo) –  Culture •  Amazon (bit.ly/1F3Dgkm) –  Communication •  Gilt (gi.lt/1rgyWvO) –  Strategic alignment 12/08/15   @danielbryantuk  
  • 25. Conway was Telling the Truth... Deal with it! 12/08/15   @danielbryantuk  
  • 26. Final Thoughts for the organisation Can your business team take advantage of microservices? 12/08/15   @danielbryantuk  
  • 27. Inspiration (for the business) 12/08/15   @danielbryantuk   bit.ly/1Mi3hDi    
  • 28. 4. SLOTH - Creating a distributed monolith 12/08/15   @danielbryantuk  
  • 29. Can’t Deploy Services Independently? Check your ‘bounded contexts’ and/or data ‘fault-lines’ (Also, check you have separated deploy and release) 12/08/15   @danielbryantuk  
  • 30. Can’t Deploy Services Independently? •  Schema-first design –  Michael Bryzek (Gilt): APIdoc •  Consumer-driven Contracts FTW –  Martin Fowler: CDC - A Service Evolution Pattern “CDC is BDD for microservices” 12/08/15   @danielbryantuk  
  • 31. Architecture - not a Dirty Word •  Technical leadership (bit.ly/1EUwpLl) •  Communication (bit.ly/1Ia3u8o) •  Promote shared understanding •  ‘Just enough’ up front design 12/08/15   @danielbryantuk  
  • 32. 5. WRATH - Blowing up when bad things happen 12/08/15   @danielbryantuk  
  • 33. Bring in Michael Nygard (Or some monkeys) 12/08/15   @danielbryantuk  
  • 34. Distributed computing - your new best friend •  Notes on distributed systems for young bloods –  Jeff hodges (bit.ly/1pKVepz) •  8 Fallacies of distributed computing –  Sun Microsystems, ROTEM-GAL-OZ (bit.ly/1IEpFC0) •  Distributed systems theory for the distributed systems engineer –  Henry Robinson (bit.ly/1qcxqZ3) 12/08/15   @danielbryantuk  
  • 35. OPERATIONAL Concerns: Technical •  Continuous delivery is a microservice prerequisite – Rapid provisioning – Basic monitoring – Rapid application deployment •  I.E. Agile & DevOps 12/08/15   @danielbryantuk  
  • 36. Operational Concerns: Social •  Failure happens all the time... Get used to it! •  'Gameday' or 'Disaster in recovery testing' (Real) Scenarios •  Failure injection testing (FIT): – Building 'Failure as a Service' at Netflix without the Simian Army 12/08/15   @danielbryantuk  
  • 37. Share the pain... 12/08/15   @danielbryantuk  
  • 38. “Dev-on-call” An occasional spike to the head is a good thing... ...metaphorically speaking •  You write it, you run it –  Accountability –  Shared responsibility –  Communication 12/08/15   @danielbryantuk  
  • 39. 6. ENVY - The shared SINGLE domain fallacy 12/08/15   @danielbryantuk  
  • 40. One Model to Rule Them All... •  One model… –  Breaks encapsulation –  Introduces coupling •  Know your DDD –  Entities –  Value Objects –  Aggregates and Roots 12/08/15   @danielbryantuk  
  • 41. But... how do I generate Reports? •  Aggregated reporting pattern – Pull by service •  Data Pumps – Push (Event sourcing?) 12/08/15   @danielbryantuk  
  • 42. 7. PRIDE - testing in the world of transience 12/08/15   @danielbryantuk  
  • 43. People are surprisingly quiet about this... 12/08/15   @danielbryantuk   marCnfowler.com/arCcles/microservice-­‐tesCng/    
  • 44. Testing With Microservices is Difficult... •  Invest in your build pipeline testing – Serenity BDD – Wiremock / Saboteur – Jenkins Performance plugin 12/08/15   @danielbryantuk  
  • 45. Testing With Microservices is Difficult... •  Do it in production(?) –  Netflix –  Hailo –  Gilt •  This is an advanced pattern! –  Automation is essential! 12/08/15   @danielbryantuk  
  • 46. Summary 1. LUST - Using the latest and greatest tech… 2. GLUTTONY - Excessive communication protocols 3. GREED - All your service are belong to us… 4. SLOTH - Creating a distributed monolith 5. WRATH - Blowing up when bad things happen 6. ENVY - The shared single domain fallacy 7. PRIDE - testing in the world of transience 12/08/15   @danielbryantuk