SlideShare a Scribd company logo
@crichardson
A pattern language for
microservices
Chris Richardson
Founder of the original CloudFoundry.com
Author of POJOs in Action
@crichardson
chris@chrisrichardson.net
http://plainoldobjects.com
http://microservices.io
http://eventuate.io
@crichardson
Presentation goal
Why patterns and pattern
languages?
A pattern language for
microservices
@crichardson
About Chris
@crichardson
About Chris
Consultant and trainer focusing
on microservices
(http://www.chrisrichardson.net/)
@crichardson
About Chris
Founder of a startup that is creating
a platform that makes it easy for
application developers write
microservices
(http://bit.ly/trialeventuate)
@crichardson
For more information
https://github.com/cer/event-sourcing-examples
http://microservices.io
http://plainoldobjects.com/
https://twitter.com/crichardson
http://eventuate.io/
@crichardson
Agenda
Why a pattern language for microservices?
Core patterns
Deployment patterns
Communication patterns
@crichardson
In 1986…
http://en.wikipedia.org/wiki/Fred_Brooks
@crichardson
Yet almost 30 years later
developers are still
passionately arguing over
“silver bullets”
@crichardson
Suck/Rock Dichotomy
Spring vs. Java EE
JavaScript vs. Java
Functional programming vs. Object-oriented
http://nealford.com/memeagora/2009/08/05/suck-rock-dichotomy.html
Containers vs. Virtual Machines
@crichardson
Gartner Hype Cycle
http://upload.wikimedia.org/wikipedia/commons/b/bf/Hype-Cycle-General.png
It’s
awesome
It’s not
awesome
Trade-offs
understood
@crichardson
How we make decisions
Decide
using
emotions
Rationalize with
our intellect
http://en.wikipedia.org/wiki/Mahout
@crichardson
We need a better way
to discuss and think
about technology
@crichardson
What’s a pattern?
Reusable solution
to a problem
occurring
in a particular context
@crichardson
The structure of a pattern
=
Great framework for discussing
and thinking about technology
@crichardson
The structure of a pattern
Resulting context
aka the situation
Name
Context
Problem
Related patterns
(conflicting) issues
etc to address
Forces
Solution
@crichardson
Resulting context
Benefits
Drawbacks
Issues to resolve
@crichardson
Related patterns
Alternative solutions
Solutions to problems
introduced by this pattern
Pattern language
A collection of related
patterns that solve problems
in a particular domain
Relationships
Pattern A results in a
context that has a problem
solved by Pattern B
Patterns A and B solve the
same problem
Pattern A is a
specialization of pattern B
http://en.wikipedia.org/wiki/A_Pattern_Language
Access to Water
Promenade
Local townhall
Intimacy gradient
Light on two sides
@crichardson
Meta-pattern
Problem: How to talk/reason about technology?
Solution: Use the pattern format
Benefit: More objective
Drawback: Less exciting
Context: Emotional software development culture
Related patterns: It’s awesome!
@crichardson
Monolithic
architecture
Microservice
architecture
API gateway
Client-side discovery
Server-side
discovery
Service registry
Self registration 3rd party registration
Multiple Services
per host
Single Service per
Host
Service-per-
Container
Deployment
Discovery
Core
Communication
Service-per-VM
Partitioning
Messaging
Remote Procedure
Invocation
Style
Motivating
Pattern
Solution
Pattern
Solution A Solution B
General Specific
Work
in
progress
http://microservices.io/
@crichardson
Agenda
Why a pattern language for microservices?
Core patterns
Deployment patterns
Communication patterns
@crichardson
@crichardson
Let’s imagine you are
building an online store
Browser/
Client
SQL
Database
Review Service
Product Info
Service
Recommendation
Service
StoreFrontUI
Order Service
HTML
REST/JSON
@crichardson
Problem: what’s the
deployment architecture?
@crichardson
Forces
There is a team of developers that must be productive
The application must be easy to understand and modify
Do continuous deployment
Run multiple instances for scalability and availability
Use emerging technologies (frameworks, programming
languages, etc)
@crichardson
Tomcat
Pattern: Monolithic
architecture
Browser/
Client
WAR/EAR
MySQL
Database
Review Service
Product Info
Service
Recommendation
Service
StoreFrontUI
Order Service
HTML
REST/JSON
develop
test
deploy
Simple to
scale
@crichardson
Examples everywhere
@crichardson
But when the application is
large …
@crichardson
Intimidates developers
@crichardson
Obstacle to frequent
deployments
Need to redeploy everything to change one component
Interrupts long running background (e.g. Quartz) jobs
Increases risk of failure
Fear of change
Updates will happen less often - really long QA cycles
e.g. Makes A/B testing UI really difficult
Eggs in
one basket
@crichardson
Overloads your IDE and
container
Slows down development
@crichardson
Lots of coordination and
communication required
Obstacle to scaling
development
I want to update
the UI
But
the backend is not working
yet!
@crichardson
Requires long-term commitment
to a technology stack
@crichardson
Pattern: Microservice
architecture
@crichardson
Apply functional
decomposition
X axis
- horizontal duplication
Z
axis
-data
partitioning
Y axis -
functional
decomposition
Scale
by
splitting
sim
ilar
things
Scale by
splitting
different things
@crichardson
Product Info
Microservice architecture
Product Info
Service
Recommendation
Service
Review
Service
Order
Service
Browse Products
UI
Checkout UI
Order management
UI
Account
management UI
Apply X-axis and Z-axis scaling
to each service independently
@crichardson
Examples
http://highscalability.com/amazon-architecture
http://techblog.netflix.com/
http://www.addsimplicity.com/downloads/
eBaySDForum2006-11-29.pdf
http://queue.acm.org/detail.cfm?id=1394128
~600 services
100-150 services to build a page
@crichardson
Benefits
Smaller, simpler apps
Easier to understand and develop
Less jar/classpath hell - who needs OSGI?
Faster to build and deploy
Scales development: develop, deploy and scale each service independently
Improves fault isolation
Eliminates long-term commitment to a single technology stack
System level architecture vs. service level architecture
Easily and safely experiment with new technologies
@crichardson
Drawbacks
Complexity of developing a distributed system
Implementing inter-process communication
Handling partial failures
Implementing business transactions that span multiple databases
(without 2PC)
Complexity of testing a distributed system
Complexity of deploying and operating a distributed system
Managing the development and deployment of features that span
multiple services
Fortunately solutions exists
@crichardson
The benefits typically
outweigh the drawbacks
for
large, complex applications
@crichardson
Issues to address
How to deploy the services?
How do the services communicate?
How do clients of the application communicate with the
services?
How to partition the system into services?
How to deal with distributed data management problems?
Come to tomorrow’s talk at 9am
….
@crichardson
Agenda
Why a pattern language for microservices?
Core patterns
Deployment patterns
Communication patterns
@crichardson
We have applied the
microservices pattern:
How to deploy the services?
@crichardson
Forces
Services are written using a variety of languages, frameworks, and
framework versions
Each service consists of multiple service instances for throughput and
availability
Building and deploying a service must be fast
Service must be deployed and scaled independently
Service instances need to be isolated
Resources consumed by a service must be constrained
Deployment must be cost-effective
@crichardson
@crichardson
Pattern: Multiple service
instances per host
Host (Physical or VM)
Service-A
Instance-1
Service-B
Instance-2
Service-C
Instance-2
Process
WAR
OSGI bundle
Benefits and drawbacks
Benefits
Efficient resource utilization
Fast deployment
Drawbacks
Poor/Terrible isolation
Poor visibility (with WAR/OSGI
deployment)
Difficult to limit resource utilization
Risk of dependency version
conflicts
Poor encapsulation of
implementation technology
@crichardson
Pattern: Service instance per
host
@crichardson
Pattern: Service per VM host
Service
VM
image
VM
Service
VM
Service
VM
Service
packaged as
deployed as
@crichardson
Example
http://techblog.netflix.com/
~600 services
packer.io is a great tool
Benefits and drawbacks
Benefits
Great isolation
Great manageability
VM encapsulates
implementation technology
Leverage AWS
infrastructure for
Autoscaling/Load balancing

Drawbacks
Less efficient resource
utilization
Slow deployment
@crichardson
VM
VM
Pattern: Service per Container
host
Service
Container
image
Container
Service
Container
Service
Container
Service
packaged as
deployed as
@crichardson
Examples
Benefits and drawbacks
Benefits
Great isolation
Great manageability
Container encapsulates
implementation technology
Efficient resource utilization
Fast deployment
Drawbacks
Immature infrastructure for
deploying containers
@crichardson
Agenda
Why a pattern language for microservices?
Core patterns
Deployment patterns
Communication patterns
@crichardson
Communication issues
System Client
Service A
Service B
Service C
The System
How do clients of the
system interact with the
services?
How do services
within the system
interact?
@crichardson
@crichardson
The problem of discovery
Service
Client
Service
Instance A
Service
Instance B
Service
Instance C
?
10.4.3.1:8756
10.4.3.99:4545
10.4.3.20:333
Client or API
gateway
Dynamically
changing
Service
Instance A
Service
Instance B
Service
Instance C
10.4.3.1:8756
10.4.3.99:4545
10.4.3.20:333
How to load
balance?
Dynamically
assigned
@crichardson
Pattern: Client-side discovery
Service
Client
Registry-
aware
HTTP
Client
Service
Registry
Service
Instance A
Service
Instance B
Service
Instance C
10.4.3.1:8756
10.4.3.99:4545
10.4.3.20:333
register
query
request
load
balance
@crichardson
Example: Netflix Eureka and Ribbon
https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance
https://github.com/Netflix/ribbon
Benefits and drawbacks
Benefits
Flexible, application-specific
load balancing
Fewer network hops and
moving parts compared to
Server-side discovery

Drawbacks
Couples the client to the
Service Registry
Need implement client-side
discovery and load balancing
logic in multiple languages/
frameworks
Service Registry is yet
another moving part to setup
and operate - highly available
@crichardson
Pattern: Server-side discovery
Service
Client
Router
Service
Registry
Service
Instance A
Service
Instance B
Service
Instance C
10.4.3.1:8756
10.4.3.99:4545
10.4.3.20:333
register
query
request
request
load
balance
@crichardson
Example
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/
DeveloperGuide/vpc-loadbalancer-types.html
Internal
ELB Internal
ELB
Public
ELB
Benefits and drawbacks
Benefits
Simpler client code
Built-in to some cloud/
container environments, e.g.
AWS ELB, Kubernetes,
Marathon
Drawbacks
Limited to (generic) load
balancing algorithms
provided by router
More network hops
Router and Service Registry
is yet another moving part
to setup and operate -
highly available
@crichardson
Summary: Patterns and pattern
languages are a great way to …
Think about technology
Discuss technology
Apply technology
@crichardson
Summary: The Microservices pattern
language is a great way to …
Think about microservices
Discuss microservices
Apply microservices (or not)
@crichardson
@crichardson chris@chrisrichardson.net
http://bit.ly/trialeventuate
http://plainoldobjects.com http://microservices.io
Questions?

More Related Content

Viewers also liked (8)

PDF
A pattern language for microservices (#gluecon #gluecon2016)
Chris Richardson
 
PDF
Microservices + Events + Docker = A Perfect Trio (dockercon)
Chris Richardson
 
PDF
Developing microservices with aggregates (SpringOne platform, #s1p)
Chris Richardson
 
PDF
Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Chris Richardson
 
PDF
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Chris Richardson
 
PDF
Stateless authentication for microservices
Alvaro Sanchez-Mariscal
 
PDF
REST vs. Messaging For Microservices
Eberhard Wolff
 
PDF
Developing applications with a microservice architecture (SVforum, microservi...
Chris Richardson
 
A pattern language for microservices (#gluecon #gluecon2016)
Chris Richardson
 
Microservices + Events + Docker = A Perfect Trio (dockercon)
Chris Richardson
 
Developing microservices with aggregates (SpringOne platform, #s1p)
Chris Richardson
 
Developing event-driven microservices with event sourcing and CQRS (Shanghai)
Chris Richardson
 
Handling Eventual Consistency in JVM Microservices with Event Sourcing (javao...
Chris Richardson
 
Stateless authentication for microservices
Alvaro Sanchez-Mariscal
 
REST vs. Messaging For Microservices
Eberhard Wolff
 
Developing applications with a microservice architecture (SVforum, microservi...
Chris Richardson
 

Similar to A pattern language for microservices - Chris Richardson (20)

PDF
A Pattern Language for Microservices (@futurestack)
Chris Richardson
 
PDF
A pattern language for microservices (melbourne)
Chris Richardson
 
PDF
Microservices pattern language (microxchg microxchg2016)
Chris Richardson
 
PDF
A pattern language for microservices
VMware Tanzu
 
PDF
Decompose that WAR? A pattern language for microservices (@QCON @QCONSP)
Chris Richardson
 
PDF
A Pattern Language for Microservices
Chris Richardson
 
PDF
Spring Days NYC - A pattern language for microservices
Chris Richardson
 
PDF
Kong Summit 2018 - Microservices: decomposing applications for testability an...
Chris Richardson
 
PDF
There is no such thing as a microservice! (oracle code nyc)
Chris Richardson
 
PDF
Saturn2017: No such thing as a microservice!
Chris Richardson
 
PDF
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Chris Richardson
 
PDF
Oracle Code Sydney - There is no such thing as a microservice!
Chris Richardson
 
PDF
Decomposing applications for deployability and scalability(SpringSource webinar)
Chris Richardson
 
PDF
SVCC Microservices: Decomposing Applications for Testability and Deployability
Chris Richardson
 
PDF
A pattern language for microservices (#SFMicroservices)
Chris Richardson
 
PDF
#JaxLondon keynote: Developing applications with a microservice architecture
Chris Richardson
 
PDF
Developing Applications with a Micro Service Architecture - Chris Richardson
JAXLondon2014
 
PDF
The microservice architecture: what, why, when and how?
Chris Richardson
 
PDF
Microservices: Decomposing Applications for Deployability and Scalability (ja...
Chris Richardson
 
PDF
RedisConf17 - A pattern language for microservices - Chris Richardson
Redis Labs
 
A Pattern Language for Microservices (@futurestack)
Chris Richardson
 
A pattern language for microservices (melbourne)
Chris Richardson
 
Microservices pattern language (microxchg microxchg2016)
Chris Richardson
 
A pattern language for microservices
VMware Tanzu
 
Decompose that WAR? A pattern language for microservices (@QCON @QCONSP)
Chris Richardson
 
A Pattern Language for Microservices
Chris Richardson
 
Spring Days NYC - A pattern language for microservices
Chris Richardson
 
Kong Summit 2018 - Microservices: decomposing applications for testability an...
Chris Richardson
 
There is no such thing as a microservice! (oracle code nyc)
Chris Richardson
 
Saturn2017: No such thing as a microservice!
Chris Richardson
 
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Chris Richardson
 
Oracle Code Sydney - There is no such thing as a microservice!
Chris Richardson
 
Decomposing applications for deployability and scalability(SpringSource webinar)
Chris Richardson
 
SVCC Microservices: Decomposing Applications for Testability and Deployability
Chris Richardson
 
A pattern language for microservices (#SFMicroservices)
Chris Richardson
 
#JaxLondon keynote: Developing applications with a microservice architecture
Chris Richardson
 
Developing Applications with a Micro Service Architecture - Chris Richardson
JAXLondon2014
 
The microservice architecture: what, why, when and how?
Chris Richardson
 
Microservices: Decomposing Applications for Deployability and Scalability (ja...
Chris Richardson
 
RedisConf17 - A pattern language for microservices - Chris Richardson
Redis Labs
 
Ad

More from JAXLondon_Conference (20)

PDF
Cassandra and Spark - Tim Berglund
JAXLondon_Conference
 
PPT
All change! How the new Economics of Cloud will make you think differently ab...
JAXLondon_Conference
 
PDF
The Unit Test is dead. Long live the Unit Test! - Colin Vipurs
JAXLondon_Conference
 
PDF
Stop guessing, start testing – mobile testing done right - Timo Euteneuer
JAXLondon_Conference
 
PDF
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
JAXLondon_Conference
 
PDF
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
JAXLondon_Conference
 
PPTX
Smoothing the continuous delivery path – a tale of two teams - Lyndsay Prewer
JAXLondon_Conference
 
PDF
VC from the inside - a techie's perspective - Adrian Colyer
JAXLondon_Conference
 
PDF
Use your type system; write less code - Samir Talwar
JAXLondon_Conference
 
PPTX
Thinking fast and slow with software development - Daniel Bryant
JAXLondon_Conference
 
PPTX
The java memory model and the mutability matrix of pain - Jamie Allen
JAXLondon_Conference
 
PDF
The art of shifting perspectives - Rachel Davies
JAXLondon_Conference
 
PDF
Spring Boot in the Web Tier - Dave Syer
JAXLondon_Conference
 
PDF
Microservices from dream to reality in an hour - Dr. Holly Cummins
JAXLondon_Conference
 
PPT
Love your architecture - Alexander von Zitzewitz
JAXLondon_Conference
 
PPTX
Lambdas puzzler - Peter Lawrey
JAXLondon_Conference
 
PDF
Java vs. Java Script for enterprise web applications - Chris Bailey
JAXLondon_Conference
 
PDF
Java generics past, present and future - Raoul-Gabriel Urma, Richard Warburton
JAXLondon_Conference
 
PDF
Java 8 best practices - Stephen Colebourne
JAXLondon_Conference
 
PPTX
Intuitions for scaling data centric architectures - Benjamin Stopford
JAXLondon_Conference
 
Cassandra and Spark - Tim Berglund
JAXLondon_Conference
 
All change! How the new Economics of Cloud will make you think differently ab...
JAXLondon_Conference
 
The Unit Test is dead. Long live the Unit Test! - Colin Vipurs
JAXLondon_Conference
 
Stop guessing, start testing – mobile testing done right - Timo Euteneuer
JAXLondon_Conference
 
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
JAXLondon_Conference
 
Java Generics Past, Present and Future - Richard Warburton, Raoul-Gabriel Urma
JAXLondon_Conference
 
Smoothing the continuous delivery path – a tale of two teams - Lyndsay Prewer
JAXLondon_Conference
 
VC from the inside - a techie's perspective - Adrian Colyer
JAXLondon_Conference
 
Use your type system; write less code - Samir Talwar
JAXLondon_Conference
 
Thinking fast and slow with software development - Daniel Bryant
JAXLondon_Conference
 
The java memory model and the mutability matrix of pain - Jamie Allen
JAXLondon_Conference
 
The art of shifting perspectives - Rachel Davies
JAXLondon_Conference
 
Spring Boot in the Web Tier - Dave Syer
JAXLondon_Conference
 
Microservices from dream to reality in an hour - Dr. Holly Cummins
JAXLondon_Conference
 
Love your architecture - Alexander von Zitzewitz
JAXLondon_Conference
 
Lambdas puzzler - Peter Lawrey
JAXLondon_Conference
 
Java vs. Java Script for enterprise web applications - Chris Bailey
JAXLondon_Conference
 
Java generics past, present and future - Raoul-Gabriel Urma, Richard Warburton
JAXLondon_Conference
 
Java 8 best practices - Stephen Colebourne
JAXLondon_Conference
 
Intuitions for scaling data centric architectures - Benjamin Stopford
JAXLondon_Conference
 
Ad

Recently uploaded (20)

PDF
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
PDF
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PDF
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
PDF
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
PPTX
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
PDF
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PPTX
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
PDF
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
PDF
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
PDF
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
PPTX
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
PDF
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
PPTX
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
PPTX
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
PPTX
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
Build It, Buy It, or Already Got It? Make Smarter Martech Decisions
bbedford2
 
Unlock Efficiency with Insurance Policy Administration Systems
Insurance Tech Services
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
HiHelloHR – Simplify HR Operations for Modern Workplaces
HiHelloHR
 
Wondershare PDFelement Pro Crack for MacOS New Version Latest 2025
bashirkhan333g
 
Agentic Automation Journey Series Day 2 – Prompt Engineering for UiPath Agents
klpathrudu
 
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
Help for Correlations in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Driver Easy Pro 6.1.1 Crack Licensce key 2025 FREE
utfefguu
 
Empower Your Tech Vision- Why Businesses Prefer to Hire Remote Developers fro...
logixshapers59
 
SAP Firmaya İade ABAB Kodları - ABAB ile yazılmıl hazır kod örneği
Salih Küçük
 
Download Canva Pro 2025 PC Crack Full Latest Version
bashirkhan333g
 
Empowering Asian Contributions: The Rise of Regional User Groups in Open Sour...
Shane Coughlan
 
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pptx
Varsha Nayak
 
OpenChain @ OSS NA - In From the Cold: Open Source as Part of Mainstream Soft...
Shane Coughlan
 
Finding Your License Details in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 

A pattern language for microservices - Chris Richardson