SlideShare a Scribd company logo
1 of 41
Envoy @ ft
José Niño
jnino@lyft.com - @junr03
Who am I?
Envoy
Maintainer
Networking
Team @ Lyft
@junr03
My time at Lyft
1. Initial Envoy open sourcing: documentation, and docker sandbox examples
2. Create Envoyoutbound: enable developers to easily communicate with partners
over stable IPs
3. Open sourcing ratelimit, and a couple other golang libraries: provide ample
documentation for consumers
4. Expand Envoy’s outlier detection system, and build tooling (stats, logging) to
help developers understand anomalies in their services
5. xDS APIs and the future of Envoy configuration management at Lyft: how do we
make the control plane accessible and easy to use
@junr03
There is a pattern...
1. Open sourcing envoy: documentation, and docker sandbox examples
2. Create Envoyoutbound: enable developers to easily communicate with
partners over stable IPs
3. Open sourcing ratelimit, and a couple other golang libraries: provide ample
documentation for consumers
4. Expand Envoy’s outlier detection system, and build tooling (stats, logging) to
help developers understand anomalies in their services
5. xDS APIs and the future of Envoy configuration management at Lyft: how do we
make the control plane accessible and easy to use
The focus is on developer productivity!
@junr03
The Story
Envoy is a powerful and complex tool.
How does the Networking Team at
Lyft hide the complexity to allow
service developers to leverage the
power of Envoy?
@junr03
Why is this important?
• Lyft engineers are the Infra org’s customers
• Lyft is about to have a lot more engineers
• The number of services at Lyft is ever increasing
@junr03
Frame of Reference - The Control Plane
• Proxy configuration is complicated: envoy is not the exception
• Operating the data plane should be reserved to a select few
• Configuring some options of the data plane via the control plane should be
open to all service owners
@junr03
Envoy Rollout @ Lyft
@junr03@junr03
Envoy Design Goals
1. Out of process architecture
2. Low latency, high performance, dev productivity
3. Filter Architecture: L3/L4 & L7
4. HTTP/2 first
5. Service/Config discovery
6. Active/passive health checking
7. Advanced load balancing
8. Envoy everywhere
9. Best in class observability
@junr03
Envoy Rollout - Edge Proxy
AWS TCP
ELB
Service Foo
Service Bar
Service Baz
/foo
/bar
/baz
1. Microservice architectures need an edge proxy
2. Easy to show value with:
‒ Stats
‒ Enhanced Load Balancing
‒ Routing
‒ Protocols
@junr03
Envoy Rollout - TCP Proxy / MongoDB
1. Parse Mongo at L7 and get useful stats
2. Ratelimit Mongo to avoid death spirals
3. Better connection handling than to raw
Mongo
4. We can do this with all services!
Global Ratelimit ServiceMongo Router
/ /
Mongo
DB
@junr03
Envoy Rollout - Service Sidecar
AWS TCP
ELB
1. Proxying to Mongo meant all Services already had Envoy running
2. Still used internal ELB for service-to-service traffic
3. Use for:
‒ Ingress buffering
‒ Circuit Breaking
‒ Observability
AWS TCP
ELB
/ /
@junr03
Envoy Rollout - Service Mesh
1. Direct Connect
2. Service Discovery
Cron job
Discovery
/ /
Cron job
@junr03
Envoy @ Lyft Mesh
Front Envoy
Envoyoutbound
Tracing Collectors Ratelimit Discovery
Ancillary Services
> 200 services
> 20,000 Hosts
> 5 million RPS
@junr03
Control Plane
@junr03
Configuration Management - The Past
Initially static files
‒ Only two types: edge proxy, service sidecar
‒ Deployed on a deploy bundle out to the edge proxy, and to all services in the mesh
Human Static Files
“Deploy
Magic”
Proxies
@junr03
Configuration Management - The Past
As complexity grew we moved to templated files
‒ Jinja2 templates, and some python glue
‒ Expose certain “knobs” to the service engineers at Lyft
‒ At deploy time, create the configuration file
Human
Exposed
Knobs
“Deploy
Magic”
Proxies
Jinja2
Templates
+
@junr03
Use case: create a new public route
• Service developers manipulate edge proxy route table
• Deploying public routing changes was tied to an Envoy binary deployment
• Erroneous configuration could be deployed next to complex code
Front Envoy
/new/route
New Service
@junr03
Pain points
• No clear ownership
• Configuration deployment was tied to binary deployment
• UX is tedious and fragmented
The Complexity is in Plain Sight
@junr03
Configuration Management - The Present
Mid 2017: xDS APIs for configuration management.
• gRPC/protobuf based
• Bi-directional gRPC streaming
• Interacting with the control plane is separated from data plane operation
• Enable us to develop smart, robust control plane solutions
RDS - Route Discovery Service
CDS - Cluster DS
LDS - Listener DS
...
@junr03
Configuration Management - The Present
Envoymanager
/ /
service
deployment
envoy-static-config
service
“manifest”
Document
Cloud Storage
@junr03
Configuration Management - The Present
envoy-static-config
service
“manifest”
match:
path: /rider/
route:
cluster: pagelauncher
@junr03
Configuration Management - The Present
internal_hosts:
- jobscheduler
- roads
external_hosts:
- dynamodb_iad
- kinesis_iad
circuit_breaker:
default:
max_requests: 100
envoy-static-config
service
“manifest”
@junr03
Configuration Management - The Present
service
deployment
Document
Cloud Storage
@junr03
Caching
Configuration Management - The Present
Envoymanager
/ /
Data
processing
xDS
Server
@junr03
Configuration Management - The Present
Envoymanager
/ /
service
deployment
envoy-static-config
service
“manifest”
Document
Cloud Storage
@junr03
Envoy @ Lyft Mesh
Front Envoy
Envoyoutbound
Tracing Collectors Ratelimit Discovery Envoymanager
Ancillary Services
@junr03
How is the complexity
hidden?
@junr03
Use case: create a new public route
Envoymanager
envoy-static-config
Document
Cloud Storage
@junr03
Documentation
• Documentation built on top of the public Envoy documentation
• Clear step-by-step guides
• FAQs
• Video Tutorials
@junr03
Making a Change
Deployment
• Same mechanics as service deployments
• Easy to use deployment pipeline
• Canary is part of the deployment process
@junr03
Deployment
• Same mechanics as service deployments
• Easy to use deployment pipeline
• Canary is part of the deployment process
@junr03
Versioning
service
deployment
envoy-static-config
service
“manifest”
Document
Cloud Storage
• Leverage git as a versioning system
• Easy rollback and roll forward
• Git shas have semantic meaning
• Versions are used throughout the
system
• Used in monitoring tooling
@junr03
Stats - Envoymanager
@junr03
Stats - Front Envoy
@junr03
Stats - Per Service Metrics
Wins
• Allows service developers to own configuration changes all the way to
production
• Most configuration changes do not entail an envoy restart
• Most configuration changes do not entail an envoy binary deploy
• Opens up the world to more friendly UX for configuration changes
@junr03
The Future
@junr03
The networking team focuses on building
accessible and easy-to-use systems for
service developers to successfully
configure, operate, and debug Envoy
@junr03
Thanks
jnino@lyft.com - @junr03

