SlideShare a Scribd company logo
@crichardson
Using scenarios to reinvigorate
your (microservice) architecture
Chris Richardson


Microservice architecture consulting and training
Founder of Eventuate.io


Founder of the original CloudFoundry.com


Author of POJOs in Action and Microservices Patterns


@crichardson


chris@chrisrichardson.net


http://adopt.microservices.io
Copyright © 2022. Chris Richardson Consulting, Inc. All rights reserved
^
views and
@crichardson
Presentation goal
How to create
minimal, yet
effective
architecture
documentation
Order Management
Consumer
Management
Credit Card Payments
Restaurant
Management
Accounting
Kitchen Management
Vague!
API Gateway
Import
DynamoDB
Kinesis Streams
Lambda Query
Technology
focussed
Disconnected from
functional requirements
@crichardson
About Chris
http://adopt.microservices.io
@crichardson
Discounts
35% discount


au35ric


$100 discount coupon


QVYVPXMY until June 6th
http://adopt.microservices.io
@crichardson
Agenda
The 4+1 view model of software architecture


Documenting the FTGO application


Beyond views
The goal of architecture is to
satisfy non-functional requirements
Nonfunctional
requirements
Development
Runtime
Scalability
Performance
Availability
…
Maintainability
Testability
Deployability
…
Often neglected
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
De
fi
ningthe architecture of a new application


Learningthe architecture, e.g. new team member


Evaluatingthe architecture in order to improve it


Evolvingthe architecture to satisfy changed requirements
“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.”
@crichardson
Architecture


=


(elements, relations, properties)
“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.”
@crichardson
Architecture


=


Boxes and lines 😄
@crichardson
Architecture is multi-dimensional
• Structural


• Electrical


• Plumbing


• Mechanical


• …
@crichardson
View


=


(elements, relations, properties)
Architecture


=
4+1 view model of software
architecture
Logical


View
Process


View
Deployment


View
Implementation


View
Scenarios
https://en.wikipedia.org/wiki/4%2B1_architectural_view_model
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
Monolith


=


one component
Microservices


=


many components
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
@crichardson
Different views describe different
aspects of the architecture
Logical


View
Process


View
Deployment


View
Implementation


View
Dev Ops
Modularity


Loose coupling
Availability


Scalability
+1 = 5th view = Scenarios
Logical


View
Process


View
Deployment


View
Implementation


View
Scenarios
Derived from use cases/stories


Animate the views
Elements from a
view
@crichardson
Views: more than just pretty
pictures
«Service»
Order Management «Service»
Consumer
Management
«Service»
Credit Card Payments
«Service»
Restaurant
Management
«Service»
Accounting
«Service»
Kitchen Management
«Service»
Service
«Database»
Database
Uses API
Legend
Part-of
«Service»
API Gateway
«async»
«subscribes to»
«async»
«async»
«async»
«async»
«sync»
«sync»
«sync»
«sync»
«sync»
Diagram Description of elements and relations
@crichardson
Alternatives to the classic 4+1
views
There are other views, e.g.


Modern deployment technologies (Kubernetes, Serverless)
don’t
fi
t with process/deployment views


Hybrid views and scenarios that mix elements (e.g. services
and entities)


Git repository/Service/Deployment pipeline view


…


Goal is communicate => use the views that are useful
@crichardson
Agenda
The 4+1 view model of software architecture


Documenting the FTGO application


Beyond views
@crichardson
Documenting the FTGO application
«Service»
Order Management «Service»
Consumer
Management
«Service»
Credit Card Payments
«Service»
Restaurant
Management
«Service»
Accounting
«Service»
Kitchen Management
«Service»
Service
«Database»
Database
Uses API
Legend
Part-of
«Service»
API Gateway
«async»
«subscribes to»
«async»
«async»
«async»
«async»
«sync»
«sync»
«sync»
«sync»
«sync»
Implementation Logical
CircleCI deployment
pipeline
«AWS ECR repository»
ftgo-XYZ-service
«Github Repository»
ftgo/ftgo-XYZ-service
Commit
Push
Image
«Github Repository»
Kubernetes YAML
Kubernetes API
EKS cluster
Commit
3 AZ EKS cluster
Ingress managed ALB
3 AZ RDS Aurora
React application static resources
S3 bucket
api.app.acme.com app.acme.com
Browser
Cloudfront
<<service>> Order management
API Gateway
Managed Apache Kafka
React
SPA
Deployment Repository/


