SlideShare a Scribd company logo
1 of 20
Download to read offline
Crashing Pods
–
How to compensate for such an outage?
Michael Hofmann
Hofmann IT-Consulting
info@hofmann-itconsulting.de
https://hofmann-itconsulting.de
Crashing pods?
●
Controlled (error state): rolling update
●
Application deadlock
– Thread pool full
– Thread deadlock situation (detection in JVM)
●
Memory Leak (out of memory)
●
Bug in application or application server
Mitigation/Compensation Strategies
●
Quick recognition of error state for recovery
●
Short time for eventual consistency
●
Controlled error state (e.g. rolling update)
●
Intelligent routing (outlier detection)
●
Classic resilience
Kubernetes Architecture
Source: https://kubernetes.io/docs/concepts/overview/components/
Liveness and readiness probes
spec:
containers:
- name: crashing-pod
image: hofmann/crashing-pod:latest
imagePullPolicy: Never
ports:
- containerPort: 9080
livenessProbe:
httpGet:
path: /health/live
port: 9080
initialDelaySeconds: 10
periodSeconds: 5
timeoutSeconds: 1
failureThreshold: 5
readinessProbe:
httpGet:
path: /health/ready
port: 9080
initialDelaySeconds: 15
periodSeconds: 5
timeoutSeconds: 1
failureThreshold: 5
●
Difference liveness
and readiness probe
●
Only pods with a
successful readiness
probe will be
assigned to a service
(endpoint, get IP)
From service to pod
●
Service
– Called by client: <svc-name>.<ns>.svc.cluster.local
– Basis for dns naming
– References pod by labels
●
Pods
– Assigned IPs
●
Endpoints
– Connects service to pod-instances (IPs)
– stored in etcd: IP and port
– Endpoint refresh: pod created, pod deleted, pod label modified
– Basis for: kube-proxy, ingress controller, coreDNS, cloud provider, service mesh
Workflow
Endpoint outdated
●
Kubelet:
– Readiness probes
– Housekeeping interval to update endpoint
●
Kube-proxy (iptables settings)
●
Kubernetes DNS (coreDNS)
●
Caching of DNS values in client
Rolling update
●
Update running pods
– Defined by rolling update strategy
●
Influenced by
– liveness and readiness probes
– preStop lifecycle hook
●
Distributed infrastructure can react on error state (update components)
– SIGTERM (not SIGKILL)
●
Shutdown hook in application server (finish open requests)
●
Target: zero-downtime-deployment (should...)
Rolling update & preStop Hook
readinessProbe:
...
lifecycle:
preStop:
exec:
command: ["/bin/bash", "-c", "sleep 30"]
strategy: # default of k8s
type: RollingUpdate
rollingUpdate:
maxSurge: 1 # max. 1 over-provisioned pod
maxUnavailable: 0 # no unavailable pod during update
Container
Deployment
Intelligent Routing
●
Server side load balancing
– Endpoint handling done by infrastructure (K8S)
– Requests will be routed to faulty instance until platform evicts faulty instance
●
Client side load balancing
– Client must now all endpoints: dependency on infrastructure (service registry)
– Can react on faulty request
●
Outlier detection (additional to client side LB)
– Faulty instance (HTTP >= 500) will be evicted (period of time)
– Reacts faster than distributed infrastructure
Resilience
●
Frameworks
– Server side load balancing
●
Retry storm on faulty pods
– Spring Cloud LoadBalancer (client side LB)
●
Since 2020
●
Generic abstraction for Netflix Ribbon
●
Kubernetes and Cloud Foundry service registry
●
Service Mesh
Idempotency
●
Retry causes multiple calls!
●
GET, HEAD, OPTIONS, DELETE (if exists)
●
PUT
– Idempotent by definition
●
must be implemented idempotent (DuplicateKeyException)
– Primary key must be in payload
●
POST
– Idempotency key in header
– Idempotency key stored in separate table
– PUT semantics with primary key (header vs. payload)
Istio
Istio
●
Resilience
●
Client side load balancing (knows pods)
●
Outlier detection
●
Does it`s own health checks (in addition to
kubelet)
●
kubelet checks sidecar and workload together
Istio
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: mesh-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
Istio
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: crashing-pod
spec:
gateways:
- mesh-gateway
hosts:
- "*"
http:
- match:
- uri:
prefix: /
route:
- destination:
port:
number: 9080
host: crashing-pod
subset: v1
retries:
attempts: 3
perTryTimeout: 1s
apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
name: crashing-pod
spec:
host: crashing-pod
subsets:
- name: v1
labels:
app: crashing-pod
trafficPolicy:
tls:
mode: DISABLE
loadBalancer:
simple: ROUND_ROBIN
outlierDetection:
consecutiveGatewayErrors: 1
interval: 1.0s
baseEjectionTime: 30s
Recap: Quick Error-Recognition
●
Interval of health probes (liveness, readiness) by kubelet
●
Other error detection by kubelet (OOM)
●
Problem: distributed architecture of K8S (propagation of
error event to components)
●
Error type:
– Controlled error state (e.g. rolling update)
– Fast detectable errors
– Slow detectable errors
Demo
Summary
●
Distributed architecture of K8S
●
Controlled error state: 99,9% (see rolling update) -->
100%?!
●
Mix of strategy necessary: 100%
– Client side load balancing
– Outlier detection
– Resilience
– Idempotency

More Related Content

More from Michael Hofmann

Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Michael Hofmann
 
Service Mesh - kilometer 30 in a microservice marathon
Service Mesh - kilometer 30 in a microservice marathonService Mesh - kilometer 30 in a microservice marathon
Service Mesh - kilometer 30 in a microservice marathonMichael Hofmann
 
Service Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-MarathonService Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-MarathonMichael Hofmann
 
API-Economy bei Financial Services – Kein Stein bleibt auf dem anderen
API-Economy bei Financial Services – Kein Stein bleibt auf dem anderenAPI-Economy bei Financial Services – Kein Stein bleibt auf dem anderen
API-Economy bei Financial Services – Kein Stein bleibt auf dem anderenMichael Hofmann
 
Microprofile.io - Cloud Native mit Java EE
Microprofile.io - Cloud Native mit Java EEMicroprofile.io - Cloud Native mit Java EE
Microprofile.io - Cloud Native mit Java EEMichael Hofmann
 
Microservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMicroservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMichael Hofmann
 

More from Michael Hofmann (6)

Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
Service Mesh mit Istio und MicroProfile - eine harmonische Kombination?
 
Service Mesh - kilometer 30 in a microservice marathon
Service Mesh - kilometer 30 in a microservice marathonService Mesh - kilometer 30 in a microservice marathon
Service Mesh - kilometer 30 in a microservice marathon
 
Service Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-MarathonService Mesh - Kilometer 30 im Microservices-Marathon
Service Mesh - Kilometer 30 im Microservices-Marathon
 
API-Economy bei Financial Services – Kein Stein bleibt auf dem anderen
API-Economy bei Financial Services – Kein Stein bleibt auf dem anderenAPI-Economy bei Financial Services – Kein Stein bleibt auf dem anderen
API-Economy bei Financial Services – Kein Stein bleibt auf dem anderen
 
Microprofile.io - Cloud Native mit Java EE
Microprofile.io - Cloud Native mit Java EEMicroprofile.io - Cloud Native mit Java EE
Microprofile.io - Cloud Native mit Java EE
 
Microservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM LibertyMicroservices mit Java EE - am Beispiel von IBM Liberty
Microservices mit Java EE - am Beispiel von IBM Liberty
 

Recently uploaded

英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 

Recently uploaded (20)

英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 

Crashing Pods: How to Compensate for such an Outage?

  • 1. Crashing Pods – How to compensate for such an outage? Michael Hofmann Hofmann IT-Consulting info@hofmann-itconsulting.de https://hofmann-itconsulting.de
  • 2. Crashing pods? ● Controlled (error state): rolling update ● Application deadlock – Thread pool full – Thread deadlock situation (detection in JVM) ● Memory Leak (out of memory) ● Bug in application or application server
  • 3. Mitigation/Compensation Strategies ● Quick recognition of error state for recovery ● Short time for eventual consistency ● Controlled error state (e.g. rolling update) ● Intelligent routing (outlier detection) ● Classic resilience
  • 5. Liveness and readiness probes spec: containers: - name: crashing-pod image: hofmann/crashing-pod:latest imagePullPolicy: Never ports: - containerPort: 9080 livenessProbe: httpGet: path: /health/live port: 9080 initialDelaySeconds: 10 periodSeconds: 5 timeoutSeconds: 1 failureThreshold: 5 readinessProbe: httpGet: path: /health/ready port: 9080 initialDelaySeconds: 15 periodSeconds: 5 timeoutSeconds: 1 failureThreshold: 5 ● Difference liveness and readiness probe ● Only pods with a successful readiness probe will be assigned to a service (endpoint, get IP)
  • 6. From service to pod ● Service – Called by client: <svc-name>.<ns>.svc.cluster.local – Basis for dns naming – References pod by labels ● Pods – Assigned IPs ● Endpoints – Connects service to pod-instances (IPs) – stored in etcd: IP and port – Endpoint refresh: pod created, pod deleted, pod label modified – Basis for: kube-proxy, ingress controller, coreDNS, cloud provider, service mesh
  • 8. Endpoint outdated ● Kubelet: – Readiness probes – Housekeeping interval to update endpoint ● Kube-proxy (iptables settings) ● Kubernetes DNS (coreDNS) ● Caching of DNS values in client
  • 9. Rolling update ● Update running pods – Defined by rolling update strategy ● Influenced by – liveness and readiness probes – preStop lifecycle hook ● Distributed infrastructure can react on error state (update components) – SIGTERM (not SIGKILL) ● Shutdown hook in application server (finish open requests) ● Target: zero-downtime-deployment (should...)
  • 10. Rolling update & preStop Hook readinessProbe: ... lifecycle: preStop: exec: command: ["/bin/bash", "-c", "sleep 30"] strategy: # default of k8s type: RollingUpdate rollingUpdate: maxSurge: 1 # max. 1 over-provisioned pod maxUnavailable: 0 # no unavailable pod during update Container Deployment
  • 11. Intelligent Routing ● Server side load balancing – Endpoint handling done by infrastructure (K8S) – Requests will be routed to faulty instance until platform evicts faulty instance ● Client side load balancing – Client must now all endpoints: dependency on infrastructure (service registry) – Can react on faulty request ● Outlier detection (additional to client side LB) – Faulty instance (HTTP >= 500) will be evicted (period of time) – Reacts faster than distributed infrastructure
  • 12. Resilience ● Frameworks – Server side load balancing ● Retry storm on faulty pods – Spring Cloud LoadBalancer (client side LB) ● Since 2020 ● Generic abstraction for Netflix Ribbon ● Kubernetes and Cloud Foundry service registry ● Service Mesh
  • 13. Idempotency ● Retry causes multiple calls! ● GET, HEAD, OPTIONS, DELETE (if exists) ● PUT – Idempotent by definition ● must be implemented idempotent (DuplicateKeyException) – Primary key must be in payload ● POST – Idempotency key in header – Idempotency key stored in separate table – PUT semantics with primary key (header vs. payload)
  • 14. Istio
  • 15. Istio ● Resilience ● Client side load balancing (knows pods) ● Outlier detection ● Does it`s own health checks (in addition to kubelet) ● kubelet checks sidecar and workload together
  • 16. Istio apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: mesh-gateway spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "*"
  • 17. Istio apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: crashing-pod spec: gateways: - mesh-gateway hosts: - "*" http: - match: - uri: prefix: / route: - destination: port: number: 9080 host: crashing-pod subset: v1 retries: attempts: 3 perTryTimeout: 1s apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: crashing-pod spec: host: crashing-pod subsets: - name: v1 labels: app: crashing-pod trafficPolicy: tls: mode: DISABLE loadBalancer: simple: ROUND_ROBIN outlierDetection: consecutiveGatewayErrors: 1 interval: 1.0s baseEjectionTime: 30s
  • 18. Recap: Quick Error-Recognition ● Interval of health probes (liveness, readiness) by kubelet ● Other error detection by kubelet (OOM) ● Problem: distributed architecture of K8S (propagation of error event to components) ● Error type: – Controlled error state (e.g. rolling update) – Fast detectable errors – Slow detectable errors
  • 19. Demo
  • 20. Summary ● Distributed architecture of K8S ● Controlled error state: 99,9% (see rolling update) --> 100%?! ● Mix of strategy necessary: 100% – Client side load balancing – Outlier detection – Resilience – Idempotency