SlideShare a Scribd company logo
@crichardson
There is no such thing as a
microservice!
Chris Richardson
Founder of Eventuate.io
Founder of the original CloudFoundry.com
Author of POJOs in Action
@crichardson
chris@chrisrichardson.net
http://microservices.io
http://eventuate.io
http://plainoldobjects.com
Copyright © 2017. Chris Richardson Consulting, Inc. All rights reserved
@crichardson
Presentation goal
Define the Microservice Architecture
as an architectural style
Explain what that means and why it
matters
@crichardson
About Chris
@crichardson
About Chris
Consultant and trainer
focusing on modern
application architectures
including microservices
(http://www.chrisrichardson.net/)
@crichardson
About Chris
Founder of a startup that is creating
an open-source/SaaS platform
that simplifies the development of
transactional microservices
(http://eventuate.io)
@crichardson
About Chris
http://learnmicroservices.io
40% off
ctwcodefreeze18
@crichardson
Agenda
A brief refresher on software architecture
From monolith to microservices
Microservices != silver bullet
Applying the microservice pattern language
About software architecture
“The software architecture of a computing system is the
set of structures needed to reason about the system,
which comprise software elements, relations among
them, and properties of both.”
Documenting Software Architectures, Bass et al
@crichardson
Architecture
=
(elements, relations, properties)
@crichardson
Architecture
=
Boxes and lines 😄
@crichardson
Architecture is multi-dimensional
e.g. Structural, electrical, plumbing,
mechanical
Described by multiple views
View = (elements, relations, properties)
4+1 view model
Logical
View
Process
View
Deployment
View
Implementation
View
Scenarios
4+1 Logical view
Logical
View
Process
View
Deployment
View
Implementation
View
Scenarios
Elements: classes and packages
Relations: inheritance, associations, …
4+1 Implementation view
Logical
View
Process
View
Deployment
View
Implementation
View
Scenarios
Elements: modules and components
Relations: dependencies
4+1 Process view
Logical
View
Process
View
Deployment
View
Implementation
View
Scenarios
Elements: processes
Relations: IPC
4+1 Deployment view
Logical
View
Process
View
Deployment
View
Implementation
View
Scenarios
Elements: “machines”
Relations: networking
4+1 Scenarios
Logical
View
Process
View
Deployment
View
Implementation
View
Scenarios
Derived from use cases/stories
Animate the views
@crichardson
""… An architectural style determines
the vocabulary of components and
connectors that can be used in instances
of that style, together with a set of
constraints on how they can be
combined….. ””
David Garlan and Mary Shaw, An Introduction to Software
Architecture
@crichardson
Layered architectural style
Layer N
Layer N - 1
Layer N - 2
Well defined
responsibilities
Constrained
dependencies
Uses Uses
UsesUses
The role of architecture
Requirements
=
Functional requirements
+
Non-functional requirements (-ilities)
Domain
knowledge
Architecture
Important -ilities
Maintainability
Testability
Deployability
Evolvability
Scalability
Security
Reliability
…
https://en.wikipedia.org/wiki/Non-functional_requirement
Development
velocity
Sunday afternoon 😀
@crichardson
Businesses must innovate
faster
Build better software faster
@crichardson
Reducing lead time
Increasing deployment frequency
@crichardson
Modern software development: moving
fast and not breaking things!
46x
440x
24x
5x lower
Amazon: ~0.001%
Netflix: 16 minutes
@crichardson
Modern software development
Architecture:
Process:
Small, autonomous
teams
???
DevOps/Continuous delivery/deployment
Organization:
Agenda
A brief refresher on software architecture
From monolith to microservices
Microservices != silver bullet
Applying the microservice pattern language
@crichardson
Tomcat/App. Server
Traditional: Monolithic
architecture
Browser/
Client
WAR/EAR
MySQL
Database
Review
Management
Catalog
Management
Recommendation
Management
StoreFrontUI
Order
Management
HTML
REST/JSON
Logical view
Implementation view
@crichardson
The monolithic architecture
is an architectural style
that structures the application
as a single executable
component
Implementation view
-ilities of small monoliths
Maintainability
Testability
Deployability
…
https://en.wikipedia.org/wiki/Non-functional_requirement
😄
@crichardson
But successful applications
keep growing….
Development
Team
Application
@crichardson
… and growing
Development
Team A
ApplicationDevelopment
Team B
Development
Team C
@crichardson
Eventually:
agile
development
and deployment
becomes
impossible
=
monolithic hell
@crichardson
Technology stack becomes
increasingly obsolete
BUT
A rewrite is not feasible
-ilities of large monoliths
Maintainability
Testability
Deployability
…
https://en.wikipedia.org/wiki/Non-functional_requirement
😭
The microservice architecture
is an architectural style
that structures an
application as a
set of loosely coupled,
services organized around
business capabilities
@crichardson
Application
Service = business capability
Acme, Inc
Order
Taking
Inventory
management
Delivery
management
Business Capability = something a business does to deliver value
…
Order
Service
Inventory
Management
Service
Delivery
Management
Service …
Service
@crichardson
Service = independently
deployable component
Command
Query
API
Event
Publisher
Event
Subscriber
API
Client
Consumer facing Implementation
Synchronous:
REST, gRPC, …
Asynchronous:
Command/Reply, Notification
Service database
Events
Events
Synchronous:
REST, gRPC, …
Asynchronous:
Command/Reply, Notification
Data owned by the service
Data replicated from elsewhere
SLA
Service size is secondary
microservice architecture
Service:
Meaningful business functionality
Developed by a small team
Minimal lead time/high deployment
frequency
Microservices
=
Microservice architecture
=
Application architecture
No such thing as a microservice
@crichardson
Browser
Mobile
Device
Content
Router
API
Gateway
Catalog
Service
Review
Service
Order
Service
…
Service
Catalog
Database
Review
Database
Order
Database
…
Database
HTTP
/HTML
REST
REST
Browse &
Search WebApp
Product Detail
WebApp
….
Supplier
Inbound
Gateway
Catalog update
messages
Supplier
System
-ilities of a microservice
architecture
Maintainability
Testability
Deployability
…
https://en.wikipedia.org/wiki/Non-functional_requirement
😄
@crichardson
Microservices
DevOps/Continuous delivery/deployment
of large/complex applications
@crichardson
Process:
Continuous delivery/deployment
Organization:
Small, agile, autonomous,
cross functional teams
Architecture:
Microservice architecture
Enables
Enables
Enables
Successful
Software
Development
Services improve
testability
and
deployability
Teams own services
@crichardson
Microservices evolve the
technology stack
Pick a new technology when
Writing a new service
Making major changes to an existing service
Let’s you experiment and fail safely
@crichardson
Agenda
A brief refresher on software architecture
From monolith to microservices
Microservices != silver bullet
Applying the microservice pattern language
@crichardson
No silver bullets
http://en.wikipedia.org/wiki/Fred_Brooks
@crichardson
Drawbacks of microservices
Complexity
Development: IPC, partial failure, distributed data
Testing: Integration, end to end, …
Deployment
…
@crichardson
Are microservices a good fit
for my application?
@crichardson
Do I have the pre-requisites in place:
automated testing
automated provisioning
…..
?
@crichardson
When using microservices:
How to decompose an application into services?
How to deploy an application’s services?
How to handle cross cutting concerns?
Which communication mechanisms to use?
How do external clients communicate with the services?
How does a client discover the network location of a service instance?
How to prevent a network or service failure from cascading to other services?
How to maintain data consistency and implement queries?
How to make testing easier?
How to understand the behavior of an application and troubleshoot problems?
How to implement a UI screen or page that displays data from multiple services?
@crichardson
It depends!
@crichardson
Microservice pattern language
=
collection of patterns
that solve these
architecture, design, development and
operational problems
@crichardson
What’s a pattern?
Reusable solution
to a problem
occurring
in a particular context
@crichardson
The structure of a pattern
encourages objectivity
Resulting context
aka the situation
Name
Context
Problem
Related patterns
(conflicting) issues
etc to address
Forces
Solution Benefits
Drawbacks
Issues to resolve
Alternatives
Solutions to issues
@crichardson
Microservices pattern language: http://microservices.io
@crichardson
Agenda
A brief refresher on software architecture
From monolith to microservices
Microservices != silver bullet
Applying the microservice pattern language
@crichardson
The pattern language guides you
when developing an architecture
What architectural decisions you must make
For each decision:
Available options
Trade-offs of each option
@crichardson
Key patterns
Issue: What’s the deployment
architecture?
Forces
Maintainability
Deployability
Testability
…
Monolithic
architecture
Microservice
architecture
Single deployable/
executable OR
Tightly coupled services
Multiple loosely coupled
services
Issue: How to decompose an
application into services?
Forces
Stability
Cohesive
Loosely coupled
Not too large
Decompose by
business capability
Decompose by
subdomain
Organize around
business capabilities
Organize around DDD
subdomains
@crichardson
Issue: how to maintain data
consistency?
Context
• Each service has its own
database
• Data is private to a service
Forces
Transactional data consistency
must be maintained across
multiple services
2PC is not an option
@crichardson
Issue: how to perform
queries?
CQRS
Context
Each service has its own
database
Forces
Queries must join data
from multiple services
Data is private to a service
Maintain query views by
subscribing to events
API
Composition
@crichardson
The rest are generic technical
architecture patterns
=
Undifferentiated heavy lifting!
@crichardson
Issue: How do services
communicate?
Messaging
Remote Procedure
Invocation
Domain-specific
Forces
Services must
communicate
Usually processes on
different machines
…
@crichardson
Issue: How to handle cross
cutting concerns?
Microservice
Chassis
Forces
Every service must
implement logging;
externalize configuration;
health check endpoint;
metrics; …
Issue: How to deploy an
application’s services?
Multiple Services
per host
Single Service per
Host
Service-per-
Container
Service-per-VM
Serverless
deployment
Service deployment
platform
Forces
Multiple languages
Isolated
Constrained
Monitor-able
Reliable
Efficient
@crichardson
Issue: How to discover a service
instance’s network location?
Client-side discovery
Server-side
discovery
Service registry
Self registration
3rd party registration
Forces
Client needs IP address of
service instance
Dynamic IP addresses
Dynamically provisioned
instances
@crichardson
Issue: how to monitor the
behavior of your application?
Exception
tracking
Distributed
tracing
Audit logging
Application
metrics
Log
aggregation
Health check
API
@crichardson
Summary
The goal of architecture is to satisfy non-functional
requirements
For continuous delivery/deployment use the appropriate
architectural style
Small applications Monolithic architecture
Complex applications Microservice architecture
Use the pattern language to guide your decision making
@crichardson
@crichardson chris@chrisrichardson.net
http://learnmicroservices.io
Thank you!
40% off
ctwcodefreeze18

More Related Content

PDF
Kong Summit 2018 - Microservices: decomposing applications for testability an...
PDF
OReilly SACON London: Potholes in the road from monolithic hell: Microservice...
PDF
Microservices architecture
PDF
More the merrier: a microservices anti-pattern
PPTX
Microservice vs. Monolithic Architecture
PDF
Introducing Saga Pattern in Microservices with Spring Statemachine
PDF
A Pattern Language for Microservices
PDF
Why Microservice
Kong Summit 2018 - Microservices: decomposing applications for testability an...
OReilly SACON London: Potholes in the road from monolithic hell: Microservice...
Microservices architecture
More the merrier: a microservices anti-pattern
Microservice vs. Monolithic Architecture
Introducing Saga Pattern in Microservices with Spring Statemachine
A Pattern Language for Microservices
Why Microservice

What's hot (20)

PDF
Comparison of Current Service Mesh Architectures
PDF
Integration Microservices
PPTX
Introduction to Microservices
PPTX
Saga about distributed business transactions in microservices world
PPTX
DEVSECOPS: Coding DevSecOps journey
PDF
JFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
PDF
AWS 101: Introduction to AWS
PDF
The Layman's Guide to Microsoft Azure
PPTX
Azure Bicep - An Introduction
PPTX
Azure Application Modernization
PPTX
Customer case - Dynatrace Monitoring Redefined
PDF
Amazon AWS | What is Amazon AWS | AWS Tutorial | AWS Training | Edureka
PDF
DevSecOps: What Why and How : Blackhat 2019
PDF
Design patterns for microservice architecture
PPTX
Microsoft azure overview
PDF
Setting up a Cloud Center of Excellence (CCoE) for Enterprise Customers
PDF
Load balancing and Service in Kubernetes
PPTX
Infrastructure as Code on Azure: Show your Bicep!
PDF
A pattern language for microservices - June 2021
PDF
Baby steps to Domain-Driven Design
Comparison of Current Service Mesh Architectures
Integration Microservices
Introduction to Microservices
Saga about distributed business transactions in microservices world
DEVSECOPS: Coding DevSecOps journey
JFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
AWS 101: Introduction to AWS
The Layman's Guide to Microsoft Azure
Azure Bicep - An Introduction
Azure Application Modernization
Customer case - Dynatrace Monitoring Redefined
Amazon AWS | What is Amazon AWS | AWS Tutorial | AWS Training | Edureka
DevSecOps: What Why and How : Blackhat 2019
Design patterns for microservice architecture
Microsoft azure overview
Setting up a Cloud Center of Excellence (CCoE) for Enterprise Customers
Load balancing and Service in Kubernetes
Infrastructure as Code on Azure: Show your Bicep!
A pattern language for microservices - June 2021
Baby steps to Domain-Driven Design
Ad

Similar to Code Freeze 2018: There is no such thing as a microservice! (20)

PDF
Saturn2017: No such thing as a microservice!
PDF
Oracle Code Sydney - There is no such thing as a microservice!
PDF
There is no such thing as a microservice! (oracle code nyc)
PDF
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
PDF
SVCC Microservices: Decomposing Applications for Testability and Deployability
PDF
A pattern language for microservices
PDF
Microservices pattern language (microxchg microxchg2016)
PDF
A pattern language for microservices (melbourne)
PDF
Spring Days NYC - A pattern language for microservices
PDF
TDC2020 - The microservice architecture: enabling rapid, reliable, frequent a...
PDF
RedisConf17 - A pattern language for microservices - Chris Richardson
PDF
A pattern language for microservices - Chris Richardson
PDF
Using patterns and pattern languages to make better architectural decisions
PDF
A pattern language for microservices (#gluecon #gluecon2016)
PDF
Microservices: Decomposing Applications for Deployability and Scalability (ja...
PDF
A Pattern Language for Microservices (@futurestack)
PDF
Microservices - an architecture that enables DevOps (T Systems DevOps day)
PDF
The microservice architecture: what, why, when and how?
PDF
Decomposing applications for deployability and scalability(SpringSource webinar)
PDF
Microservices + Events + Docker = A Perfect Trio (dockercon)
Saturn2017: No such thing as a microservice!
Oracle Code Sydney - There is no such thing as a microservice!
There is no such thing as a microservice! (oracle code nyc)
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
SVCC Microservices: Decomposing Applications for Testability and Deployability
A pattern language for microservices
Microservices pattern language (microxchg microxchg2016)
A pattern language for microservices (melbourne)
Spring Days NYC - A pattern language for microservices
TDC2020 - The microservice architecture: enabling rapid, reliable, frequent a...
RedisConf17 - A pattern language for microservices - Chris Richardson
A pattern language for microservices - Chris Richardson
Using patterns and pattern languages to make better architectural decisions
A pattern language for microservices (#gluecon #gluecon2016)
Microservices: Decomposing Applications for Deployability and Scalability (ja...
A Pattern Language for Microservices (@futurestack)
Microservices - an architecture that enables DevOps (T Systems DevOps day)
The microservice architecture: what, why, when and how?
Decomposing applications for deployability and scalability(SpringSource webinar)
Microservices + Events + Docker = A Perfect Trio (dockercon)
Ad

More from Chris Richardson (20)

PDF
YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...
PDF
Dark Energy, Dark Matter and the Microservices Patterns?!
PDF
Dark energy, dark matter and microservice architecture collaboration patterns
PDF
Scenarios_and_Architecture_SkillsMatter_April_2022.pdf
PDF
iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...
PDF
Events to the rescue: solving distributed data problems in a microservice arc...
PDF
QConPlus 2021: Minimizing Design Time Coupling in a Microservice Architecture
PDF
Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...
PDF
Designing loosely coupled services
PDF
DDD SoCal: Decompose your monolith: Ten principles for refactoring a monolith...
PDF
Decompose your monolith: Six principles for refactoring a monolith to microse...
PDF
Overview of the Eventuate Tram Customers and Orders application
PDF
An overview of the Eventuate Platform
PDF
#DevNexus202 Decompose your monolith
PDF
Decompose your monolith: strategies for migrating to microservices (Tide)
PDF
Oracle CodeOne 2019: Descending the Testing Pyramid: Effective Testing Strate...
PDF
Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Mic...
PDF
YOW! Perth: Cubes, Hexagons, Triangles, and More: Understanding the Microserv...
PDF
MicroCPH - Managing data consistency in a microservice architecture using Sagas
PDF
GotoChgo 2019: Not Just Events: Developing Asynchronous Microservices
YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...
Dark Energy, Dark Matter and the Microservices Patterns?!
Dark energy, dark matter and microservice architecture collaboration patterns
Scenarios_and_Architecture_SkillsMatter_April_2022.pdf
iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...
Events to the rescue: solving distributed data problems in a microservice arc...
QConPlus 2021: Minimizing Design Time Coupling in a Microservice Architecture
Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...
Designing loosely coupled services
DDD SoCal: Decompose your monolith: Ten principles for refactoring a monolith...
Decompose your monolith: Six principles for refactoring a monolith to microse...
Overview of the Eventuate Tram Customers and Orders application
An overview of the Eventuate Platform
#DevNexus202 Decompose your monolith
Decompose your monolith: strategies for migrating to microservices (Tide)
Oracle CodeOne 2019: Descending the Testing Pyramid: Effective Testing Strate...
Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Mic...
YOW! Perth: Cubes, Hexagons, Triangles, and More: Understanding the Microserv...
MicroCPH - Managing data consistency in a microservice architecture using Sagas
GotoChgo 2019: Not Just Events: Developing Asynchronous Microservices

Recently uploaded (20)

PPTX
Online Work Permit System for Fast Permit Processing
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
System and Network Administraation Chapter 3
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
medical staffing services at VALiNTRY
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
top salesforce developer skills in 2025.pdf
PPTX
history of c programming in notes for students .pptx
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PPTX
ai tools demonstartion for schools and inter college
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Nekopoi APK 2025 free lastest update
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Online Work Permit System for Fast Permit Processing
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
System and Network Administraation Chapter 3
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
medical staffing services at VALiNTRY
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Odoo Companies in India – Driving Business Transformation.pdf
top salesforce developer skills in 2025.pdf
history of c programming in notes for students .pptx
How to Choose the Right IT Partner for Your Business in Malaysia
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
ai tools demonstartion for schools and inter college
PTS Company Brochure 2025 (1).pdf.......
Upgrade and Innovation Strategies for SAP ERP Customers
Nekopoi APK 2025 free lastest update
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
How Creative Agencies Leverage Project Management Software.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41

Code Freeze 2018: There is no such thing as a microservice!