deployment pipeline
@crichardson
Implementation view: diagram
«Service»
Order Management «Service»
Consumer
Management
«Service»
Credit Card Payments
«Service»
Restaurant
Management
«Service»
Accounting
«Service»
Kitchen Management
«Service»
Service
«Database»
Database
Uses API
Legend
Part-of
«Service»
API Gateway
«async»
«subscribes to»
«async»
«async»
«async»
«async»
«sync»
«sync»
«sync»
«sync»
«sync»
Legend!
Stereotypes
@crichardson
Implementation view:
description
@crichardson
Implementation view: services
+ …
<<restaurant events channel>>
«Service»
Delivery Management
«Subdomain»
Delivery Management
«Subdomain»
Courier Management
«CQRS View»
Order History
«Database»
Restaurant
Management
«library»
Tax Calculator
«Service»
Delivery Management
+
@crichardson
Variation: Visualizing subdomain
to service mapping
«Service»
Restaurant Management
«Service»
Order Management
«async»
«Service»
Delivery Management
«Uses»
«Subdomain»
Delivery Management
«Subdomain»
Courier Management
«Subdomain»
Restaurant Management
«Subdomain»
Order Management
Not always 1 to 1
@crichardson
Variation: Visualizing messaging
«Service»
Order Management
«Service»
Restaurant
Management
«subscribes to»
«Service»
Order Management
«Service»
Restaurant
Management
<<restaurant events channel>>
«subscribes to»
Channel Restaurant events
Ordered Yes
Delivery At-least once
Subscription Durable
… …
@crichardson
Variation: Visualizing shared libraries
«Service»
Order Management
«Service»
Accounting
«Service»
Service
«Database»
Database
Uses API
Legend
Part-of
«async»
«library»
Money
«library»
Tax Calculator
«Uses»
«Uses»
Anti-pattern: tight
coupling
Probably ok
@crichardson
Variation: Visualizing shared
databases
Anti-pattern: tight
coupling
«Service»
Order Management
«Service»
Restaurant
Management
«Service»
Service
«Database»
Database
Uses API
Legend
Part-of
«async»
«Database»
Restaurant
Management
«Uses»
@crichardson
Variation: Visualizing CQRS views
«Service»
Order History
«Service»
Order Management
«CQRS View»
Order History
«Service»
Kitchen Management
«Service»
Delivery Management
«Subscribes to»
«Subscribes to»
«Subscribes to»
@crichardson
Implementation view scenario:
collaborating services and entities
Clari
fi
es
@crichardson
Documenting the FTGO application
«Service»
Order Management «Service»
Consumer
Management
«Service»
Credit Card Payments
«Service»
Restaurant
Management
«Service»
Accounting
«Service»
Kitchen Management
«Service»
Service
«Database»
Database
Uses API
Legend
Part-of
«Service»
API Gateway
«async»
«subscribes to»
«async»
«async»
«async»
«async»
«sync»
«sync»
«sync»
«sync»
«sync»
Implementation Logical
CircleCI deployment
pipeline
«AWS ECR repository»
ftgo-XYZ-service
«Github Repository»
ftgo/ftgo-XYZ-service
Commit
Push
Image
«Github Repository»
Kubernetes YAML
Kubernetes API
EKS cluster
Commit
3 AZ EKS cluster
Ingress managed ALB
3 AZ RDS Aurora
React application static resources
S3 bucket
api.app.acme.com app.acme.com
Browser
Cloudfront
<<service>> Order management
API Gateway
Managed Apache Kafka
React
SPA
Deployment Repository/


deployment pipeline
@crichardson
Logical view: diagram
«subdomain»
Subdomain A
«subdomain»
Subdomain B
Uses
Legend
@crichardson
Logical view: description
@crichardson
Logical view scenario:
Collaborating classes/subdomains
@crichardson
Documenting the FTGO application
«Service»
Order Management «Service»
Consumer
Management
«Service»
Credit Card Payments
«Service»
Restaurant
Management
«Service»
Accounting
«Service»
Kitchen Management
«Service»
Service
«Database»
Database
Uses API
Legend
Part-of
«Service»
API Gateway
«async»
«subscribes to»
«async»
«async»
«async»
«async»
«sync»
«sync»
«sync»
«sync»
«sync»
Implementation Logical
CircleCI deployment
pipeline
«AWS ECR repository»
ftgo-XYZ-service
«Github Repository»
ftgo/ftgo-XYZ-service
Commit
Push
Image
«Github Repository»
Kubernetes YAML
Kubernetes API
EKS cluster
Commit
3 AZ EKS cluster
Ingress managed ALB
3 AZ RDS Aurora
React application static resources
S3 bucket
api.app.acme.com app.acme.com
Browser
Cloudfront
<<service>> Order management
API Gateway
Managed Apache Kafka
React
SPA
Deployment Repository/


deployment pipeline
@crichardson
Process/Deployment view <=>
Modern K8S or Serverless?!
@crichardson
Deployment: K8S cluster/AWS
3 AZ EKS cluster
Ingress managed ALB
3 AZ RDS Aurora
React application static resources
S3 bucket
api.app.acme.com app.acme.com
Browser
Cloudfront
<<service>> Order management
API Gateway
Managed Apache Kafka
React
SPA
@crichardson
Deployment view: description
ReactJS frontend served by Cloudfront from S3 bucket


Application services (+ API Gateway) deployed on AWS EKS:
K8S service + deployment


API entry point = K8S Ingress managed ALB


AWS resources (EKS, RDS Aurora, MKS, …) deployed to
three availability zones
@crichardson
Deployment view: scenario
Browser
React
SPA
Ingress managed ALB API Gateway Order Service
POST /orders
POST /orders
POST /orders
@crichardson
Documenting the FTGO application
«Service»
Order Management «Service»
Consumer
Management
«Service»
Credit Card Payments
«Service»
Restaurant
Management
«Service»
Accounting
«Service»
Kitchen Management
«Service»
Service
«Database»
Database
Uses API
Legend
Part-of
«Service»
API Gateway
«async»
«subscribes to»
«async»
«async»
«async»
«async»
«sync»
«sync»
«sync»
«sync»
«sync»
Implementation Logical
CircleCI deployment
pipeline
«AWS ECR repository»
ftgo-XYZ-service
«Github Repository»
ftgo/ftgo-XYZ-service
Commit
Push
Image
«Github Repository»
Kubernetes YAML
Kubernetes API
EKS cluster
Commit
3 AZ EKS cluster
Ingress managed ALB
3 AZ RDS Aurora
React application static resources
S3 bucket
api.app.acme.com app.acme.com
Browser
Cloudfront
<<service>> Order management
API Gateway
Managed Apache Kafka
React
SPA
Deployment Repository/


deployment pipeline
@crichardson
Repository and deployment
pipeline view
CircleCI deployment
pipeline
«AWS ECR repository»
ftgo-XYZ-service
«Github Repository»
ftgo/ftgo-XYZ-service
Commit
Push
Image
«Github Repository»
Kubernetes YAML
Kubernetes API
EKS cluster
Commit
Per-service
Per-cluster
@crichardson
Agenda
The 4+1 view model of software architecture