More Related Content

What's hot

Changing landscapes in data integration - Kafka Connect for near real-time da...
Changing landscapes in data integration - Kafka Connect for near real-time da...Changing landscapes in data integration - Kafka Connect for near real-time da...
Changing landscapes in data integration - Kafka Connect for near real-time da...HostedbyConfluent
 
Hybrid architecture solutions with kubernetes and the cloud native stack
Hybrid architecture solutions with kubernetes and the cloud native stackHybrid architecture solutions with kubernetes and the cloud native stack
Hybrid architecture solutions with kubernetes and the cloud native stackKublr
 
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming ApplicationsRunning Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming ApplicationsLightbend
 
Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...
Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...
Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...confluent
 
Taming a massive fleet of Python-based Kafka apps at Robinhood | Chandra Kuch...
Taming a massive fleet of Python-based Kafka apps at Robinhood | Chandra Kuch...Taming a massive fleet of Python-based Kafka apps at Robinhood | Chandra Kuch...
Taming a massive fleet of Python-based Kafka apps at Robinhood | Chandra Kuch...HostedbyConfluent
 
Coap based application for android phones-end
Coap based application for android phones-endCoap based application for android phones-end
Coap based application for android phones-endMd Syed Ahamad
 
Sharing is Caring: Toward Creating Self-tuning Multi-tenant Kafka (Anna Povzn...
Sharing is Caring: Toward Creating Self-tuning Multi-tenant Kafka (Anna Povzn...Sharing is Caring: Toward Creating Self-tuning Multi-tenant Kafka (Anna Povzn...
Sharing is Caring: Toward Creating Self-tuning Multi-tenant Kafka (Anna Povzn...HostedbyConfluent
 
Twitter’s Apache Kafka Adoption Journey | Ming Liu, Twitter
Twitter’s Apache Kafka Adoption Journey | Ming Liu, TwitterTwitter’s Apache Kafka Adoption Journey | Ming Liu, Twitter
Twitter’s Apache Kafka Adoption Journey | Ming Liu, TwitterHostedbyConfluent
 
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub ServiceOracle Korea
 
How did we move the mountain? - Migrating 1 trillion+ messages per day across...
How did we move the mountain? - Migrating 1 trillion+ messages per day across...How did we move the mountain? - Migrating 1 trillion+ messages per day across...
How did we move the mountain? - Migrating 1 trillion+ messages per day across...HostedbyConfluent
 
The Easiest Way to Configure Security for Clients AND Servers (Dani Traphagen...
The Easiest Way to Configure Security for Clients AND Servers (Dani Traphagen...The Easiest Way to Configure Security for Clients AND Servers (Dani Traphagen...
The Easiest Way to Configure Security for Clients AND Servers (Dani Traphagen...confluent
 
Via Varejo taking data from legacy to a new world at Brazil Black Friday (Mar...
Via Varejo taking data from legacy to a new world at Brazil Black Friday (Mar...Via Varejo taking data from legacy to a new world at Brazil Black Friday (Mar...
Via Varejo taking data from legacy to a new world at Brazil Black Friday (Mar...confluent
 
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messages
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messagesMulti-Tenancy Kafka cluster for LINE services with 250 billion daily messages
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messagesLINE Corporation
 
Utilizing Kafka Connect to Integrate Classic Monoliths into Modern Microservi...
Utilizing Kafka Connect to Integrate Classic Monoliths into Modern Microservi...Utilizing Kafka Connect to Integrate Classic Monoliths into Modern Microservi...
Utilizing Kafka Connect to Integrate Classic Monoliths into Modern Microservi...HostedbyConfluent
 
Uber: Kafka Consumer Proxy
Uber: Kafka Consumer ProxyUber: Kafka Consumer Proxy
Uber: Kafka Consumer Proxyconfluent
 
Tips & Tricks for Apache Kafka®
Tips & Tricks for Apache Kafka®Tips & Tricks for Apache Kafka®
Tips & Tricks for Apache Kafka®confluent
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceWebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceRick Hightower
 
How to over-engineer things and have fun? | Oto Brglez, OPALAB
How to over-engineer things and have fun? | Oto Brglez, OPALABHow to over-engineer things and have fun? | Oto Brglez, OPALAB
How to over-engineer things and have fun? | Oto Brglez, OPALABHostedbyConfluent
 
Exposing and Controlling Kafka Event Streaming with Kong Konnect Enterprise |...
Exposing and Controlling Kafka Event Streaming with Kong Konnect Enterprise |...Exposing and Controlling Kafka Event Streaming with Kong Konnect Enterprise |...
Exposing and Controlling Kafka Event Streaming with Kong Konnect Enterprise |...HostedbyConfluent
 

What's hot (20)

Changing landscapes in data integration - Kafka Connect for near real-time da...
Changing landscapes in data integration - Kafka Connect for near real-time da...Changing landscapes in data integration - Kafka Connect for near real-time da...
Changing landscapes in data integration - Kafka Connect for near real-time da...
 
Hybrid architecture solutions with kubernetes and the cloud native stack
Hybrid architecture solutions with kubernetes and the cloud native stackHybrid architecture solutions with kubernetes and the cloud native stack
Hybrid architecture solutions with kubernetes and the cloud native stack
 
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming ApplicationsRunning Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
Running Kafka On Kubernetes With Strimzi For Real-Time Streaming Applications
 
Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...
Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...
Flexible Authentication Strategies with SASL/OAUTHBEARER (Michael Kaminski, T...
 
Taming a massive fleet of Python-based Kafka apps at Robinhood | Chandra Kuch...
Taming a massive fleet of Python-based Kafka apps at Robinhood | Chandra Kuch...Taming a massive fleet of Python-based Kafka apps at Robinhood | Chandra Kuch...
Taming a massive fleet of Python-based Kafka apps at Robinhood | Chandra Kuch...
 
Coap based application for android phones-end
Coap based application for android phones-endCoap based application for android phones-end
Coap based application for android phones-end
 
Sharing is Caring: Toward Creating Self-tuning Multi-tenant Kafka (Anna Povzn...
Sharing is Caring: Toward Creating Self-tuning Multi-tenant Kafka (Anna Povzn...Sharing is Caring: Toward Creating Self-tuning Multi-tenant Kafka (Anna Povzn...
Sharing is Caring: Toward Creating Self-tuning Multi-tenant Kafka (Anna Povzn...
 
Twitter’s Apache Kafka Adoption Journey | Ming Liu, Twitter
Twitter’s Apache Kafka Adoption Journey | Ming Liu, TwitterTwitter’s Apache Kafka Adoption Journey | Ming Liu, Twitter
Twitter’s Apache Kafka Adoption Journey | Ming Liu, Twitter
 
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service
[Demo session] 관리형 Kafka 서비스 - Oracle Event Hub Service
 
How did we move the mountain? - Migrating 1 trillion+ messages per day across...
How did we move the mountain? - Migrating 1 trillion+ messages per day across...How did we move the mountain? - Migrating 1 trillion+ messages per day across...
How did we move the mountain? - Migrating 1 trillion+ messages per day across...
 
The Easiest Way to Configure Security for Clients AND Servers (Dani Traphagen...
The Easiest Way to Configure Security for Clients AND Servers (Dani Traphagen...The Easiest Way to Configure Security for Clients AND Servers (Dani Traphagen...
The Easiest Way to Configure Security for Clients AND Servers (Dani Traphagen...
 
Istio presentation jhug
Istio presentation jhugIstio presentation jhug
Istio presentation jhug
 
Via Varejo taking data from legacy to a new world at Brazil Black Friday (Mar...
Via Varejo taking data from legacy to a new world at Brazil Black Friday (Mar...Via Varejo taking data from legacy to a new world at Brazil Black Friday (Mar...
Via Varejo taking data from legacy to a new world at Brazil Black Friday (Mar...
 
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messages
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messagesMulti-Tenancy Kafka cluster for LINE services with 250 billion daily messages
Multi-Tenancy Kafka cluster for LINE services with 250 billion daily messages
 
Utilizing Kafka Connect to Integrate Classic Monoliths into Modern Microservi...
Utilizing Kafka Connect to Integrate Classic Monoliths into Modern Microservi...Utilizing Kafka Connect to Integrate Classic Monoliths into Modern Microservi...
Utilizing Kafka Connect to Integrate Classic Monoliths into Modern Microservi...
 
Uber: Kafka Consumer Proxy
Uber: Kafka Consumer ProxyUber: Kafka Consumer Proxy
Uber: Kafka Consumer Proxy
 
Tips & Tricks for Apache Kafka®
Tips & Tricks for Apache Kafka®Tips & Tricks for Apache Kafka®
Tips & Tricks for Apache Kafka®
 
WebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST MicroserviceWebSocket MicroService vs. REST Microservice
WebSocket MicroService vs. REST Microservice
 
How to over-engineer things and have fun? | Oto Brglez, OPALAB
How to over-engineer things and have fun? | Oto Brglez, OPALABHow to over-engineer things and have fun? | Oto Brglez, OPALAB
How to over-engineer things and have fun? | Oto Brglez, OPALAB
 
Exposing and Controlling Kafka Event Streaming with Kong Konnect Enterprise |...
Exposing and Controlling Kafka Event Streaming with Kong Konnect Enterprise |...Exposing and Controlling Kafka Event Streaming with Kong Konnect Enterprise |...
Exposing and Controlling Kafka Event Streaming with Kong Konnect Enterprise |...
 

Similar to Envoy @ Lyft: developer productivity (kubecon 2.0)

Make Java Microservices Resilient with Istio - Mangesh - IBM - CC18
Make Java Microservices Resilient with Istio - Mangesh - IBM - CC18Make Java Microservices Resilient with Istio - Mangesh - IBM - CC18
Make Java Microservices Resilient with Istio - Mangesh - IBM - CC18CodeOps Technologies LLP
 
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...GetInData
 
Do You Need A Service Mesh?
Do You Need A Service Mesh?Do You Need A Service Mesh?
Do You Need A Service Mesh?NGINX, Inc.
 
Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon Web Services Korea
 
Managing Microservices With The Istio Service Mesh on Kubernetes
Managing Microservices With The Istio Service Mesh on KubernetesManaging Microservices With The Istio Service Mesh on Kubernetes
Managing Microservices With The Istio Service Mesh on KubernetesIftach Schonbaum
 
Managing microservices with Istio Service Mesh
Managing microservices with Istio Service MeshManaging microservices with Istio Service Mesh
Managing microservices with Istio Service MeshRafik HARABI
 
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...Ambassador Labs
 
API World: The service-mesh landscape
API World: The service-mesh landscapeAPI World: The service-mesh landscape
API World: The service-mesh landscapeChristian Posta
 
Istio Triangle Kubernetes Meetup Aug 2019
Istio Triangle Kubernetes Meetup Aug 2019Istio Triangle Kubernetes Meetup Aug 2019
Istio Triangle Kubernetes Meetup Aug 2019Ram Vennam
 
KFServing - Serverless Model Inferencing
KFServing - Serverless Model InferencingKFServing - Serverless Model Inferencing
KFServing - Serverless Model InferencingAnimesh Singh
 
Move fast and make things with microservices
Move fast and make things with microservicesMove fast and make things with microservices
Move fast and make things with microservicesMithun Arunan
 
All About Microservices and OpenSource Microservice Frameworks
All About Microservices and OpenSource Microservice FrameworksAll About Microservices and OpenSource Microservice Frameworks
All About Microservices and OpenSource Microservice FrameworksMohammad Asif Siddiqui
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...confluent
 
CNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to EnvoyCNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to EnvoyHarish
 
Sumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic Cert Jam - Advanced Metrics with KubernetesSumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic Cert Jam - Advanced Metrics with KubernetesSumo Logic
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Amazon Web Services
 
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and FriendsPortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and FriendsTimothy Spann
 
Load Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & KubernetesLoad Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & KubernetesLee Calcote
 
Openshift serverless Solution
Openshift serverless SolutionOpenshift serverless Solution
Openshift serverless SolutionRyan ZhangCheng
 
What is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your MicroservicesWhat is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your MicroservicesMatt Turner
 

Similar to Envoy @ Lyft: developer productivity (kubecon 2.0) (20)

Make Java Microservices Resilient with Istio - Mangesh - IBM - CC18
Make Java Microservices Resilient with Istio - Mangesh - IBM - CC18Make Java Microservices Resilient with Istio - Mangesh - IBM - CC18
Make Java Microservices Resilient with Istio - Mangesh - IBM - CC18
 
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...
Functioning incessantly of Data Science Platform with Kubeflow - Albert Lewan...
 
Do You Need A Service Mesh?
Do You Need A Service Mesh?Do You Need A Service Mesh?
Do You Need A Service Mesh?
 
Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
Amazon EKS 그리고 Service Mesh (김세호 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
 
Managing Microservices With The Istio Service Mesh on Kubernetes
Managing Microservices With The Istio Service Mesh on KubernetesManaging Microservices With The Istio Service Mesh on Kubernetes
Managing Microservices With The Istio Service Mesh on Kubernetes
 
Managing microservices with Istio Service Mesh
Managing microservices with Istio Service MeshManaging microservices with Istio Service Mesh
Managing microservices with Istio Service Mesh
 
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
2017 Microservices Practitioner Virtual Summit: Microservices at Squarespace ...
 
API World: The service-mesh landscape
API World: The service-mesh landscapeAPI World: The service-mesh landscape
API World: The service-mesh landscape
 
Istio Triangle Kubernetes Meetup Aug 2019
Istio Triangle Kubernetes Meetup Aug 2019Istio Triangle Kubernetes Meetup Aug 2019
Istio Triangle Kubernetes Meetup Aug 2019
 
KFServing - Serverless Model Inferencing
KFServing - Serverless Model InferencingKFServing - Serverless Model Inferencing
KFServing - Serverless Model Inferencing
 
Move fast and make things with microservices
Move fast and make things with microservicesMove fast and make things with microservices
Move fast and make things with microservices
 
All About Microservices and OpenSource Microservice Frameworks
All About Microservices and OpenSource Microservice FrameworksAll About Microservices and OpenSource Microservice Frameworks
All About Microservices and OpenSource Microservice Frameworks
 
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
Modern Cloud-Native Streaming Platforms: Event Streaming Microservices with A...
 
CNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to EnvoyCNCF Singapore - Introduction to Envoy
CNCF Singapore - Introduction to Envoy
 
Sumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic Cert Jam - Advanced Metrics with KubernetesSumo Logic Cert Jam - Advanced Metrics with Kubernetes
Sumo Logic Cert Jam - Advanced Metrics with Kubernetes
 
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...
 
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and FriendsPortoTechHub  - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
PortoTechHub - Hail Hydrate! From Stream to Lake with Apache Pulsar and Friends
 
Load Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & KubernetesLoad Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & Kubernetes
 
Openshift serverless Solution
Openshift serverless SolutionOpenshift serverless Solution
Openshift serverless Solution
 
What is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your MicroservicesWhat is a Service Mesh and what can it do for your Microservices
What is a Service Mesh and what can it do for your Microservices
 

Recently uploaded

Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?Watsoo Telematics
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 

Recently uploaded (20)

Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?What are the features of Vehicle Tracking System?
What are the features of Vehicle Tracking System?
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 

Envoy @ Lyft: developer productivity (kubecon 2.0)

  • 1. Envoy @ ft José Niño jnino@lyft.com - @junr03
  • 3. My time at Lyft 1. Initial Envoy open sourcing: documentation, and docker sandbox examples 2. Create Envoyoutbound: enable developers to easily communicate with partners over stable IPs 3. Open sourcing ratelimit, and a couple other golang libraries: provide ample documentation for consumers 4. Expand Envoy’s outlier detection system, and build tooling (stats, logging) to help developers understand anomalies in their services 5. xDS APIs and the future of Envoy configuration management at Lyft: how do we make the control plane accessible and easy to use @junr03
  • 4. There is a pattern... 1. Open sourcing envoy: documentation, and docker sandbox examples 2. Create Envoyoutbound: enable developers to easily communicate with partners over stable IPs 3. Open sourcing ratelimit, and a couple other golang libraries: provide ample documentation for consumers 4. Expand Envoy’s outlier detection system, and build tooling (stats, logging) to help developers understand anomalies in their services 5. xDS APIs and the future of Envoy configuration management at Lyft: how do we make the control plane accessible and easy to use The focus is on developer productivity! @junr03
  • 5. The Story Envoy is a powerful and complex tool. How does the Networking Team at Lyft hide the complexity to allow service developers to leverage the power of Envoy? @junr03
  • 6. Why is this important? • Lyft engineers are the Infra org’s customers • Lyft is about to have a lot more engineers • The number of services at Lyft is ever increasing @junr03
  • 7. Frame of Reference - The Control Plane • Proxy configuration is complicated: envoy is not the exception • Operating the data plane should be reserved to a select few • Configuring some options of the data plane via the control plane should be open to all service owners @junr03
  • 8. Envoy Rollout @ Lyft @junr03@junr03
  • 9. Envoy Design Goals 1. Out of process architecture 2. Low latency, high performance, dev productivity 3. Filter Architecture: L3/L4 & L7 4. HTTP/2 first 5. Service/Config discovery 6. Active/passive health checking 7. Advanced load balancing 8. Envoy everywhere 9. Best in class observability @junr03
  • 10. Envoy Rollout - Edge Proxy AWS TCP ELB Service Foo Service Bar Service Baz /foo /bar /baz 1. Microservice architectures need an edge proxy 2. Easy to show value with: ‒ Stats ‒ Enhanced Load Balancing ‒ Routing ‒ Protocols @junr03
  • 11. Envoy Rollout - TCP Proxy / MongoDB 1. Parse Mongo at L7 and get useful stats 2. Ratelimit Mongo to avoid death spirals 3. Better connection handling than to raw Mongo 4. We can do this with all services! Global Ratelimit ServiceMongo Router / / Mongo DB @junr03
  • 12. Envoy Rollout - Service Sidecar AWS TCP ELB 1. Proxying to Mongo meant all Services already had Envoy running 2. Still used internal ELB for service-to-service traffic 3. Use for: ‒ Ingress buffering ‒ Circuit Breaking ‒ Observability AWS TCP ELB / / @junr03
  • 13. Envoy Rollout - Service Mesh 1. Direct Connect 2. Service Discovery Cron job Discovery / / Cron job @junr03
  • 14. Envoy @ Lyft Mesh Front Envoy Envoyoutbound Tracing Collectors Ratelimit Discovery Ancillary Services > 200 services > 20,000 Hosts > 5 million RPS @junr03
  • 16. Configuration Management - The Past Initially static files ‒ Only two types: edge proxy, service sidecar ‒ Deployed on a deploy bundle out to the edge proxy, and to all services in the mesh Human Static Files “Deploy Magic” Proxies @junr03
  • 17. Configuration Management - The Past As complexity grew we moved to templated files ‒ Jinja2 templates, and some python glue ‒ Expose certain “knobs” to the service engineers at Lyft ‒ At deploy time, create the configuration file Human Exposed Knobs “Deploy Magic” Proxies Jinja2 Templates + @junr03
  • 18. Use case: create a new public route • Service developers manipulate edge proxy route table • Deploying public routing changes was tied to an Envoy binary deployment • Erroneous configuration could be deployed next to complex code Front Envoy /new/route New Service @junr03
  • 19. Pain points • No clear ownership • Configuration deployment was tied to binary deployment • UX is tedious and fragmented The Complexity is in Plain Sight @junr03
  • 20. Configuration Management - The Present Mid 2017: xDS APIs for configuration management. • gRPC/protobuf based • Bi-directional gRPC streaming • Interacting with the control plane is separated from data plane operation • Enable us to develop smart, robust control plane solutions RDS - Route Discovery Service CDS - Cluster DS LDS - Listener DS ... @junr03
  • 21. Configuration Management - The Present Envoymanager / / service deployment envoy-static-config service “manifest” Document Cloud Storage @junr03
  • 22. Configuration Management - The Present envoy-static-config service “manifest” match: path: /rider/ route: cluster: pagelauncher @junr03
  • 23. Configuration Management - The Present internal_hosts: - jobscheduler - roads external_hosts: - dynamodb_iad - kinesis_iad circuit_breaker: default: max_requests: 100 envoy-static-config service “manifest” @junr03
  • 24. Configuration Management - The Present service deployment Document Cloud Storage @junr03
  • 25. Caching Configuration Management - The Present Envoymanager / / Data processing xDS Server @junr03
  • 26. Configuration Management - The Present Envoymanager / / service deployment envoy-static-config service “manifest” Document Cloud Storage @junr03
  • 27. Envoy @ Lyft Mesh Front Envoy Envoyoutbound Tracing Collectors Ratelimit Discovery Envoymanager Ancillary Services @junr03
  • 28. How is the complexity hidden? @junr03
  • 29. Use case: create a new public route Envoymanager envoy-static-config Document Cloud Storage @junr03
  • 30. Documentation • Documentation built on top of the public Envoy documentation • Clear step-by-step guides • FAQs • Video Tutorials @junr03
  • 32. Deployment • Same mechanics as service deployments • Easy to use deployment pipeline • Canary is part of the deployment process @junr03
  • 33. Deployment • Same mechanics as service deployments • Easy to use deployment pipeline • Canary is part of the deployment process @junr03
  • 34. Versioning service deployment envoy-static-config service “manifest” Document Cloud Storage • Leverage git as a versioning system • Easy rollback and roll forward • Git shas have semantic meaning • Versions are used throughout the system • Used in monitoring tooling @junr03
  • 36. Stats - Front Envoy @junr03
  • 37. Stats - Per Service Metrics
  • 38. Wins • Allows service developers to own configuration changes all the way to production • Most configuration changes do not entail an envoy restart • Most configuration changes do not entail an envoy binary deploy • Opens up the world to more friendly UX for configuration changes @junr03
  • 40. The networking team focuses on building accessible and easy-to-use systems for service developers to successfully configure, operate, and debug Envoy @junr03

Editor's Notes

  1. I am an Envoy Maintainer, but I am also a software engineer in Lyft’s networking team. So I am in an interesting spot, because I help write Envoy, but I also have to operate it, and productionalize it for the rest of the engineering org at Lyft.
  2. I wanted to show you my timeline because I think that a very clear pattern emerges. As infrastructure developers we need to enable developers so that they can execute fast in a reliable manner. We need to provide great, and clear documentation. We need to provide easy to follow examples. We need to build tooling that is accessible and easy to use.
  3. Today I have focused on configuration management but the networking team does a great deal of to accelerate developer productivity: Default dashboards Access logging Tracing DoS protection