Use Firebase Analytics to build extraordinary apps - Sivan Enden, Google
Microservices with Stijn Van den Enden & Andreas Evers - BeJUG
-
Upload
jworks-powered-by-ordina -
Category
Engineering
-
view
245 -
download
0
Transcript of Microservices with Stijn Van den Enden & Andreas Evers - BeJUG
![Page 1: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/1.jpg)
MicroservicesHitchhiker’s guide to cloud native applications
Andreas Evers @andreasevers
Stijn Van den Enden @stieno
![Page 2: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/2.jpg)
Martin Fowler
“The microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight
mechanisms, often an HTTP resource API. These services are built around business capabilities and independently
deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services,
which may be written in different programming languages and use different data storage technologies.”
James Lewis
![Page 3: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/3.jpg)
Characteristics of a Microservice style
![Page 4: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/4.jpg)
Characteristics of a Microservice style
• Small and focussed on 1 capability • easier to understand • IDE and deployment faster for 1 service
![Page 5: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/5.jpg)
• Provide firm module boundaries with explicit interface • Harder to violate boundary in development
![Page 6: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/6.jpg)
• Independent • Release and deployment • Scaling • Development
![Page 7: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/7.jpg)
• Loosely Coupled • through lightweight communication
![Page 8: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/8.jpg)
• Fault Isolation vs. bring all down.
![Page 9: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/9.jpg)
• Decentralised choreography • vs. central orchestration • vs. central point of failure
![Page 10: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/10.jpg)
• Allows try-out of new technologies. • Re-write can be limited to 1 service
• Impact Analysis stops at boundary
![Page 11: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/11.jpg)
Characteristics of a Microservice style
• Decentralised data • polyglot persistence
![Page 12: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/12.jpg)
Strong Module Boundaries Distribution
Eventual Consistency
Independent DeploymentOperational Complexity
Technology Diversity
Security Segmentation
Separate Scale-out
Parallel Development
![Page 13: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/13.jpg)
Is this any different from SOA?
![Page 14: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/14.jpg)
SERVICE ORIENTED ARCHITECTURE?Yes, it’s SOA … but different implementation approach:
Classic SOA integrates different applications as a set of services
Microservices architect a single application as a set of services
![Page 15: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/15.jpg)
Classic SOA integrates different applications as a set of services
Microservices
Enterprise Service Bus
WS* WS* WS* WS* WS*
WS* WS* WS* WS* WS*
Workflow Engine
Intelligence
Orchestration
![Page 16: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/16.jpg)
integrates different applications as a set of services
Microservices architect a single application as a set of services
business platform
accounting service contract
service
ordering service
logistics service
prospects service
capability X service
capability Y service
external integrationsbackends
{ API } { API }{ API }
{ API } { API }
{ API }{ API }
{ API } { API }
{ API } { API }
![Page 17: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/17.jpg)
Classic SOA integrates different applications as a set of services
Microservices architect a single application as a set of services
Typical implementation solution differs!
Heavy-weight
ESBWS*/SOAP
Orchestration
License-drivenTarget problem:
Integrate (Legacy) Software
Intelligent Communication Layer
Light-weight
HTTP/REST/JSON
Choreography
Target problem: Architect new Business Platform
Dumb Communication Layer
Intelligent Services
![Page 18: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/18.jpg)
Any practical advice on how I can start building the microservice stuff?
![Page 19: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/19.jpg)
side note: Domain Driven DesignTackling complexity by abstracting the business domain concepts and logic into a
domain model and using this as a base for software development
“In order to create good software, you have to know what that software is all about. You cannot create a banking software system unless you have a good understanding of what
banking is all about, one must understand the domain of banking.”
Eric Evans
![Page 20: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/20.jpg)
Domain driven design deals with large complex models by dividing them into different functionally bounded subdomains and the explicitly describing the
interrelations between these subdomains.
Bounded contexts
![Page 21: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/21.jpg)
AccountingInventory
BillingOrdering
Functional decomposition of the business domain
![Page 22: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/22.jpg)
Functional decomposition of the business domain
AccountingInventory
BillingOrdering
customer
Invoice
balance
order
item
item
stock order
order
item
incoming cash
outgoing cash
stock
![Page 23: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/23.jpg)
Benefits of functional decomposition
![Page 24: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/24.jpg)
AccountingInventory
BillingOrdering
customer
Invoice
balance
order
item
item
stock order
order
item
incoming cash
outgoing cash
stock
Benefits of functional decomposition
![Page 25: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/25.jpg)
Applying services to bounded contexts
Accounting ServiceInventory Service
Billing ServiceOrdering Service
customer
Invoice
balance
order
item
item
stock order
order
item
incoming cash
outgoing cash
stock
AccountingInventory
BillingOrdering
customer
Invoice
balance
order
item
item
stock order
order
item
incoming cash
outgoing cash
stock
![Page 26: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/26.jpg)
take notice.
![Page 27: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/27.jpg)
Sam Newman
“If you’re coming from a monolithic system point of view, you’ll have to get much better at handling deployment, testing, and
monitoring to unlock the benefits we’ve covered so far. You’ll also need to think differently about how you scale your systems and
ensure that they are resilient. Don’t also be surprised if things like distributed transactions or CAP theorem start giving you
headaches, either!”
![Page 28: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/28.jpg)
What do we need to get started?
![Page 29: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/29.jpg)
Implementing a Microservice
![Page 30: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/30.jpg)
java -jar payara-micro.jar --deploy test.war
![Page 31: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/31.jpg)
Service Discovery
![Page 32: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/32.jpg)
NodeClient
Node
Node
Node
Node
?
Loadbalancer
Single Point of Failure Manual configuration management
![Page 33: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/33.jpg)
Client
Node
Node
Node
Node
?
Registry
register
health
lookup
Node
🚫
unregister
![Page 34: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/34.jpg)
K/V
K/V
K/V
K/V
K/V
/etc distributed
raft - leader election
//Adding a value $ curl http://127.0.0.1:2379/v2/keys/message -XPUT -d value="Hello world”
//Quering $ curl http://127.0.0.1:2379/v2/keys/message { "action": "get", "node": { "createdIndex": 2, "key": "/message", "modifiedIndex": 2, "value": "Hello world" } }
//Delete $ curl http://127.0.0.1:2379/v2/keys/message -XDELETE
Operations
![Page 35: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/35.jpg)
K/V
K/V
K/V
K/V
K/V
/etc distributed
raft - leader election
SkyDNS
//registration $ curl -XPUT http://127.0.0.1:4001/v2/keys/skydns/local/production/preference/1 \ -d value=‘{“host”:”service5.example.com”,"port": 8080, “priority”:20}'
Operations
% dig @localhost SRV preference.production.local
;; ANSWER SECTION: preference.production.local. 3600 IN SRV 10 20 8080 service5.example.com. preference.production.local. 3600 IN SRV 10 20 8081 service4.example.com.
;; ADDITIONAL SECTION: service4.example.com. 3600 IN A 10.0.1.125 service5.example.com. 3600 IN A 10.0.2.126
Operations
![Page 36: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/36.jpg)
A HashiCorp Project.
https://www.consul.io/
K/V
K/V
K/V
K/V
K/V
Distributed Key/Value Store
http
dnsClient
raft - leader election gossip - node detection
Node
{ "service": { "name": "preference", "tags": ["spring"], "port": 8000,
"checks": [ { "script": "/usr/local/bin/check_preference.py", "interval": "10s" } ] } }
Service Registration
$ dig @127.0.0.1 -p 8600 preference.service.consul SRV ... ;; QUESTION SECTION: ;preference.service.consul. IN SRV
;; ANSWER SECTION: preference.service.consul. 0 IN SRV 1 1 8000 agent-one.node.dc1.consul.
;; ADDITIONAL SECTION: agent-one.node.dc1.consul. 0 IN A 172.20.20.11
Service Query (DNS)
$ curl http://localhost:8500/v1/catalog/service/preference [{"Node":"agent-one","Address":"172.20.20.11","ServiceID":"preference", \ "ServiceName":"preference","ServiceTags":["spring"],"ServicePort":8000}]
Service Query (http)
![Page 37: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/37.jpg)
Static
Dynamic
Loadbalancer Loadbalancer
MicroService MicroService MicroService MicroService MicroService
Web Front End
Web Front End
Web Front End
Web Front End
Web Front End
MicroService MicroService MicroService MicroService MicroService
A
B
Midtier Service Registry
MicroServiceregister
renew
get registry
eureka
ribbon
https://github.com/Netflix/eureka
https://github.com/Netflix/ribbon
![Page 38: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/38.jpg)
Apache ZooKeeper™
synapse - HAProxy based service discovery/routing
nerve - sidecar for service registration
we can’t cover them all …
![Page 39: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/39.jpg)
Registration
Embedded In-app registrationSidecar based approach
⊖ • more difficult to take
service lifecycle into account
⊕ • no impact on the
application • language agnostic • easier to control service
registration
⊖ • requires language
specific integration • will not work with
legacy services
⊕ • deep integration with
insight in the service lifecycle
Discovery
API basedDNS
⊖ • TTL difficulties • complex routing
requires tighter integration
⊕ • legacy integration
⊖ • API integration has
impact on the application
⊕ • service metadata can be
leveraged for routing
![Page 40: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/40.jpg)
API Gateway & Routing
![Page 41: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/41.jpg)
![Page 42: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/42.jpg)
Hides partitioning of microservices
Single point of entry
Client-tailored API
Request aggregationfor performance
Simplifies clients by aggregation of APIs
Increased complexity
Increased response time by network hop
![Page 43: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/43.jpg)
Surgical Routing
Stress Testing
Canary Testing
Authentication
Authorization
Choosing origin servers
Logging debug info
Adding headers
Gathering statistics and metrics
Filter error handling
Generate static responses
Load Shedding
Dynamic behaviour change
…
![Page 44: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/44.jpg)
![Page 45: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/45.jpg)
![Page 46: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/46.jpg)
Architect for Failure
![Page 47: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/47.jpg)
![Page 48: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/48.jpg)
![Page 49: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/49.jpg)
![Page 50: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/50.jpg)
![Page 51: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/51.jpg)
![Page 52: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/52.jpg)
Deployment
![Page 53: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/53.jpg)
from CI to CD
![Page 54: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/54.jpg)
Continuous Integration Infrastructure
build
Source Control System
Monolithic Build
single version tree
/preference-service /ordering-service /inventory-service …
Repositorypreference-service-
artefact-311
preference-service-artefact-311
preference-service-artefact-311
![Page 55: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/55.jpg)
Continuous Integration Infrastructure
Source Control System
own version tree
/preference-service
Repository
/ordering-service
Repository
/inventory-service
Repository
MicroService Build preference-service-artefact-765
preference-service-artefact-311MicroService Build
preference-service-artefact-459MicroService Build
![Page 56: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/56.jpg)
preference-service-artefact-765
preference-service-artefact-311
preference-service-artefact-459
preference-service-artefact-765
deployment contextHandover environment specific technology specific application specific
![Page 57: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/57.jpg)
preference-service-artefact-765
preference-service-artefact-311
preference-service-artefact-459
preference-service-artefact-765
deployment contextHandover
Automated installation scripts
⊖ execution time lots of scripts with small delta’s
⊕ transaction cost goes down repeatable deployments
Machine image with backed in microservice as build artefact
![Page 58: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/58.jpg)
preference-service-artefact-765
preference-service-artefact-311
preference-service-artefact-459
preference-service-artefact-765
HandoverMachine image with backed in microservice as build artefact
VM Image
⊖ overhead of machine VM based deployment
⊕ speed of deployment
Containers with backed in microservice as build artefact
![Page 59: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/59.jpg)
Compute, Storage, Network
Host OS
Hypervisor
VM1
MicroService
Guest OS
JVM
VM’s abstract underlying hardware, but limits resource utilisation
VM2
MicroService
Guest OS
JVM
• Isolation
• namespace
• pid mnt net uts ipc user
• resource usage
• (CPU, memory, disk I/O, etc.)
• Limited impact on Performance -
• http://ibm.co/V55Otq
• Daemon and CLI
Compute, Storage, Network
Host OS
container1
container2
container3
container4
JVM JVM JVM
MicroService MicroService MicroService
JVM
MicroService
Containers have own isolated resources
![Page 60: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/60.jpg)
/preference-service
Repository
DockerFile
Continuous Integration Infrastructure
Container Image Repository
Compute, Storage, Network
Host OS
daemon
container1
JVM
MicroService
pull
push
build
provision
container1
JVM
MicroService
Source Control System
![Page 61: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/61.jpg)
Container Image
preference-service-artefact-765
![Page 62: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/62.jpg)
![Page 63: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/63.jpg)
Patterns
![Page 64: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/64.jpg)
Container Image
preference-service-artefact-765
Blue Green
Content Based Router
Blue/Green deployments
Container Image
preference-service-artefact-765
Container Image
preference-service-artefact-123
production traffictest traffic
![Page 65: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/65.jpg)
Container Image
preference-service-artefact-765
Stage 1 Stage 2 Stage 3
Content Based Router
Canary staged deployment
![Page 66: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/66.jpg)
![Page 67: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/67.jpg)
![Page 68: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/68.jpg)
![Page 69: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/69.jpg)
![Page 70: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/70.jpg)
![Page 71: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/71.jpg)
Zipkin + Sleuth heavily borrowing from Dapper & HTrace
![Page 72: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/72.jpg)
CollectD & StatsD
![Page 73: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/73.jpg)
![Page 74: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/74.jpg)
![Page 75: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/75.jpg)
![Page 76: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/76.jpg)
![Page 77: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/77.jpg)
![Page 78: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/78.jpg)
![Page 79: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/79.jpg)
![Page 80: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/80.jpg)
![Page 81: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/81.jpg)
Roll Your Own
https://github.com/DennisJaamann/micro-services-gui/tree/dev
![Page 82: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/82.jpg)
What about DynaTrace?
![Page 83: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/83.jpg)
![Page 84: Microservices with Stijn Van den Enden & Andreas Evers - BeJUG](https://reader031.fdocuments.us/reader031/viewer/2022030221/5884a56b1a28ab76798b4a83/html5/thumbnails/84.jpg)
- Correct Functional decomposition is crucial - reflect it in a organisational structure (💡Conway’s law)
- Getting it right is not guaranteed to be easy - your aiming for a very high standard in software delivery - balance the needs (advantages) with the costs (tradeoffs)
- take a simple step at a time
Conclusion
Are they here to stay?who can tell? but the monolith is dead