SlideShare a Scribd company logo
1 of 42
Download to read offline
Quo Vadis
Netflix Stack?
// Baris Cubukcuoglu & Fabian Keller
Photo by Ajeet Mestry on Unsplash
Baris Cubukcuoglu
Software Engineer
Photographer
@bariscubuk__
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 2
Fabian Keller
Software Engineer
Woodworker
@_fabiankeller
Netflix OSS – Well known Projects
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 4
Zuul
API Gateway
Eureka
Service Registry
Archaius
Centralized Config
Microservice A
Hystrix
Ribbon
Microservice B
Hystrix
Ribbon
Feign Feign
Eureka, Feign & Ribbon (with Spring Cloud)
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 5
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Hystrix (with Spring Cloud)
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 6
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Zuul (with Spring Cloud)
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 7
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Archaius (with Spring Cloud)
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 8
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
9
Maintenance Mode
Photo by Pandu Agus Wismoyo on Unsplash
Archaius
Centralized Config
Zuul
API Gateway
Eureka
Service Registry
Microservice A
Hystrix
Ribbon
Microservice B
Hystrix
Ribbon
Feign Feign
Which Projects are affected?
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 10
Maintenance Mode
Maintenance Mode
Are there any alternatives?
TL;DR: yes!
For Hystrix:
Resilience4j, Sentinel, Spring Retry
For Hystrix Dashboard / Turbine:
Micrometer + Monitoring System (e.g. Prometheus etc.)
For Archaius:
Spring Cloud Config, HashiCorp Vault
For Ribbon:
Spring Cloud Load Balancer, gRPC
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 11
Fallacies of Distributed Computing
see https://bit.ly/1IEpFC0
The network is reliable
Latency is zero
Bandwidth is infinite
The network is secure
Topology doesn’t change
There is one administrator
Transport cost is zero
The network is homogeneous
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 12
Patterns
• Stability
• Capability
• Transparency
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 13
Photo by chuttersnap on Unsplash
15% Internet Traffic
Service Discovery
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 15
Client
Registry
Service A
Service A
Service A
Service A
Service A
Service B
Load
balance
Register
Lookup
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Load Balancing
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 16
Client
Service Service
Availability
Filtering
Client
Service Service
Round Robin
Client
Service
0.7
Service
0.3
Weighted
Response Time
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Circuit Breaker
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 17
Execute Command
Run
Fallback
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Bulkhead
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 18
Thread pool
Service
X
Service
Z
Resource
Call
Resource
Call
Resource
Call
DB Y
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Bulkhead
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 19
Service
X
Service
Z
Resource
Call
Resource
Call
Resource
Call
DB Y
Pool X Pool Y Pool Z
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
API Gateway
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 20
Client
Resource
Resource
Resource
Resource
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
API Gateway
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 21
Client
Resource
Resource
Resource
Resource
API Gateway
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 22
The Modern Cloud Stack
Photo by Pero Kalimero on Unsplash
Where do we begin with?
A homogeneous microservice landscape, yeah right…
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 23
Netflix
OSS
Netflix
OSS
Netflix
OSS
Netflix
OSS
Netflix
OSS
Netflix
OSS
Netflix
OSS
Netflix
OSS
?!
So how do we solve all these challenges?
Using sidecars instead of libraries
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 24
Application Layer
Cross-cutting concerns
Infrastructure Layer
Cross-cutting concerns
Application
Netflix
OSS
Application
Egress
Ingress
Egress
Ingress
Egress
Ingress
Egress
Ingress
Egress
Ingress
Egress
Ingress
Egress
Ingress
Egress
Ingress
Egress
Ingress
Adding the sidecars to all containers
We can have the exact same architecture as before
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 25
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 26
Photo by Erdenebayar Bayansan on Pixabay
Cloud Foundry
What is Cloud Foundry?
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 27
Open Source Faster to iterate Scalable platform
cf push -p target/spring-music.jar
Container Network
Cloud Foundry Service Discovery
a.k.a. Container Networking. Also enables client-side load balancing via DNS
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 28
moments.apps.internal
10.254.40.156
media.apps.internal
10.254.40.148
media.apps.internal
10.254.40.123
media.apps.internal
10.254.40.42
myapp.com
10.254.40.156
moments.apps.internal
10.254.40.148
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
DNS? moments.apps.internal
A 10.254.40.148
A 10.254.40.156
Cloud Foundry Service Discovery
How to setup CF container network
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 29
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Cloud Foundry Route Services
Taking care of ingress traffic
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 30
Cloud Foundry
CF
Router
App
Load
Balancr
Client
Route
Service
Service
Broker
• Security
• Rate Limiting
• Caching
• Tracing
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Cloud Foundry Dynamic App Config
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 31
CF SET-ENV CF RESTART
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 32
Kubernetes Istio
Photo by Bobby Burch on Unsplash
Kubernetes Service Discovery
Deployments and Services
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 33
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Environment
moments
172.10.40.156
media
172.10. 40.148
media
172.10.40.123
media
172.10.40.42
Cluster IP
10.254.40.156
moments
172.10.40.148
DNS? moments
A 10.254.40.148
Kind: k8s/DeploymentKind: k8s/Service
moments.my-namespace.svc.cluster.local
10.98.61.186
Kubernetes Service Discovery
Exposing a service
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 34
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
new RestTemplate().exchange(„http://moments/api/v1/timeline“, …)
Pod 1 moments-pod172.10.40.148
Pod 2 moments-pod172.10.40.156
Istio Architecture
Control Plane and Data Plane
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 35
Control Plane
Data Plane
Pilot Citadel Mixer
Pod 1
Envoy
App 1
Pod 2
Envoy
App 2
Istio VirtualService
Adding a VirtualService layer to intelligently route traffic
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 36
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Kind: k8s/DeploymentKind: k8s/Service
moments-v1
10.98.61.186
Pod 1 moments-v1-pod
Pod 2 moments-v1-pod
Kind: istio/VirtualService
moments
Match routing rules:
/api/v1 à moments-v1
/api/v2 à moments-v2
Kind: k8s/Deployment
Pod 1 moments-v2-pod
Kind: k8s/Service
moments-v2
10.98.61.193
Istio Destination Rules
Destination rules apply after routing rules are evaluated
Apply various policies to traffic:
• Load Balancer Policy (RR, Random)
• Client TLS
• Circuit Breaker
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 37
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
K8s/Istio Dynamic App Config
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 38
VIM KUBE-APP.YAML KUBECTL APPLY
Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
Istio Additional Features
This was just the beginning…
• Automatic Retries
• Rate Limiting
• mTLS
• Policy Enforcement
• Observability & Monitoring
• Distributed Tracing
• Fault Injection
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 39
Platform Support
Service Discovery Eureka Container Networking Kubernetes Services
Load Balancing Ribbon Container Networking Kubernetes Services
Circuit Breaker Hystrix / Turbine – Istio Destination Rule
API Gateway Zuul
Route Services
Canary Deployments
Istio Virtual Service
Istio Gateway
Dynamic Config Archaius
cf set-env
cf restart
vim kube-app.yaml
kubectl apply
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 40
Limitations
There is always a flipside
• We‘re now hiring for a full-time YAML engineer
• Sometimes infrastructure shouldn‘t take care (e.g. retries)
• Yet another markup language stack to learn
• People will start to write microservices in other languages
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 41
Thanks!
kubectl apply –f questions.yaml
Come visit our booth!
2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller
Photo by Ajeet Mestry on Unsplash

More Related Content

What's hot

What's hot (20)

James Watters Kafka Summit NYC 2019 Keynote
James Watters Kafka Summit NYC 2019 KeynoteJames Watters Kafka Summit NYC 2019 Keynote
James Watters Kafka Summit NYC 2019 Keynote
 
Workshop: Develop Serverless Applications with IBM Cloud Functions
Workshop: Develop Serverless Applications with IBM Cloud FunctionsWorkshop: Develop Serverless Applications with IBM Cloud Functions
Workshop: Develop Serverless Applications with IBM Cloud Functions
 
Cloud-Native Roadshow - Microservices - Seattle
Cloud-Native Roadshow - Microservices - Seattle Cloud-Native Roadshow - Microservices - Seattle
Cloud-Native Roadshow - Microservices - Seattle
 
apidays LIVE Paris - Sustainability APIs and making APIs sustainable by Phil ...
apidays LIVE Paris - Sustainability APIs and making APIs sustainable by Phil ...apidays LIVE Paris - Sustainability APIs and making APIs sustainable by Phil ...
apidays LIVE Paris - Sustainability APIs and making APIs sustainable by Phil ...
 
Serverless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhiskServerless APIs with Apache OpenWhisk
Serverless APIs with Apache OpenWhisk
 
Real-time Analysis of Data Processing Pipelines with Spring Cloud Data Flow a...
Real-time Analysis of Data Processing Pipelines with Spring Cloud Data Flow a...Real-time Analysis of Data Processing Pipelines with Spring Cloud Data Flow a...
Real-time Analysis of Data Processing Pipelines with Spring Cloud Data Flow a...
 
The service mesh: resilient communication for microservice applications
The service mesh: resilient communication for microservice applicationsThe service mesh: resilient communication for microservice applications
The service mesh: resilient communication for microservice applications
 
Serverless Architectures in Banking: OpenWhisk on IBM Bluemix at Santander
Serverless Architectures in Banking: OpenWhisk on IBM Bluemix at SantanderServerless Architectures in Banking: OpenWhisk on IBM Bluemix at Santander
Serverless Architectures in Banking: OpenWhisk on IBM Bluemix at Santander
 
Meetup6 microservices for the IoT
Meetup6 microservices for the IoTMeetup6 microservices for the IoT
Meetup6 microservices for the IoT
 
How to develop your first cloud-native Applications with Java
How to develop your first cloud-native Applications with JavaHow to develop your first cloud-native Applications with Java
How to develop your first cloud-native Applications with Java
 
Building serverless applications with Apache OpenWhisk
Building serverless applications with Apache OpenWhiskBuilding serverless applications with Apache OpenWhisk
Building serverless applications with Apache OpenWhisk
 
Microservices with kubernetes @190316
Microservices with kubernetes @190316Microservices with kubernetes @190316
Microservices with kubernetes @190316
 
Let's be real. Quarkus in the wild.
Let's be real. Quarkus in the wild.Let's be real. Quarkus in the wild.
Let's be real. Quarkus in the wild.
 
Redefining Plattform "Openness" with OpenFaaS
Redefining Plattform "Openness" with OpenFaaSRedefining Plattform "Openness" with OpenFaaS
Redefining Plattform "Openness" with OpenFaaS
 
The Beginner’s Guide To Spring Cloud
The Beginner’s Guide To Spring CloudThe Beginner’s Guide To Spring Cloud
The Beginner’s Guide To Spring Cloud
 
Building serverless applications with Apache OpenWhisk and IBM Cloud Functions
Building serverless applications with Apache OpenWhisk and IBM Cloud FunctionsBuilding serverless applications with Apache OpenWhisk and IBM Cloud Functions
Building serverless applications with Apache OpenWhisk and IBM Cloud Functions
 
Consul connect
Consul connectConsul connect
Consul connect
 
Spring Cloud Data Flow Overview
Spring Cloud Data Flow OverviewSpring Cloud Data Flow Overview
Spring Cloud Data Flow Overview
 
APIdays Paris 2019 - Delivering Exceptional User Experience with REST and Gra...
APIdays Paris 2019 - Delivering Exceptional User Experience with REST and Gra...APIdays Paris 2019 - Delivering Exceptional User Experience with REST and Gra...
APIdays Paris 2019 - Delivering Exceptional User Experience with REST and Gra...
 
Consul connect
Consul connectConsul connect
Consul connect
 

Similar to Quo Vadis Netflix Stack?

Similar to Quo Vadis Netflix Stack? (20)

Kubernetes and Istio
Kubernetes and IstioKubernetes and Istio
Kubernetes and Istio
 
Recap of de code 2019
Recap of de code 2019Recap of de code 2019
Recap of de code 2019
 
Test your Kubernetes operator with Operator Lifecycle Management
Test your Kubernetes operator with Operator Lifecycle ManagementTest your Kubernetes operator with Operator Lifecycle Management
Test your Kubernetes operator with Operator Lifecycle Management
 
Blasting Through the Clouds - Automating Cloud Foundry with Concourse CI
Blasting Through the Clouds - Automating Cloud Foundry with Concourse CIBlasting Through the Clouds - Automating Cloud Foundry with Concourse CI
Blasting Through the Clouds - Automating Cloud Foundry with Concourse CI
 
Istio By Example (extended version)
Istio By Example (extended version)Istio By Example (extended version)
Istio By Example (extended version)
 
Istio by Example (extended version)
Istio by Example (extended version)Istio by Example (extended version)
Istio by Example (extended version)
 
Kuo wei's thesis
Kuo wei's thesisKuo wei's thesis
Kuo wei's thesis
 
Cisco and F5 accelerate Application Delivery
Cisco and F5 accelerate Application DeliveryCisco and F5 accelerate Application Delivery
Cisco and F5 accelerate Application Delivery
 
CNCF App-Delivery SIG Presentation - Litmus Chaos Engineering
CNCF App-Delivery SIG Presentation - Litmus Chaos EngineeringCNCF App-Delivery SIG Presentation - Litmus Chaos Engineering
CNCF App-Delivery SIG Presentation - Litmus Chaos Engineering
 
Tech Talks On Site- Edição de Maio- AutoScaling
Tech Talks On Site- Edição de Maio- AutoScalingTech Talks On Site- Edição de Maio- AutoScaling
Tech Talks On Site- Edição de Maio- AutoScaling
 
Kubernetes and the 12 factor cloud apps
Kubernetes and the 12 factor cloud appsKubernetes and the 12 factor cloud apps
Kubernetes and the 12 factor cloud apps
 
SpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSASpringBoot and Spring Cloud Service for MSA
SpringBoot and Spring Cloud Service for MSA
 
DevOps monitoring: Best Practices using OpenShift combined with Icinga & Big ...
DevOps monitoring: Best Practices using OpenShift combined with Icinga & Big ...DevOps monitoring: Best Practices using OpenShift combined with Icinga & Big ...
DevOps monitoring: Best Practices using OpenShift combined with Icinga & Big ...
 
TIME Journey to the SPACE
TIME Journey to the SPACETIME Journey to the SPACE
TIME Journey to the SPACE
 
Kubernetes and the 12 factor cloud apps
Kubernetes and the 12 factor cloud appsKubernetes and the 12 factor cloud apps
Kubernetes and the 12 factor cloud apps
 
Enabling policy migration in the Data Center with Ansible
Enabling policy migration in the Data Center with AnsibleEnabling policy migration in the Data Center with Ansible
Enabling policy migration in the Data Center with Ansible
 
Microservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, KanbanMicroservices, Containers, Kubernetes, Kafka, Kanban
Microservices, Containers, Kubernetes, Kafka, Kanban
 
Cilium:: Application-Aware Microservices via BPF
Cilium:: Application-Aware Microservices via BPFCilium:: Application-Aware Microservices via BPF
Cilium:: Application-Aware Microservices via BPF
 
Yes, IPv6 is Real! How To Make Your Apps Work (And Be As Fast As Possible)
Yes, IPv6 is Real! How To Make Your Apps Work (And Be As Fast As Possible) Yes, IPv6 is Real! How To Make Your Apps Work (And Be As Fast As Possible)
Yes, IPv6 is Real! How To Make Your Apps Work (And Be As Fast As Possible)
 
A Real-Time Interface for Xcos – an illustrative demonstration using a batter...
A Real-Time Interface for Xcos – an illustrative demonstration using a batter...A Real-Time Interface for Xcos – an illustrative demonstration using a batter...
A Real-Time Interface for Xcos – an illustrative demonstration using a batter...
 

More from Fabian Keller

More from Fabian Keller (7)

The Challenges of Taking Open Source Cloud Foundry to Production
The Challenges of Taking Open Source Cloud Foundry to ProductionThe Challenges of Taking Open Source Cloud Foundry to Production
The Challenges of Taking Open Source Cloud Foundry to Production
 
Cloud Foundry - A Platform for Everyone
Cloud Foundry - A Platform for EveryoneCloud Foundry - A Platform for Everyone
Cloud Foundry - A Platform for Everyone
 
Skalierbare Multicast Konzepte
Skalierbare Multicast KonzepteSkalierbare Multicast Konzepte
Skalierbare Multicast Konzepte
 
Systematic Architecture Level Fault Diagnosis Using Statistical Techniques
Systematic Architecture Level Fault Diagnosis Using Statistical TechniquesSystematic Architecture Level Fault Diagnosis Using Statistical Techniques
Systematic Architecture Level Fault Diagnosis Using Statistical Techniques
 
Introducing Performance Awareness in an Integrated Specification Environment
Introducing Performance Awareness in an Integrated Specification EnvironmentIntroducing Performance Awareness in an Integrated Specification Environment
Introducing Performance Awareness in an Integrated Specification Environment
 
Referenzmodelle für das Informationsmanagement in der Smart Factory
Referenzmodelle für das Informationsmanagement in der Smart FactoryReferenzmodelle für das Informationsmanagement in der Smart Factory
Referenzmodelle für das Informationsmanagement in der Smart Factory
 
High Dimensional Data Visualization
High Dimensional Data VisualizationHigh Dimensional Data Visualization
High Dimensional Data Visualization
 

Recently uploaded

%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 

Recently uploaded (20)

WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
Abortion Pill Prices Boksburg [(+27832195400*)] 🏥 Women's Abortion Clinic in ...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - KanchanaWSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - Kanchana
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 

Quo Vadis Netflix Stack?

  • 1. Quo Vadis Netflix Stack? // Baris Cubukcuoglu & Fabian Keller Photo by Ajeet Mestry on Unsplash
  • 2. Baris Cubukcuoglu Software Engineer Photographer @bariscubuk__ 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 2 Fabian Keller Software Engineer Woodworker @_fabiankeller
  • 3.
  • 4. Netflix OSS – Well known Projects 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 4 Zuul API Gateway Eureka Service Registry Archaius Centralized Config Microservice A Hystrix Ribbon Microservice B Hystrix Ribbon Feign Feign
  • 5. Eureka, Feign & Ribbon (with Spring Cloud) 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 5 Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 6. Hystrix (with Spring Cloud) 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 6 Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 7. Zuul (with Spring Cloud) 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 7 Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 8. Archaius (with Spring Cloud) 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 8 Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 9. 9 Maintenance Mode Photo by Pandu Agus Wismoyo on Unsplash
  • 10. Archaius Centralized Config Zuul API Gateway Eureka Service Registry Microservice A Hystrix Ribbon Microservice B Hystrix Ribbon Feign Feign Which Projects are affected? 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 10 Maintenance Mode Maintenance Mode
  • 11. Are there any alternatives? TL;DR: yes! For Hystrix: Resilience4j, Sentinel, Spring Retry For Hystrix Dashboard / Turbine: Micrometer + Monitoring System (e.g. Prometheus etc.) For Archaius: Spring Cloud Config, HashiCorp Vault For Ribbon: Spring Cloud Load Balancer, gRPC 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 11
  • 12. Fallacies of Distributed Computing see https://bit.ly/1IEpFC0 The network is reliable Latency is zero Bandwidth is infinite The network is secure Topology doesn’t change There is one administrator Transport cost is zero The network is homogeneous 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 12
  • 13. Patterns • Stability • Capability • Transparency 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 13
  • 14. Photo by chuttersnap on Unsplash 15% Internet Traffic
  • 15. Service Discovery 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 15 Client Registry Service A Service A Service A Service A Service A Service B Load balance Register Lookup Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 16. Load Balancing 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 16 Client Service Service Availability Filtering Client Service Service Round Robin Client Service 0.7 Service 0.3 Weighted Response Time Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 17. Circuit Breaker 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 17 Execute Command Run Fallback Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 18. Bulkhead 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 18 Thread pool Service X Service Z Resource Call Resource Call Resource Call DB Y Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 19. Bulkhead 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 19 Service X Service Z Resource Call Resource Call Resource Call DB Y Pool X Pool Y Pool Z Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 20. API Gateway 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 20 Client Resource Resource Resource Resource Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 21. API Gateway 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 21 Client Resource Resource Resource Resource API Gateway Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 22. 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 22 The Modern Cloud Stack Photo by Pero Kalimero on Unsplash
  • 23. Where do we begin with? A homogeneous microservice landscape, yeah right… 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 23 Netflix OSS Netflix OSS Netflix OSS Netflix OSS Netflix OSS Netflix OSS Netflix OSS Netflix OSS ?!
  • 24. So how do we solve all these challenges? Using sidecars instead of libraries 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 24 Application Layer Cross-cutting concerns Infrastructure Layer Cross-cutting concerns Application Netflix OSS Application Egress Ingress
  • 25. Egress Ingress Egress Ingress Egress Ingress Egress Ingress Egress Ingress Egress Ingress Egress Ingress Egress Ingress Adding the sidecars to all containers We can have the exact same architecture as before 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 25
  • 26. 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 26 Photo by Erdenebayar Bayansan on Pixabay
  • 27. Cloud Foundry What is Cloud Foundry? 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 27 Open Source Faster to iterate Scalable platform cf push -p target/spring-music.jar
  • 28. Container Network Cloud Foundry Service Discovery a.k.a. Container Networking. Also enables client-side load balancing via DNS 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 28 moments.apps.internal 10.254.40.156 media.apps.internal 10.254.40.148 media.apps.internal 10.254.40.123 media.apps.internal 10.254.40.42 myapp.com 10.254.40.156 moments.apps.internal 10.254.40.148 Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config DNS? moments.apps.internal A 10.254.40.148 A 10.254.40.156
  • 29. Cloud Foundry Service Discovery How to setup CF container network 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 29 Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 30. Cloud Foundry Route Services Taking care of ingress traffic 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 30 Cloud Foundry CF Router App Load Balancr Client Route Service Service Broker • Security • Rate Limiting • Caching • Tracing Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 31. Cloud Foundry Dynamic App Config 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 31 CF SET-ENV CF RESTART Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 32. 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 32 Kubernetes Istio Photo by Bobby Burch on Unsplash
  • 33. Kubernetes Service Discovery Deployments and Services 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 33 Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config Environment moments 172.10.40.156 media 172.10. 40.148 media 172.10.40.123 media 172.10.40.42 Cluster IP 10.254.40.156 moments 172.10.40.148 DNS? moments A 10.254.40.148
  • 34. Kind: k8s/DeploymentKind: k8s/Service moments.my-namespace.svc.cluster.local 10.98.61.186 Kubernetes Service Discovery Exposing a service 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 34 Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config new RestTemplate().exchange(„http://moments/api/v1/timeline“, …) Pod 1 moments-pod172.10.40.148 Pod 2 moments-pod172.10.40.156
  • 35. Istio Architecture Control Plane and Data Plane 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 35 Control Plane Data Plane Pilot Citadel Mixer Pod 1 Envoy App 1 Pod 2 Envoy App 2
  • 36. Istio VirtualService Adding a VirtualService layer to intelligently route traffic 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 36 Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config Kind: k8s/DeploymentKind: k8s/Service moments-v1 10.98.61.186 Pod 1 moments-v1-pod Pod 2 moments-v1-pod Kind: istio/VirtualService moments Match routing rules: /api/v1 à moments-v1 /api/v2 à moments-v2 Kind: k8s/Deployment Pod 1 moments-v2-pod Kind: k8s/Service moments-v2 10.98.61.193
  • 37. Istio Destination Rules Destination rules apply after routing rules are evaluated Apply various policies to traffic: • Load Balancer Policy (RR, Random) • Client TLS • Circuit Breaker 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 37 Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 38. K8s/Istio Dynamic App Config 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 38 VIM KUBE-APP.YAML KUBECTL APPLY Service Discovery Load Balancing Circuit Breaker API Gateway Dynamic Config
  • 39. Istio Additional Features This was just the beginning… • Automatic Retries • Rate Limiting • mTLS • Policy Enforcement • Observability & Monitoring • Distributed Tracing • Fault Injection 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 39
  • 40. Platform Support Service Discovery Eureka Container Networking Kubernetes Services Load Balancing Ribbon Container Networking Kubernetes Services Circuit Breaker Hystrix / Turbine – Istio Destination Rule API Gateway Zuul Route Services Canary Deployments Istio Virtual Service Istio Gateway Dynamic Config Archaius cf set-env cf restart vim kube-app.yaml kubectl apply 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 40
  • 41. Limitations There is always a flipside • We‘re now hiring for a full-time YAML engineer • Sometimes infrastructure shouldn‘t take care (e.g. retries) • Yet another markup language stack to learn • People will start to write microservices in other languages 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller 41
  • 42. Thanks! kubectl apply –f questions.yaml Come visit our booth! 2019-07-04 / Java Forum Stuttgart / Baris Cubukcuoglu & Fabian Keller Photo by Ajeet Mestry on Unsplash