Documenting the FTGO application


Beyond views
@crichardson
Vision
FTGO is a food delivery application.
Consumers use FTGO to place food orders at
local restaurants.


FTGO coordinates a network of couriers who
deliver the orders. It’s also responsible for
paying couriers and restaurants.


Restaurants use the FTGO website to edit
their menus and manage orders.
@crichardson
System
Context
Architecturally signi
fi
cant user
stories/scenarios
Capture the essence of the
application


In
fl
uence the architecture:


Complex, e.g. span multiple
subdomains


Business critical/highly
available


Low latency


Process large amounts of data


….
@crichardson
BDD-style scenarios: precise description
of behavior in terms of business entities
Givens = pre-conditions
Thens = post-conditions
De
fi
nes “request”
@crichardson
Business
objects
Distill scenarios into system
operations
FTGO
Application
createOrder()
fi
ndOrder()
…
Via UI
Application
Invokes
Subscribes to
Triggers
Model application behavior
cancelOrder()
≪commands≫


≪queries≫
…
Mutates and queries
Business
objects
@crichardson
Non-functional requirements
Quality category Quality Description
Availability Tier 1 (highest) Order
fl
ow
Tier 2 (medium) Account management
Tier … …
Performance Throughput …
Latency …
… … …
@crichardson
Documenting services:
microservice canvas
https://github.com/cer/microservice-canvas
@crichardson
Documenting services:
domain model
@crichardson
Architecture Decision
Records: documenting why
https://github.com/joelparkerhenderson/architecture-decision-record
@crichardson
Summary
The software architecture of a computing system is the set of
structures needed to reason about the system


Architecture is multi-dimensional


Each dimension is described by a view


View = elements + relations + their properties = pictures and words


Documenting architecturally signi
fi
cant user stories/scenarios is
essential


Scenarios animate the elements of a view and connect it to
functional requirements
@crichardson
@crichardson chris@chrisrichardson.net
http://adopt.microservices.io
Questions?

More Related Content

What's hot

Microservices Architecture, Monolith Migration Patterns
Microservices Architecture, Monolith Migration PatternsMicroservices Architecture, Monolith Migration Patterns
Microservices Architecture, Monolith Migration Patterns
Araf Karsh Hamid
 
Microservices Workshop - Craft Conference
Microservices Workshop - Craft ConferenceMicroservices Workshop - Craft Conference
Microservices Workshop - Craft Conference
Adrian Cockcroft
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) Presentation
Oğuzhan Soykan
 
Capability Webinar January 2022
Capability Webinar January 2022Capability Webinar January 2022
Capability Webinar January 2022
Intersection Group
 
The microservice architecture: what, why, when and how?
The microservice architecture: what, why, when and how?The microservice architecture: what, why, when and how?
The microservice architecture: what, why, when and how?
Chris Richardson
 
Evolution of Microservices - Craft Conference
Evolution of Microservices - Craft ConferenceEvolution of Microservices - Craft Conference
Evolution of Microservices - Craft Conference
Adrian Cockcroft
 
OReilly SACON London: Potholes in the road from monolithic hell: Microservice...
OReilly SACON London: Potholes in the road from monolithic hell: Microservice...OReilly SACON London: Potholes in the road from monolithic hell: Microservice...
OReilly SACON London: Potholes in the road from monolithic hell: Microservice...
Chris Richardson
 
Kong Summit 2018 - Microservices: decomposing applications for testability an...
Kong Summit 2018 - Microservices: decomposing applications for testability an...Kong Summit 2018 - Microservices: decomposing applications for testability an...
Kong Summit 2018 - Microservices: decomposing applications for testability an...
Chris Richardson
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
Araf Karsh Hamid
 
Agile, User Stories, Domain Driven Design
Agile, User Stories, Domain Driven DesignAgile, User Stories, Domain Driven Design
Agile, User Stories, Domain Driven Design
Araf Karsh Hamid
 
Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017
Deepu K Sasidharan
 
QConPlus 2021: Minimizing Design Time Coupling in a Microservice Architecture
QConPlus 2021: Minimizing Design Time Coupling in a Microservice ArchitectureQConPlus 2021: Minimizing Design Time Coupling in a Microservice Architecture
QConPlus 2021: Minimizing Design Time Coupling in a Microservice Architecture
Chris Richardson
 
Architecture for the masses - An Open Group Webinar
Architecture for the masses - An Open Group WebinarArchitecture for the masses - An Open Group Webinar
Architecture for the masses - An Open Group Webinar
Craig Martin
 
YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...
YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...
YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...
Chris Richardson
 
Designing loosely coupled services
Designing loosely coupled servicesDesigning loosely coupled services
Designing loosely coupled services
Chris Richardson
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Young-Ho Cho
 
IT4IT Overview (A new standard for IT management)
IT4IT Overview (A new standard for IT management)IT4IT Overview (A new standard for IT management)
IT4IT Overview (A new standard for IT management)
Charles Betz
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
Mustafa Dağdelen
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
Tom Kocjan
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and Microservices
Radosław Maziarka
 

What's hot (20)

Microservices Architecture, Monolith Migration Patterns
Microservices Architecture, Monolith Migration PatternsMicroservices Architecture, Monolith Migration Patterns
Microservices Architecture, Monolith Migration Patterns
 
Microservices Workshop - Craft Conference
Microservices Workshop - Craft ConferenceMicroservices Workshop - Craft Conference
Microservices Workshop - Craft Conference
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) Presentation
 
Capability Webinar January 2022
Capability Webinar January 2022Capability Webinar January 2022
Capability Webinar January 2022
 
The microservice architecture: what, why, when and how?
The microservice architecture: what, why, when and how?The microservice architecture: what, why, when and how?
The microservice architecture: what, why, when and how?
 
Evolution of Microservices - Craft Conference
Evolution of Microservices - Craft ConferenceEvolution of Microservices - Craft Conference
Evolution of Microservices - Craft Conference
 
OReilly SACON London: Potholes in the road from monolithic hell: Microservice...
OReilly SACON London: Potholes in the road from monolithic hell: Microservice...OReilly SACON London: Potholes in the road from monolithic hell: Microservice...
OReilly SACON London: Potholes in the road from monolithic hell: Microservice...
 
Kong Summit 2018 - Microservices: decomposing applications for testability an...
Kong Summit 2018 - Microservices: decomposing applications for testability an...Kong Summit 2018 - Microservices: decomposing applications for testability an...
Kong Summit 2018 - Microservices: decomposing applications for testability an...
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
 
Agile, User Stories, Domain Driven Design
Agile, User Stories, Domain Driven DesignAgile, User Stories, Domain Driven Design
Agile, User Stories, Domain Driven Design
 
Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017Easy Microservices with JHipster - Devoxx BE 2017
Easy Microservices with JHipster - Devoxx BE 2017
 
QConPlus 2021: Minimizing Design Time Coupling in a Microservice Architecture
QConPlus 2021: Minimizing Design Time Coupling in a Microservice ArchitectureQConPlus 2021: Minimizing Design Time Coupling in a Microservice Architecture
QConPlus 2021: Minimizing Design Time Coupling in a Microservice Architecture
 
Architecture for the masses - An Open Group Webinar
Architecture for the masses - An Open Group WebinarArchitecture for the masses - An Open Group Webinar
Architecture for the masses - An Open Group Webinar
 
YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...
YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...
YOW London - Considering Migrating a Monolith to Microservices? A Dark Energy...
 
Designing loosely coupled services
Designing loosely coupled servicesDesigning loosely coupled services
Designing loosely coupled services
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
IT4IT Overview (A new standard for IT management)
IT4IT Overview (A new standard for IT management)IT4IT Overview (A new standard for IT management)
IT4IT Overview (A new standard for IT management)
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and Microservices
 

Similar to Scenarios_and_Architecture_SkillsMatter_April_2022.pdf

JFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
JFokus: Cubes, Hexagons, Triangles, and More: Understanding MicroservicesJFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
JFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
Chris Richardson
 
Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)
Chris Richardson
 
Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...
Chris Richardson
 
YOW! Perth: Cubes, Hexagons, Triangles, and More: Understanding the Microserv...
YOW! Perth: Cubes, Hexagons, Triangles, and More: Understanding the Microserv...YOW! Perth: Cubes, Hexagons, Triangles, and More: Understanding the Microserv...
YOW! Perth: Cubes, Hexagons, Triangles, and More: Understanding the Microserv...
Chris Richardson
 
iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...
iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...
iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...
Chris Richardson
 
Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...
Chris Richardson
 
#JaxLondon keynote: Developing applications with a microservice architecture
#JaxLondon keynote: Developing applications with a microservice architecture#JaxLondon keynote: Developing applications with a microservice architecture
#JaxLondon keynote: Developing applications with a microservice architecture
Chris Richardson
 
Developing Applications with a Micro Service Architecture - Chris Richardson
Developing Applications with a Micro Service Architecture - Chris RichardsonDeveloping Applications with a Micro Service Architecture - Chris Richardson
Developing Applications with a Micro Service Architecture - Chris Richardson
JAXLondon2014
 
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Chris Richardson
 
SVCC Microservices: Decomposing Applications for Testability and Deployability
SVCC Microservices: Decomposing Applications for Testability and Deployability SVCC Microservices: Decomposing Applications for Testability and Deployability
SVCC Microservices: Decomposing Applications for Testability and Deployability
Chris Richardson
 
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
Docker, Inc.
 
There is no such thing as a microservice! (oracle code nyc)
There is no such thing as a microservice! (oracle code nyc)There is no such thing as a microservice! (oracle code nyc)
There is no such thing as a microservice! (oracle code nyc)
Chris Richardson
 
Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Mic...
Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Mic...Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Mic...
Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Mic...
Chris Richardson
 
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
Chris Richardson
 
Microservices + Events + Docker = A Perfect Trio (dockercon)
Microservices + Events + Docker = A Perfect Trio (dockercon)Microservices + Events + Docker = A Perfect Trio (dockercon)
Microservices + Events + Docker = A Perfect Trio (dockercon)
Chris Richardson
 
Saturn2017: No such thing as a microservice!
Saturn2017: No such thing as a microservice! Saturn2017: No such thing as a microservice!
Saturn2017: No such thing as a microservice!
Chris Richardson
 
TDC2020 - The microservice architecture: enabling rapid, reliable, frequent a...
TDC2020 - The microservice architecture: enabling rapid, reliable, frequent a...TDC2020 - The microservice architecture: enabling rapid, reliable, frequent a...
TDC2020 - The microservice architecture: enabling rapid, reliable, frequent a...
Chris Richardson
 
Spring Days NYC - A pattern language for microservices
Spring Days NYC - A pattern language for microservicesSpring Days NYC - A pattern language for microservices
Spring Days NYC - A pattern language for microservices
Chris Richardson
 
ArchitectNow - Designing Cloud-Native apps in Microsoft Azure
ArchitectNow  -  Designing Cloud-Native apps in Microsoft AzureArchitectNow  -  Designing Cloud-Native apps in Microsoft Azure
ArchitectNow - Designing Cloud-Native apps in Microsoft Azure
Kevin Grossnicklaus
 
Microservices and the Cloud based future of integration final
Microservices and the Cloud based future of integration finalMicroservices and the Cloud based future of integration final
Microservices and the Cloud based future of integration final
BizTalk360
 

Similar to Scenarios_and_Architecture_SkillsMatter_April_2022.pdf (20)

JFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
JFokus: Cubes, Hexagons, Triangles, and More: Understanding MicroservicesJFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
JFokus: Cubes, Hexagons, Triangles, and More: Understanding Microservices
 
Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)Developing applications with a microservice architecture (svcc)
Developing applications with a microservice architecture (svcc)
 
Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...Developing applications with a microservice architecture (SVforum, microservi...
Developing applications with a microservice architecture (SVforum, microservi...
 
YOW! Perth: Cubes, Hexagons, Triangles, and More: Understanding the Microserv...
YOW! Perth: Cubes, Hexagons, Triangles, and More: Understanding the Microserv...YOW! Perth: Cubes, Hexagons, Triangles, and More: Understanding the Microserv...
YOW! Perth: Cubes, Hexagons, Triangles, and More: Understanding the Microserv...
 
iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...
iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...
iSAQB gathering 2021 keynote - Architectural patterns for rapid, reliable, fr...
 
Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...Microservices: Decomposing Applications for Deployability and Scalability (ja...
Microservices: Decomposing Applications for Deployability and Scalability (ja...
 
#JaxLondon keynote: Developing applications with a microservice architecture
#JaxLondon keynote: Developing applications with a microservice architecture#JaxLondon keynote: Developing applications with a microservice architecture
#JaxLondon keynote: Developing applications with a microservice architecture
 
Developing Applications with a Micro Service Architecture - Chris Richardson
Developing Applications with a Micro Service Architecture - Chris RichardsonDeveloping Applications with a Micro Service Architecture - Chris Richardson
Developing Applications with a Micro Service Architecture - Chris Richardson
 
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
Omnikron webbinar - Microservices: enabling the rapid, frequent, and reliable...
 
SVCC Microservices: Decomposing Applications for Testability and Deployability
SVCC Microservices: Decomposing Applications for Testability and Deployability SVCC Microservices: Decomposing Applications for Testability and Deployability
SVCC Microservices: Decomposing Applications for Testability and Deployability
 
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
Microservices + Events + Docker = A Perfect Trio by Docker Captain Chris Rich...
 
There is no such thing as a microservice! (oracle code nyc)
There is no such thing as a microservice! (oracle code nyc)There is no such thing as a microservice! (oracle code nyc)
There is no such thing as a microservice! (oracle code nyc)
 
Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Mic...
Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Mic...Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Mic...
Oracle CodeOne 2019: Decompose Your Monolith: Strategies for Migrating to Mic...
 
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
Melbourne Jan 2019 - Microservices adoption anti-patterns: Obstacles to decom...
 
Microservices + Events + Docker = A Perfect Trio (dockercon)
Microservices + Events + Docker = A Perfect Trio (dockercon)Microservices + Events + Docker = A Perfect Trio (dockercon)
Microservices + Events + Docker = A Perfect Trio (dockercon)
 
Saturn2017: No such thing as a microservice!
Saturn2017: No such thing as a microservice! Saturn2017: No such thing as a microservice!
Saturn2017: No such thing as a microservice!
 
TDC2020 - The microservice architecture: enabling rapid, reliable, frequent a...
TDC2020 - The microservice architecture: enabling rapid, reliable, frequent a...TDC2020 - The microservice architecture: enabling rapid, reliable, frequent a...
TDC2020 - The microservice architecture: enabling rapid, reliable, frequent a...
 
Spring Days NYC - A pattern language for microservices
Spring Days NYC - A pattern language for microservicesSpring Days NYC - A pattern language for microservices
Spring Days NYC - A pattern language for microservices
 
ArchitectNow - Designing Cloud-Native apps in Microsoft Azure
ArchitectNow  -  Designing Cloud-Native apps in Microsoft AzureArchitectNow  -  Designing Cloud-Native apps in Microsoft Azure
ArchitectNow - Designing Cloud-Native apps in Microsoft Azure
 
Microservices and the Cloud based future of integration final
Microservices and the Cloud based future of integration finalMicroservices and the Cloud based future of integration final
Microservices and the Cloud based future of integration final
 

More from Chris Richardson

Dark energy, dark matter and microservice architecture collaboration patterns
Dark energy, dark matter and microservice architecture collaboration patternsDark energy, dark matter and microservice architecture collaboration patterns
Dark energy, dark matter and microservice architecture collaboration patterns
Chris Richardson
 
Events to the rescue: solving distributed data problems in a microservice arc...
Events to the rescue: solving distributed data problems in a microservice arc...Events to the rescue: solving distributed data problems in a microservice arc...
Events to the rescue: solving distributed data problems in a microservice arc...
Chris Richardson
 
Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...
Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...
Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...
Chris Richardson
 
Microservices - an architecture that enables DevOps (T Systems DevOps day)
Microservices - an architecture that enables DevOps (T Systems DevOps day)Microservices - an architecture that enables DevOps (T Systems DevOps day)
Microservices - an architecture that enables DevOps (T Systems DevOps day)
Chris Richardson
 
Decompose your monolith: Six principles for refactoring a monolith to microse...
Decompose your monolith: Six principles for refactoring a monolith to microse...Decompose your monolith: Six principles for refactoring a monolith to microse...
Decompose your monolith: Six principles for refactoring a monolith to microse...
Chris Richardson
 
Overview of the Eventuate Tram Customers and Orders application
Overview of the Eventuate Tram Customers and Orders applicationOverview of the Eventuate Tram Customers and Orders application
Overview of the Eventuate Tram Customers and Orders application
Chris Richardson
 
An overview of the Eventuate Platform
An overview of the Eventuate PlatformAn overview of the Eventuate Platform
An overview of the Eventuate Platform
Chris Richardson
 
#DevNexus202 Decompose your monolith
#DevNexus202 Decompose your monolith#DevNexus202 Decompose your monolith
#DevNexus202 Decompose your monolith
Chris Richardson
 
MicroCPH - Managing data consistency in a microservice architecture using Sagas
MicroCPH - Managing data consistency in a microservice architecture using SagasMicroCPH - Managing data consistency in a microservice architecture using Sagas
MicroCPH - Managing data consistency in a microservice architecture using Sagas
Chris Richardson
 
GotoChgo 2019: Not Just Events: Developing Asynchronous Microservices
GotoChgo 2019: Not Just Events: Developing Asynchronous MicroservicesGotoChgo 2019: Not Just Events: Developing Asynchronous Microservices
GotoChgo 2019: Not Just Events: Developing Asynchronous Microservices
Chris Richardson
 
YOW2018 - Events and Commands: Developing Asynchronous Microservices
YOW2018 - Events and Commands: Developing Asynchronous MicroservicesYOW2018 - Events and Commands: Developing Asynchronous Microservices
YOW2018 - Events and Commands: Developing Asynchronous Microservices
Chris Richardson
 
Mucon: Not Just Events: Developing Asynchronous Microservices
Mucon: Not Just Events: Developing Asynchronous MicroservicesMucon: Not Just Events: Developing Asynchronous Microservices
Mucon: Not Just Events: Developing Asynchronous Microservices
Chris Richardson
 

More from Chris Richardson (12)

Dark energy, dark matter and microservice architecture collaboration patterns
Dark energy, dark matter and microservice architecture collaboration patternsDark energy, dark matter and microservice architecture collaboration patterns
Dark energy, dark matter and microservice architecture collaboration patterns
 
Events to the rescue: solving distributed data problems in a microservice arc...
Events to the rescue: solving distributed data problems in a microservice arc...Events to the rescue: solving distributed data problems in a microservice arc...
Events to the rescue: solving distributed data problems in a microservice arc...
 
Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...
Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...
Mucon 2021 - Dark energy, dark matter: imperfect metaphors for designing micr...
 
Microservices - an architecture that enables DevOps (T Systems DevOps day)
Microservices - an architecture that enables DevOps (T Systems DevOps day)Microservices - an architecture that enables DevOps (T Systems DevOps day)
Microservices - an architecture that enables DevOps (T Systems DevOps day)
 
Decompose your monolith: Six principles for refactoring a monolith to microse...
Decompose your monolith: Six principles for refactoring a monolith to microse...Decompose your monolith: Six principles for refactoring a monolith to microse...
Decompose your monolith: Six principles for refactoring a monolith to microse...
 
Overview of the Eventuate Tram Customers and Orders application
Overview of the Eventuate Tram Customers and Orders applicationOverview of the Eventuate Tram Customers and Orders application
Overview of the Eventuate Tram Customers and Orders application
 
An overview of the Eventuate Platform
An overview of the Eventuate PlatformAn overview of the Eventuate Platform
An overview of the Eventuate Platform
 
#DevNexus202 Decompose your monolith
#DevNexus202 Decompose your monolith#DevNexus202 Decompose your monolith
#DevNexus202 Decompose your monolith
 
MicroCPH - Managing data consistency in a microservice architecture using Sagas
MicroCPH - Managing data consistency in a microservice architecture using SagasMicroCPH - Managing data consistency in a microservice architecture using Sagas
MicroCPH - Managing data consistency in a microservice architecture using Sagas
 
GotoChgo 2019: Not Just Events: Developing Asynchronous Microservices
GotoChgo 2019: Not Just Events: Developing Asynchronous MicroservicesGotoChgo 2019: Not Just Events: Developing Asynchronous Microservices
GotoChgo 2019: Not Just Events: Developing Asynchronous Microservices
 
YOW2018 - Events and Commands: Developing Asynchronous Microservices
YOW2018 - Events and Commands: Developing Asynchronous MicroservicesYOW2018 - Events and Commands: Developing Asynchronous Microservices
YOW2018 - Events and Commands: Developing Asynchronous Microservices
 
Mucon: Not Just Events: Developing Asynchronous Microservices
Mucon: Not Just Events: Developing Asynchronous MicroservicesMucon: Not Just Events: Developing Asynchronous Microservices
Mucon: Not Just Events: Developing Asynchronous Microservices
 

Recently uploaded

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
Sharepoint Designs
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
Jelle | Nordend
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
XfilesPro
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
KrzysztofKkol1
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
ayushiqss
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Hivelance Technology
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
Peter Caitens
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 

Recently uploaded (20)

Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024Explore Modern SharePoint Templates for 2024
Explore Modern SharePoint Templates for 2024
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
How Does XfilesPro Ensure Security While Sharing Documents in Salesforce?
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
Why React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdfWhy React Native as a Strategic Advantage for Startup Innovation.pdf
Why React Native as a Strategic Advantage for Startup Innovation.pdf
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 

Scenarios_and_Architecture_SkillsMatter_April_2022.pdf

  • 1. @crichardson Using scenarios to reinvigorate your (microservice) architecture Chris Richardson Microservice architecture consulting and training Founder of Eventuate.io Founder of the original CloudFoundry.com Author of POJOs in Action and Microservices Patterns @crichardson chris@chrisrichardson.net http://adopt.microservices.io Copyright © 2022. Chris Richardson Consulting, Inc. All rights reserved ^ views and
  • 2. @crichardson Presentation goal How to create minimal, yet effective architecture documentation Order Management Consumer Management Credit Card Payments Restaurant Management Accounting Kitchen Management Vague! API Gateway Import DynamoDB Kinesis Streams Lambda Query Technology focussed Disconnected from functional requirements
  • 4. @crichardson Discounts 35% discount au35ric $100 discount coupon QVYVPXMY until June 6th http://adopt.microservices.io
  • 5. @crichardson Agenda The 4+1 view model of software architecture Documenting the FTGO application Beyond views
  • 6. The goal of architecture is to satisfy non-functional requirements Nonfunctional requirements Development Runtime Scalability Performance Availability … Maintainability Testability Deployability … Often neglected
  • 7. 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
  • 8. De fi ningthe architecture of a new application Learningthe architecture, e.g. new team member Evaluatingthe architecture in order to improve it Evolvingthe architecture to satisfy changed requirements “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.”
  • 9. @crichardson Architecture = (elements, relations, properties) “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.”
  • 11. @crichardson Architecture is multi-dimensional • Structural • Electrical • Plumbing • Mechanical • …
  • 13. 4+1 view model of software architecture Logical View Process View Deployment View Implementation View Scenarios https://en.wikipedia.org/wiki/4%2B1_architectural_view_model
  • 14. 4+1 Logical view Logical View Process View Deployment View Implementation View Scenarios Elements: classes and packages Relations: inheritance, associations, …
  • 15. 4+1 Implementation view Logical View Process View Deployment View Implementation View Scenarios Elements: modules and components Relations: dependencies Monolith = one component Microservices = many components
  • 18. @crichardson Different views describe different aspects of the architecture Logical View Process View Deployment View Implementation View Dev Ops Modularity Loose coupling Availability Scalability
  • 19. +1 = 5th view = Scenarios Logical View Process View Deployment View Implementation View Scenarios Derived from use cases/stories Animate the views Elements from a view
  • 20. @crichardson Views: more than just pretty pictures «Service» Order Management «Service» Consumer Management «Service» Credit Card Payments «Service» Restaurant Management «Service» Accounting «Service» Kitchen Management «Service» Service «Database» Database Uses API Legend Part-of «Service» API Gateway «async» «subscribes to» «async» «async» «async» «async» «sync» «sync» «sync» «sync» «sync» Diagram Description of elements and relations
  • 21. @crichardson Alternatives to the classic 4+1 views There are other views, e.g. Modern deployment technologies (Kubernetes, Serverless) don’t fi t with process/deployment views Hybrid views and scenarios that mix elements (e.g. services and entities) Git repository/Service/Deployment pipeline view … Goal is communicate => use the views that are useful
  • 22. @crichardson Agenda The 4+1 view model of software architecture Documenting the FTGO application Beyond views
  • 23. @crichardson Documenting the FTGO application «Service» Order Management «Service» Consumer Management «Service» Credit Card Payments «Service» Restaurant Management «Service» Accounting «Service» Kitchen Management «Service» Service «Database» Database Uses API Legend Part-of «Service» API Gateway «async» «subscribes to» «async» «async» «async» «async» «sync» «sync» «sync» «sync» «sync» Implementation Logical CircleCI deployment pipeline «AWS ECR repository» ftgo-XYZ-service «Github Repository» ftgo/ftgo-XYZ-service Commit Push Image «Github Repository» Kubernetes YAML Kubernetes API EKS cluster Commit 3 AZ EKS cluster Ingress managed ALB 3 AZ RDS Aurora React application static resources S3 bucket api.app.acme.com app.acme.com Browser Cloudfront <<service>> Order management API Gateway Managed Apache Kafka React SPA Deployment Repository/ deployment pipeline
  • 24. @crichardson Implementation view: diagram «Service» Order Management «Service» Consumer Management «Service» Credit Card Payments «Service» Restaurant Management «Service» Accounting «Service» Kitchen Management «Service» Service «Database» Database Uses API Legend Part-of «Service» API Gateway «async» «subscribes to» «async» «async» «async» «async» «sync» «sync» «sync» «sync» «sync» Legend! Stereotypes
  • 26. @crichardson Implementation view: services + … <<restaurant events channel>> «Service» Delivery Management «Subdomain» Delivery Management «Subdomain» Courier Management «CQRS View» Order History «Database» Restaurant Management «library» Tax Calculator «Service» Delivery Management +
  • 27. @crichardson Variation: Visualizing subdomain to service mapping «Service» Restaurant Management «Service» Order Management «async» «Service» Delivery Management «Uses» «Subdomain» Delivery Management «Subdomain» Courier Management «Subdomain» Restaurant Management «Subdomain» Order Management Not always 1 to 1
  • 28. @crichardson Variation: Visualizing messaging «Service» Order Management «Service» Restaurant Management «subscribes to» «Service» Order Management «Service» Restaurant Management <<restaurant events channel>> «subscribes to» Channel Restaurant events Ordered Yes Delivery At-least once Subscription Durable … …
  • 29. @crichardson Variation: Visualizing shared libraries «Service» Order Management «Service» Accounting «Service» Service «Database» Database Uses API Legend Part-of «async» «library» Money «library» Tax Calculator «Uses» «Uses» Anti-pattern: tight coupling Probably ok
  • 30. @crichardson Variation: Visualizing shared databases Anti-pattern: tight coupling «Service» Order Management «Service» Restaurant Management «Service» Service «Database» Database Uses API Legend Part-of «async» «Database» Restaurant Management «Uses»
  • 31. @crichardson Variation: Visualizing CQRS views «Service» Order History «Service» Order Management «CQRS View» Order History «Service» Kitchen Management «Service» Delivery Management «Subscribes to» «Subscribes to» «Subscribes to»
  • 32. @crichardson Implementation view scenario: collaborating services and entities Clari fi es
  • 33. @crichardson Documenting the FTGO application «Service» Order Management «Service» Consumer Management «Service» Credit Card Payments «Service» Restaurant Management «Service» Accounting «Service» Kitchen Management «Service» Service «Database» Database Uses API Legend Part-of «Service» API Gateway «async» «subscribes to» «async» «async» «async» «async» «sync» «sync» «sync» «sync» «sync» Implementation Logical CircleCI deployment pipeline «AWS ECR repository» ftgo-XYZ-service «Github Repository» ftgo/ftgo-XYZ-service Commit Push Image «Github Repository» Kubernetes YAML Kubernetes API EKS cluster Commit 3 AZ EKS cluster Ingress managed ALB 3 AZ RDS Aurora React application static resources S3 bucket api.app.acme.com app.acme.com Browser Cloudfront <<service>> Order management API Gateway Managed Apache Kafka React SPA Deployment Repository/ deployment pipeline
  • 34. @crichardson Logical view: diagram «subdomain» Subdomain A «subdomain» Subdomain B Uses Legend
  • 37. @crichardson Documenting the FTGO application «Service» Order Management «Service» Consumer Management «Service» Credit Card Payments «Service» Restaurant Management «Service» Accounting «Service» Kitchen Management «Service» Service «Database» Database Uses API Legend Part-of «Service» API Gateway «async» «subscribes to» «async» «async» «async» «async» «sync» «sync» «sync» «sync» «sync» Implementation Logical CircleCI deployment pipeline «AWS ECR repository» ftgo-XYZ-service «Github Repository» ftgo/ftgo-XYZ-service Commit Push Image «Github Repository» Kubernetes YAML Kubernetes API EKS cluster Commit 3 AZ EKS cluster Ingress managed ALB 3 AZ RDS Aurora React application static resources S3 bucket api.app.acme.com app.acme.com Browser Cloudfront <<service>> Order management API Gateway Managed Apache Kafka React SPA Deployment Repository/ deployment pipeline
  • 39. @crichardson Deployment: K8S cluster/AWS 3 AZ EKS cluster Ingress managed ALB 3 AZ RDS Aurora React application static resources S3 bucket api.app.acme.com app.acme.com Browser Cloudfront <<service>> Order management API Gateway Managed Apache Kafka React SPA
  • 40. @crichardson Deployment view: description ReactJS frontend served by Cloudfront from S3 bucket Application services (+ API Gateway) deployed on AWS EKS: K8S service + deployment API entry point = K8S Ingress managed ALB AWS resources (EKS, RDS Aurora, MKS, …) deployed to three availability zones
  • 41. @crichardson Deployment view: scenario Browser React SPA Ingress managed ALB API Gateway Order Service POST /orders POST /orders POST /orders
  • 42. @crichardson Documenting the FTGO application «Service» Order Management «Service» Consumer Management «Service» Credit Card Payments «Service» Restaurant Management «Service» Accounting «Service» Kitchen Management «Service» Service «Database» Database Uses API Legend Part-of «Service» API Gateway «async» «subscribes to» «async» «async» «async» «async» «sync» «sync» «sync» «sync» «sync» Implementation Logical CircleCI deployment pipeline «AWS ECR repository» ftgo-XYZ-service «Github Repository» ftgo/ftgo-XYZ-service Commit Push Image «Github Repository» Kubernetes YAML Kubernetes API EKS cluster Commit 3 AZ EKS cluster Ingress managed ALB 3 AZ RDS Aurora React application static resources S3 bucket api.app.acme.com app.acme.com Browser Cloudfront <<service>> Order management API Gateway Managed Apache Kafka React SPA Deployment Repository/ deployment pipeline
  • 43. @crichardson Repository and deployment pipeline view CircleCI deployment pipeline «AWS ECR repository» ftgo-XYZ-service «Github Repository» ftgo/ftgo-XYZ-service Commit Push Image «Github Repository» Kubernetes YAML Kubernetes API EKS cluster Commit Per-service Per-cluster
  • 44. @crichardson Agenda The 4+1 view model of software architecture Documenting the FTGO application Beyond views
  • 45. @crichardson Vision FTGO is a food delivery application. Consumers use FTGO to place food orders at local restaurants. FTGO coordinates a network of couriers who deliver the orders. It’s also responsible for paying couriers and restaurants. Restaurants use the FTGO website to edit their menus and manage orders.
  • 47. Architecturally signi fi cant user stories/scenarios Capture the essence of the application In fl uence the architecture: Complex, e.g. span multiple subdomains Business critical/highly available Low latency Process large amounts of data ….
  • 48. @crichardson BDD-style scenarios: precise description of behavior in terms of business entities Givens = pre-conditions Thens = post-conditions De fi nes “request”
  • 49. @crichardson Business objects Distill scenarios into system operations FTGO Application createOrder() fi ndOrder() … Via UI Application Invokes Subscribes to Triggers Model application behavior cancelOrder() ≪commands≫ ≪queries≫ … Mutates and queries Business objects
  • 50. @crichardson Non-functional requirements Quality category Quality Description Availability Tier 1 (highest) Order fl ow Tier 2 (medium) Account management Tier … … Performance Throughput … Latency … … … …
  • 53. @crichardson Architecture Decision Records: documenting why https://github.com/joelparkerhenderson/architecture-decision-record
  • 54. @crichardson Summary The software architecture of a computing system is the set of structures needed to reason about the system Architecture is multi-dimensional Each dimension is described by a view View = elements + relations + their properties = pictures and words Documenting architecturally signi fi cant user stories/scenarios is essential Scenarios animate the elements of a view and connect it to functional requirements