SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
1
Ambassador: Building a
Control Plane for Envoy
Flynn
flynn@datawire.io
2
Ambassador
Open-source Kubernetes-native API gateway
3
2 May 2017 (v0.8.0)
First public release
148 commits
801 lines of Python
Jinja2, EnvoyV1 + hot restart
REST & PostgreSQL(!!)
Basic routing, HTTP, HTTPS
As of 20 May 2019 (v0.70.0)
Thousands of active installations
6943 commits, 70 contributors
11K lines of Python
3K lines of Go
EnvoyV2 + ADS
K8s annotations + CRDs
HTTP/HTTPS/gRPC/
websockets/TCP, canaries,
shadowing, rate limiting, circuit
breaking……
By the Numbers
4
How Did We Get Here?
“Life can only be understood
backwards, but it must be lived
forward.”
(Søren Kierkegaard)
Software
created
Phase Releases Dates Why
The
Experiment
0.1.3 - 0.11.0 2017-03 – 2017-09 “What should we do? For whom?”
Productization 0.11.0 - 0.19.0 2017-09 – 2017-11
“Oh crap our experiment is
succeeding!”
Features 0.19.0 - 0.40.2 2017-11 – 2018-11
“Oh crap we need compelling
reasons for adoption!”
The Grand
Refactor
0.50.0 2018-08 – 2019-01
“Oh crap we let all that technical
debt get out of control!"
The Balancing
Act
0.50.0 – present 2019-01 – present
“Oh crap let’s not have another
Grand Refactor.”
5
The Experiment: 0.1.3 - 0.11.0
“What should we do? For whom?”
When: March 2017 – September 2017
The Trigger: Matt Klein’s Envoy talk at the
Microservices Practitioners’ Summit, January 2017
Important For: learning things!
Many “wrong” technical choices here
All of them taught us things
🤔
6
The Experiment:Where We Started
Some experience with Kubernetes but none with Envoy
Idea: other K8s developers probably have the same pain
points we do
Idea: other K8s developers probably also share clusters
Idea: one of the first things K8s developers wrestle
with is ingress to their service
Hypothesis: we can use Envoy to lessen the pain, but
Hypothesis: K8s users don’t think in the terms Envoy
configs want them to think
🤔
7
The Experiment:The Personas
By July 2017 we’d refined our ideas about users into our
primary user persona, Jane:
Microservices app developer with stuff to get done
Works with several others and shares a K8s cluster
Wants to focus on solving her business problems, in
whatever language she wants
Views needing to stress about infrastructure as friction
Embraces Kubernetes as useful, but might not have much
experience with it yet
Very busy, so not much patience for steep learning curves
🤔
8
The Experiment:The Personas
Later on came Julian, our persona for Jane’s more
ops-focused counterpart.
Personas are great tools:
Communication and alignment
Hooks to get developers thinking about people
rather than code
We design Ambassador’s UX around Jane and Julian.
🤔
9
The Experiment:Configuration
Jane needs incremental configuration
Envoy needs a complete config at all times
Ambassador has to own the Envoy config and keep it
up to date
Started out using REST APIs for config updates
PostgreSQL for persistence
Generate EnvoyV1 and trigger a hot restart for
every change
Terrible idea!
🤔
10
The Experiment:Statefulness
High-availability statefulness is hard – especially in
Kubernetes!
“Oh crap, the database pod crashed again!”
StatefulSets? Persistent volumes?Wait what??
Realized that Kubernetes already does this
First design used ConfigMaps
Shifted quickly to annotations, then to CRDs
Enormous flexibility without reinventing wheels
🤔
11
The Experiment:Ingress
“How does Jane get traffic to her services?”
Figured we’d just make a Kubernetes ingress
controller, but learned rapidly that:
The Ingress resource isn’t expressive enough
Least common denominator problem
Still true two years on
Current practice is to use annotations, but then
why bother?
Ingress interactions with cloud providers are tricky
🤔
12
The Experiment:Ingress
Again, let Kubernetes do the hard stuff:
Ambassador can just deploy as a Service
Two-tier LB model
Permits easily offloadingTLS termination
Permits trivially scaling Ambassador horizontally
Let Ambassador worry about edge policy
🤔
13
The Experiment:Life at the Edge
Particularly nasty example: LB terminatingTLS, so
handing Ambassador a cleartext connection
Ambassador needs the original client info for policy
Envoy supports PROXY, X-Forwarded-For,
X-Forwarded-Proto
Figuring out how to make them work together is
complex
Figuring out how to explain it to Julian is worse!
Even messier if it’s an L4 load balancer
🤔
14
The Experiment:Conclusions
Phenomenal opportunity to explore
without messing up people relying on you.
Form hypotheses, collect data, draw conclusions…
then do it again.
Lots of iteration, mistakes, and corrections during
these six months.
What we learned here is still the core of
Ambassador.
🤔
15
Productization: 0.11.0 - 0.19.0
“Oh crap, our experiment is succeeding!”
When: September 2017 - November 2017
The Trigger: starting to get users – and questions!
“What version of Envoy is in Ambassador 0.12.0?”
“When will you support Envoy 1.4?”
“What tests do you have for this feature?”
Important For: Groundwork for having a product
instead of an experiment
😱
16
Productization:What Changed
Basically had to retrofit release engineering!
Not relevant for experiments; critical for products
Lots of investment in automation
Also applied to UX
Annotations instead of ConfigMaps
Diagnostics UI
0.19.0: first recognizably-modern Ambassador
😱
17
Productization:Conclusions
A successful experiment turns into a product
Users start to trust it, which means you have to be
trustworthy!
This might only be visible in hindsight
Always critical to stay in touch with users
Need to be able to react quickly
😱
18
Features: 0.19.0 - 0.42.2
“Oh crap, we need compelling things to
drive adoption!”
When: November 2017 – November 2018
The Trigger: we figured we had release
engineering under control, and we wanted all the
users
Important For: Decisions and tradeoffs around
further development
😁
19
Features:The Fundamental Tradeoff
Spent a full year going after features
Deliberately chose to trade technical debt for time to
market
Limitations of our existing Jinja2 template engine
were definitely visible by 2018
Knew that we’d never get the chance to fix them
without market share
😅
20
Features:Growth
Ambassador grew a lot during this phase
Added two engineers at Datawire!
First external contribution, from Alex Gervais at
AppDirect!
Had to put serious effort into support for
external contributors
Zipkin! Helm! Envoy updates! LightStep!
Websockets!Traffic shadowing! and much more!
😁
21
Features:Growth
Added many more production users of Ambassador
Drove work on performance and reliability
Drove work on notifying users of upgrades
Drove us to start thinking longer-term!
Upcoming compatibility issues, roadmap, etc.
😁
22
Features:Hitting Limits
Remember how we chose to incur technical debt?
We hadn’t architected for Ambassador’s growth
Chose to focus on features instead of rearchitecting
Got features to market, but cost us in development
Also needed to move to EnvoyV2 API
V2 shipped in December 2017 with Envoy 1.5
More and more features blocked onV2 support
Getting closer toV1 end of life
😳
23
The Grand Refactor: 0.50.0
“Oh crap, we let all that technical debt get
out of control!”
When: August 2018 – January 2019
The Trigger: velocity had plummeted by mid-2018
Important For: recovering velocity and building
something that would last for awhile
🤯
24
The Grand Refactor:Goals
Rebuild more as a compiler rather than a template
engine
Pretty obvious path for awhile
Support EnvoyV2 + ADS (no more hot restarts!)
Arrange for small Envoy changes to only need small
Ambassador changes
Build tests that were faster to write and to run
🤯
25
The Grand Refactor:Result
Shipped as Ambassador 0.50.0 in January 2019.
Five months start to GA; we’d expected about three.
Lots of simultaneously-moving parts
Being sure that behavior didn’t regress was
exceptionally hard (many thanks to the community
members who helped us with this!)
Although we did speed the tests up, we still have a
lot of pain around testing
😌
26
The Balancing Act: after 0.50.0
“Oh crap, let’s not have another Grand
Refactor.”
When: January 2019 and ongoing!
The Trigger: time to move forward again!
The point of Grand Refactor was to speed
development up again
No substantial new features for five months is an
unpleasant place to be
🙂
27
The BalancingAct:The Present
Shipping the Grand Refactor was a long and painful
process, but it’s paying off:
V2 + ADS is much nicer than hot restart.
New codebase seems faster for development
Seeing more external contributions, too
SNI, TCPMappings, endpoint routing, Consul
discovery, CRDs… all of these would’ve been
impossible before the refactor
🙂
28
The BalancingAct:Near Future
Still investing a lot in testing
Single biggest pain point, within Datawire and
without
Learning curve, fragility, performance
Also investing in release engineering
Tracking Envoy is much easier now
Working to balance features against paying down
technical debt
🙂
29
2019 and Beyond
Biggest things we’ve learned over the last couple of
years:
The edge really is much more complex than the
interior; there’s a lot going on at that boundary
The inner dev loop matters, but
Focusing on your users matters more.
30
The Crystal Ball
Low barrier to entry stays critical
Performance becomes more important
Debuggability and transparency are huge things on our
radar
Expose more Envoy features (e.g. multiple listeners, first-
class gRPC, …)
Protect Envoy from bad configurations
Be ready when EnvoyV3 happens, and if rapid-turnaround
security fixes happen
Maybe next-gen Ingress will happen? someday?
31
Questions?
Github: https://github.com/datawire/ambassador
Community Slack: https://d6e.co/slack
Email: Flynn <flynn@datawire.io>
?

Contenu connexe

Tendances

Kubernetes: one cluster or many
Kubernetes:  one cluster or many Kubernetes:  one cluster or many
Kubernetes: one cluster or many cornelia davis
 
Real World CI/CD with Kubernetes
Real World CI/CD with KubernetesReal World CI/CD with Kubernetes
Real World CI/CD with KubernetesOpsta
 
Building your production tech stack for docker container platform
Building your production tech stack for docker container platformBuilding your production tech stack for docker container platform
Building your production tech stack for docker container platformDocker, Inc.
 
2017 Microservices Practitioner Virtual Summit: The Mechanics of Deploying En...
2017 Microservices Practitioner Virtual Summit: The Mechanics of Deploying En...2017 Microservices Practitioner Virtual Summit: The Mechanics of Deploying En...
2017 Microservices Practitioner Virtual Summit: The Mechanics of Deploying En...Ambassador Labs
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalPatrick Chanezon
 
Introduction To Flink
Introduction To FlinkIntroduction To Flink
Introduction To FlinkKnoldus Inc.
 
Your Auto-Scaling Bot - Volkan Tufecki
Your Auto-Scaling Bot - Volkan TufeckiYour Auto-Scaling Bot - Volkan Tufecki
Your Auto-Scaling Bot - Volkan TufeckiDocker, Inc.
 
Tectonic Summit 2016: Multi-Cluster Kubernetes: Planning for Unknowns
Tectonic Summit 2016: Multi-Cluster Kubernetes: Planning for UnknownsTectonic Summit 2016: Multi-Cluster Kubernetes: Planning for Unknowns
Tectonic Summit 2016: Multi-Cluster Kubernetes: Planning for UnknownsCoreOS
 
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...Docker, Inc.
 
Canary Releases on Kubernetes w/ Spinnaker, Istio, and Prometheus
Canary Releases on Kubernetes w/ Spinnaker, Istio, and PrometheusCanary Releases on Kubernetes w/ Spinnaker, Istio, and Prometheus
Canary Releases on Kubernetes w/ Spinnaker, Istio, and PrometheusKublr
 
How to Run Kubernetes in Restrictive Environments
How to Run Kubernetes in Restrictive EnvironmentsHow to Run Kubernetes in Restrictive Environments
How to Run Kubernetes in Restrictive EnvironmentsKublr
 
Tectonic Summit 2016: Multitenant Data Architectures with Kubernetes
Tectonic Summit 2016: Multitenant Data Architectures with KubernetesTectonic Summit 2016: Multitenant Data Architectures with Kubernetes
Tectonic Summit 2016: Multitenant Data Architectures with KubernetesCoreOS
 
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroomKubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroomKubeAcademy
 
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...Daniel Bryant
 
Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014Andreas Rehn
 
Troubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineersTroubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineersDocker, Inc.
 
Building CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and KubernetesBuilding CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and KubernetesJanakiram MSV
 
Immutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh CormanImmutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh CormanDocker, Inc.
 
DevOpsDays 2018 - Migrating a Cloud Native App to k8s
DevOpsDays 2018 - Migrating a Cloud Native App to k8sDevOpsDays 2018 - Migrating a Cloud Native App to k8s
DevOpsDays 2018 - Migrating a Cloud Native App to k8sGökhan Şengün
 
Demystifying container connectivity with kubernetes in docker
Demystifying container connectivity with kubernetes in dockerDemystifying container connectivity with kubernetes in docker
Demystifying container connectivity with kubernetes in dockerDocker, Inc.
 

Tendances (20)

Kubernetes: one cluster or many
Kubernetes:  one cluster or many Kubernetes:  one cluster or many
Kubernetes: one cluster or many
 
Real World CI/CD with Kubernetes
Real World CI/CD with KubernetesReal World CI/CD with Kubernetes
Real World CI/CD with Kubernetes
 
Building your production tech stack for docker container platform
Building your production tech stack for docker container platformBuilding your production tech stack for docker container platform
Building your production tech stack for docker container platform
 
2017 Microservices Practitioner Virtual Summit: The Mechanics of Deploying En...
2017 Microservices Practitioner Virtual Summit: The Mechanics of Deploying En...2017 Microservices Practitioner Virtual Summit: The Mechanics of Deploying En...
2017 Microservices Practitioner Virtual Summit: The Mechanics of Deploying En...
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - Technical
 
Introduction To Flink
Introduction To FlinkIntroduction To Flink
Introduction To Flink
 
Your Auto-Scaling Bot - Volkan Tufecki
Your Auto-Scaling Bot - Volkan TufeckiYour Auto-Scaling Bot - Volkan Tufecki
Your Auto-Scaling Bot - Volkan Tufecki
 
Tectonic Summit 2016: Multi-Cluster Kubernetes: Planning for Unknowns
Tectonic Summit 2016: Multi-Cluster Kubernetes: Planning for UnknownsTectonic Summit 2016: Multi-Cluster Kubernetes: Planning for Unknowns
Tectonic Summit 2016: Multi-Cluster Kubernetes: Planning for Unknowns
 
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
Learning the Alphabet: A/B, CD and [E-Z] in the Docker Datacenter by Brett Ti...
 
Canary Releases on Kubernetes w/ Spinnaker, Istio, and Prometheus
Canary Releases on Kubernetes w/ Spinnaker, Istio, and PrometheusCanary Releases on Kubernetes w/ Spinnaker, Istio, and Prometheus
Canary Releases on Kubernetes w/ Spinnaker, Istio, and Prometheus
 
How to Run Kubernetes in Restrictive Environments
How to Run Kubernetes in Restrictive EnvironmentsHow to Run Kubernetes in Restrictive Environments
How to Run Kubernetes in Restrictive Environments
 
Tectonic Summit 2016: Multitenant Data Architectures with Kubernetes
Tectonic Summit 2016: Multitenant Data Architectures with KubernetesTectonic Summit 2016: Multitenant Data Architectures with Kubernetes
Tectonic Summit 2016: Multitenant Data Architectures with Kubernetes
 
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroomKubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
 
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...
 
Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014Building a Service Delivery Platform - JCICPH 2014
Building a Service Delivery Platform - JCICPH 2014
 
Troubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineersTroubleshooting tips from docker support engineers
Troubleshooting tips from docker support engineers
 
Building CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and KubernetesBuilding CI/CD Pipelines with Jenkins and Kubernetes
Building CI/CD Pipelines with Jenkins and Kubernetes
 
Immutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh CormanImmutable Awesomeness by John Willis and Josh Corman
Immutable Awesomeness by John Willis and Josh Corman
 
DevOpsDays 2018 - Migrating a Cloud Native App to k8s
DevOpsDays 2018 - Migrating a Cloud Native App to k8sDevOpsDays 2018 - Migrating a Cloud Native App to k8s
DevOpsDays 2018 - Migrating a Cloud Native App to k8s
 
Demystifying container connectivity with kubernetes in docker
Demystifying container connectivity with kubernetes in dockerDemystifying container connectivity with kubernetes in docker
Demystifying container connectivity with kubernetes in docker
 

Similaire à Ambassador: Building a Control Plane for Envoy

Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up LookoutLookout
 
Dev Ops @ Envato
Dev Ops @ EnvatoDev Ops @ Envato
Dev Ops @ EnvatoJohn Barton
 
AppSec Pipelines and Event based Security
AppSec Pipelines and Event based SecurityAppSec Pipelines and Event based Security
AppSec Pipelines and Event based SecurityMatt Tesauro
 
Montréal AWS Users United: Let's go Serverless!
Montréal AWS Users United: Let's go Serverless!Montréal AWS Users United: Let's go Serverless!
Montréal AWS Users United: Let's go Serverless!Daniel Zivkovic
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysDevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysAndreas Grabner
 
Subverting the monolith!
Subverting the monolith!Subverting the monolith!
Subverting the monolith!Sophia Russell
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changesJaewoo Ahn
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...PROIDEA
 
Microservices, Microfrontends and Feature Teams
Microservices, Microfrontends and Feature TeamsMicroservices, Microfrontends and Feature Teams
Microservices, Microfrontends and Feature TeamsGiulio Roggero
 
INTERFACE, by apidays - How we built out governance layer on this thousand-ye...
INTERFACE, by apidays - How we built out governance layer on this thousand-ye...INTERFACE, by apidays - How we built out governance layer on this thousand-ye...
INTERFACE, by apidays - How we built out governance layer on this thousand-ye...apidays
 
Zero to 12 Million
Zero to 12 MillionZero to 12 Million
Zero to 12 MillionVMware Tanzu
 
Michael Coté - The Eternal Recurrence of DevOps
Michael Coté - The Eternal Recurrence of DevOpsMichael Coté - The Eternal Recurrence of DevOps
Michael Coté - The Eternal Recurrence of DevOpsDevOpsDays DFW
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerBill Scott
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDocker, Inc.
 
Smart Mirror Summer Report
Smart Mirror Summer ReportSmart Mirror Summer Report
Smart Mirror Summer ReportJabari Barton
 
Beyond the Hype: 4 Years of Go in Production
Beyond the Hype: 4 Years of Go in ProductionBeyond the Hype: 4 Years of Go in Production
Beyond the Hype: 4 Years of Go in ProductionC4Media
 
OCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 RoadmapOCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 RoadmapAngela Byron
 
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...André Goliath
 

Similaire à Ambassador: Building a Control Plane for Envoy (20)

A Tale of Two Apps
A Tale of Two AppsA Tale of Two Apps
A Tale of Two Apps
 
Scaling Up Lookout
Scaling Up LookoutScaling Up Lookout
Scaling Up Lookout
 
Dev Ops @ Envato
Dev Ops @ EnvatoDev Ops @ Envato
Dev Ops @ Envato
 
AppSec Pipelines and Event based Security
AppSec Pipelines and Event based SecurityAppSec Pipelines and Event based Security
AppSec Pipelines and Event based Security
 
Montréal AWS Users United: Let's go Serverless!
Montréal AWS Users United: Let's go Serverless!Montréal AWS Users United: Let's go Serverless!
Montréal AWS Users United: Let's go Serverless!
 
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code DeploysDevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
DevOps Days Toronto: From 6 Months Waterfall to 1 hour Code Deploys
 
Subverting the monolith!
Subverting the monolith!Subverting the monolith!
Subverting the monolith!
 
How do we drive tech changes
How do we drive tech changesHow do we drive tech changes
How do we drive tech changes
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
 
Microservices, Microfrontends and Feature Teams
Microservices, Microfrontends and Feature TeamsMicroservices, Microfrontends and Feature Teams
Microservices, Microfrontends and Feature Teams
 
INTERFACE, by apidays - How we built out governance layer on this thousand-ye...
INTERFACE, by apidays - How we built out governance layer on this thousand-ye...INTERFACE, by apidays - How we built out governance layer on this thousand-ye...
INTERFACE, by apidays - How we built out governance layer on this thousand-ye...
 
Zero to 12 Million
Zero to 12 MillionZero to 12 Million
Zero to 12 Million
 
Michael Coté - The Eternal Recurrence of DevOps
Michael Coté - The Eternal Recurrence of DevOpsMichael Coté - The Eternal Recurrence of DevOps
Michael Coté - The Eternal Recurrence of DevOps
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partner
 
DockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General SessionDockerCon EU 2015: Day 1 General Session
DockerCon EU 2015: Day 1 General Session
 
Smart Mirror Summer Report
Smart Mirror Summer ReportSmart Mirror Summer Report
Smart Mirror Summer Report
 
Beyond the Hype: 4 Years of Go in Production
Beyond the Hype: 4 Years of Go in ProductionBeyond the Hype: 4 Years of Go in Production
Beyond the Hype: 4 Years of Go in Production
 
DineshCV (1)
DineshCV (1)DineshCV (1)
DineshCV (1)
 
OCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 RoadmapOCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 Roadmap
 
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
Von JavaEE auf Microservice in 6 Monaten - The Good, the Bad, and the wtfs...
 

Plus de Ambassador Labs

Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Ambassador Labs
 
Cloud native development without the toil
Cloud native development without the toilCloud native development without the toil
Cloud native development without the toilAmbassador Labs
 
Webinar: Accelerate Your Inner Dev Loop for Kubernetes Services
Webinar: Accelerate Your Inner Dev Loop for Kubernetes Services Webinar: Accelerate Your Inner Dev Loop for Kubernetes Services
Webinar: Accelerate Your Inner Dev Loop for Kubernetes Services Ambassador Labs
 
[Confoo Montreal 2020] From Grief to Growth: The 7 Stages of Observability - ...
[Confoo Montreal 2020] From Grief to Growth: The 7 Stages of Observability - ...[Confoo Montreal 2020] From Grief to Growth: The 7 Stages of Observability - ...
[Confoo Montreal 2020] From Grief to Growth: The 7 Stages of Observability - ...Ambassador Labs
 
[Confoo Montreal 2020] Build Your Own Serverless with Knative - Alex Gervais
[Confoo Montreal 2020] Build Your Own Serverless with Knative - Alex Gervais[Confoo Montreal 2020] Build Your Own Serverless with Knative - Alex Gervais
[Confoo Montreal 2020] Build Your Own Serverless with Knative - Alex GervaisAmbassador Labs
 
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
[QCon London 2020] The Future of Cloud Native API Gateways - Richard LiAmbassador Labs
 
What's New in the Ambassador Edge Stack 1.0?
What's New in the Ambassador Edge Stack 1.0? What's New in the Ambassador Edge Stack 1.0?
What's New in the Ambassador Edge Stack 1.0? Ambassador Labs
 
Webinar: Effective Management of APIs and the Edge when Adopting Kubernetes
Webinar: Effective Management of APIs and the Edge when Adopting Kubernetes Webinar: Effective Management of APIs and the Edge when Adopting Kubernetes
Webinar: Effective Management of APIs and the Edge when Adopting Kubernetes Ambassador Labs
 
Telepresence - Fast Development Workflows for Kubernetes
Telepresence - Fast Development Workflows for KubernetesTelepresence - Fast Development Workflows for Kubernetes
Telepresence - Fast Development Workflows for KubernetesAmbassador Labs
 
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...Ambassador Labs
 
[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...
[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...
[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...Ambassador Labs
 
The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and ...
The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and ...The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and ...
The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and ...Ambassador Labs
 
The Simply Complex Task of Implementing Kubernetes Ingress - Velocity NYC
The Simply Complex Task of Implementing Kubernetes Ingress - Velocity NYCThe Simply Complex Task of Implementing Kubernetes Ingress - Velocity NYC
The Simply Complex Task of Implementing Kubernetes Ingress - Velocity NYCAmbassador Labs
 
Ambassador Kubernetes-Native API Gateway
Ambassador Kubernetes-Native API GatewayAmbassador Kubernetes-Native API Gateway
Ambassador Kubernetes-Native API GatewayAmbassador Labs
 
Micro xchg 2018 - What is a Service Mesh?
Micro xchg 2018 - What is a Service Mesh? Micro xchg 2018 - What is a Service Mesh?
Micro xchg 2018 - What is a Service Mesh? Ambassador Labs
 
KubeCon NA 2017: Ambassador and Envoy (Envoy Salon)
KubeCon NA 2017: Ambassador and Envoy (Envoy Salon)KubeCon NA 2017: Ambassador and Envoy (Envoy Salon)
KubeCon NA 2017: Ambassador and Envoy (Envoy Salon)Ambassador Labs
 
Webinar: Code Faster on Kubernetes
Webinar: Code Faster on KubernetesWebinar: Code Faster on Kubernetes
Webinar: Code Faster on KubernetesAmbassador Labs
 
QCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentQCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentAmbassador Labs
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Ambassador Labs
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...Ambassador Labs
 

Plus de Ambassador Labs (20)

Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
 
Cloud native development without the toil
Cloud native development without the toilCloud native development without the toil
Cloud native development without the toil
 
Webinar: Accelerate Your Inner Dev Loop for Kubernetes Services
Webinar: Accelerate Your Inner Dev Loop for Kubernetes Services Webinar: Accelerate Your Inner Dev Loop for Kubernetes Services
Webinar: Accelerate Your Inner Dev Loop for Kubernetes Services
 
[Confoo Montreal 2020] From Grief to Growth: The 7 Stages of Observability - ...
[Confoo Montreal 2020] From Grief to Growth: The 7 Stages of Observability - ...[Confoo Montreal 2020] From Grief to Growth: The 7 Stages of Observability - ...
[Confoo Montreal 2020] From Grief to Growth: The 7 Stages of Observability - ...
 
[Confoo Montreal 2020] Build Your Own Serverless with Knative - Alex Gervais
[Confoo Montreal 2020] Build Your Own Serverless with Knative - Alex Gervais[Confoo Montreal 2020] Build Your Own Serverless with Knative - Alex Gervais
[Confoo Montreal 2020] Build Your Own Serverless with Knative - Alex Gervais
 
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
 
What's New in the Ambassador Edge Stack 1.0?
What's New in the Ambassador Edge Stack 1.0? What's New in the Ambassador Edge Stack 1.0?
What's New in the Ambassador Edge Stack 1.0?
 
Webinar: Effective Management of APIs and the Edge when Adopting Kubernetes
Webinar: Effective Management of APIs and the Edge when Adopting Kubernetes Webinar: Effective Management of APIs and the Edge when Adopting Kubernetes
Webinar: Effective Management of APIs and the Edge when Adopting Kubernetes
 
Telepresence - Fast Development Workflows for Kubernetes
Telepresence - Fast Development Workflows for KubernetesTelepresence - Fast Development Workflows for Kubernetes
Telepresence - Fast Development Workflows for Kubernetes
 
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
 
[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...
[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...
[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...
 
The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and ...
The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and ...The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and ...
The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and ...
 
The Simply Complex Task of Implementing Kubernetes Ingress - Velocity NYC
The Simply Complex Task of Implementing Kubernetes Ingress - Velocity NYCThe Simply Complex Task of Implementing Kubernetes Ingress - Velocity NYC
The Simply Complex Task of Implementing Kubernetes Ingress - Velocity NYC
 
Ambassador Kubernetes-Native API Gateway
Ambassador Kubernetes-Native API GatewayAmbassador Kubernetes-Native API Gateway
Ambassador Kubernetes-Native API Gateway
 
Micro xchg 2018 - What is a Service Mesh?
Micro xchg 2018 - What is a Service Mesh? Micro xchg 2018 - What is a Service Mesh?
Micro xchg 2018 - What is a Service Mesh?
 
KubeCon NA 2017: Ambassador and Envoy (Envoy Salon)
KubeCon NA 2017: Ambassador and Envoy (Envoy Salon)KubeCon NA 2017: Ambassador and Envoy (Envoy Salon)
KubeCon NA 2017: Ambassador and Envoy (Envoy Salon)
 
Webinar: Code Faster on Kubernetes
Webinar: Code Faster on KubernetesWebinar: Code Faster on Kubernetes
Webinar: Code Faster on Kubernetes
 
QCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented DevelopmentQCon SF 2017 - Microservices: Service-Oriented Development
QCon SF 2017 - Microservices: Service-Oriented Development
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
 
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
 

Dernier

Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
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
 
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
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
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
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
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
 
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
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptrcbcrtm
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
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
 
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
 

Dernier (20)

Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
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
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
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...
 
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
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
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
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
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
 
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
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
cpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.pptcpct NetworkING BASICS AND NETWORK TOOL.ppt
cpct NetworkING BASICS AND NETWORK TOOL.ppt
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
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...
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
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...
 

Ambassador: Building a Control Plane for Envoy

  • 1. 1 Ambassador: Building a Control Plane for Envoy Flynn flynn@datawire.io
  • 3. 3 2 May 2017 (v0.8.0) First public release 148 commits 801 lines of Python Jinja2, EnvoyV1 + hot restart REST & PostgreSQL(!!) Basic routing, HTTP, HTTPS As of 20 May 2019 (v0.70.0) Thousands of active installations 6943 commits, 70 contributors 11K lines of Python 3K lines of Go EnvoyV2 + ADS K8s annotations + CRDs HTTP/HTTPS/gRPC/ websockets/TCP, canaries, shadowing, rate limiting, circuit breaking…… By the Numbers
  • 4. 4 How Did We Get Here? “Life can only be understood backwards, but it must be lived forward.” (Søren Kierkegaard) Software created Phase Releases Dates Why The Experiment 0.1.3 - 0.11.0 2017-03 – 2017-09 “What should we do? For whom?” Productization 0.11.0 - 0.19.0 2017-09 – 2017-11 “Oh crap our experiment is succeeding!” Features 0.19.0 - 0.40.2 2017-11 – 2018-11 “Oh crap we need compelling reasons for adoption!” The Grand Refactor 0.50.0 2018-08 – 2019-01 “Oh crap we let all that technical debt get out of control!" The Balancing Act 0.50.0 – present 2019-01 – present “Oh crap let’s not have another Grand Refactor.”
  • 5. 5 The Experiment: 0.1.3 - 0.11.0 “What should we do? For whom?” When: March 2017 – September 2017 The Trigger: Matt Klein’s Envoy talk at the Microservices Practitioners’ Summit, January 2017 Important For: learning things! Many “wrong” technical choices here All of them taught us things 🤔
  • 6. 6 The Experiment:Where We Started Some experience with Kubernetes but none with Envoy Idea: other K8s developers probably have the same pain points we do Idea: other K8s developers probably also share clusters Idea: one of the first things K8s developers wrestle with is ingress to their service Hypothesis: we can use Envoy to lessen the pain, but Hypothesis: K8s users don’t think in the terms Envoy configs want them to think 🤔
  • 7. 7 The Experiment:The Personas By July 2017 we’d refined our ideas about users into our primary user persona, Jane: Microservices app developer with stuff to get done Works with several others and shares a K8s cluster Wants to focus on solving her business problems, in whatever language she wants Views needing to stress about infrastructure as friction Embraces Kubernetes as useful, but might not have much experience with it yet Very busy, so not much patience for steep learning curves 🤔
  • 8. 8 The Experiment:The Personas Later on came Julian, our persona for Jane’s more ops-focused counterpart. Personas are great tools: Communication and alignment Hooks to get developers thinking about people rather than code We design Ambassador’s UX around Jane and Julian. 🤔
  • 9. 9 The Experiment:Configuration Jane needs incremental configuration Envoy needs a complete config at all times Ambassador has to own the Envoy config and keep it up to date Started out using REST APIs for config updates PostgreSQL for persistence Generate EnvoyV1 and trigger a hot restart for every change Terrible idea! 🤔
  • 10. 10 The Experiment:Statefulness High-availability statefulness is hard – especially in Kubernetes! “Oh crap, the database pod crashed again!” StatefulSets? Persistent volumes?Wait what?? Realized that Kubernetes already does this First design used ConfigMaps Shifted quickly to annotations, then to CRDs Enormous flexibility without reinventing wheels 🤔
  • 11. 11 The Experiment:Ingress “How does Jane get traffic to her services?” Figured we’d just make a Kubernetes ingress controller, but learned rapidly that: The Ingress resource isn’t expressive enough Least common denominator problem Still true two years on Current practice is to use annotations, but then why bother? Ingress interactions with cloud providers are tricky 🤔
  • 12. 12 The Experiment:Ingress Again, let Kubernetes do the hard stuff: Ambassador can just deploy as a Service Two-tier LB model Permits easily offloadingTLS termination Permits trivially scaling Ambassador horizontally Let Ambassador worry about edge policy 🤔
  • 13. 13 The Experiment:Life at the Edge Particularly nasty example: LB terminatingTLS, so handing Ambassador a cleartext connection Ambassador needs the original client info for policy Envoy supports PROXY, X-Forwarded-For, X-Forwarded-Proto Figuring out how to make them work together is complex Figuring out how to explain it to Julian is worse! Even messier if it’s an L4 load balancer 🤔
  • 14. 14 The Experiment:Conclusions Phenomenal opportunity to explore without messing up people relying on you. Form hypotheses, collect data, draw conclusions… then do it again. Lots of iteration, mistakes, and corrections during these six months. What we learned here is still the core of Ambassador. 🤔
  • 15. 15 Productization: 0.11.0 - 0.19.0 “Oh crap, our experiment is succeeding!” When: September 2017 - November 2017 The Trigger: starting to get users – and questions! “What version of Envoy is in Ambassador 0.12.0?” “When will you support Envoy 1.4?” “What tests do you have for this feature?” Important For: Groundwork for having a product instead of an experiment 😱
  • 16. 16 Productization:What Changed Basically had to retrofit release engineering! Not relevant for experiments; critical for products Lots of investment in automation Also applied to UX Annotations instead of ConfigMaps Diagnostics UI 0.19.0: first recognizably-modern Ambassador 😱
  • 17. 17 Productization:Conclusions A successful experiment turns into a product Users start to trust it, which means you have to be trustworthy! This might only be visible in hindsight Always critical to stay in touch with users Need to be able to react quickly 😱
  • 18. 18 Features: 0.19.0 - 0.42.2 “Oh crap, we need compelling things to drive adoption!” When: November 2017 – November 2018 The Trigger: we figured we had release engineering under control, and we wanted all the users Important For: Decisions and tradeoffs around further development 😁
  • 19. 19 Features:The Fundamental Tradeoff Spent a full year going after features Deliberately chose to trade technical debt for time to market Limitations of our existing Jinja2 template engine were definitely visible by 2018 Knew that we’d never get the chance to fix them without market share 😅
  • 20. 20 Features:Growth Ambassador grew a lot during this phase Added two engineers at Datawire! First external contribution, from Alex Gervais at AppDirect! Had to put serious effort into support for external contributors Zipkin! Helm! Envoy updates! LightStep! Websockets!Traffic shadowing! and much more! 😁
  • 21. 21 Features:Growth Added many more production users of Ambassador Drove work on performance and reliability Drove work on notifying users of upgrades Drove us to start thinking longer-term! Upcoming compatibility issues, roadmap, etc. 😁
  • 22. 22 Features:Hitting Limits Remember how we chose to incur technical debt? We hadn’t architected for Ambassador’s growth Chose to focus on features instead of rearchitecting Got features to market, but cost us in development Also needed to move to EnvoyV2 API V2 shipped in December 2017 with Envoy 1.5 More and more features blocked onV2 support Getting closer toV1 end of life 😳
  • 23. 23 The Grand Refactor: 0.50.0 “Oh crap, we let all that technical debt get out of control!” When: August 2018 – January 2019 The Trigger: velocity had plummeted by mid-2018 Important For: recovering velocity and building something that would last for awhile 🤯
  • 24. 24 The Grand Refactor:Goals Rebuild more as a compiler rather than a template engine Pretty obvious path for awhile Support EnvoyV2 + ADS (no more hot restarts!) Arrange for small Envoy changes to only need small Ambassador changes Build tests that were faster to write and to run 🤯
  • 25. 25 The Grand Refactor:Result Shipped as Ambassador 0.50.0 in January 2019. Five months start to GA; we’d expected about three. Lots of simultaneously-moving parts Being sure that behavior didn’t regress was exceptionally hard (many thanks to the community members who helped us with this!) Although we did speed the tests up, we still have a lot of pain around testing 😌
  • 26. 26 The Balancing Act: after 0.50.0 “Oh crap, let’s not have another Grand Refactor.” When: January 2019 and ongoing! The Trigger: time to move forward again! The point of Grand Refactor was to speed development up again No substantial new features for five months is an unpleasant place to be 🙂
  • 27. 27 The BalancingAct:The Present Shipping the Grand Refactor was a long and painful process, but it’s paying off: V2 + ADS is much nicer than hot restart. New codebase seems faster for development Seeing more external contributions, too SNI, TCPMappings, endpoint routing, Consul discovery, CRDs… all of these would’ve been impossible before the refactor 🙂
  • 28. 28 The BalancingAct:Near Future Still investing a lot in testing Single biggest pain point, within Datawire and without Learning curve, fragility, performance Also investing in release engineering Tracking Envoy is much easier now Working to balance features against paying down technical debt 🙂
  • 29. 29 2019 and Beyond Biggest things we’ve learned over the last couple of years: The edge really is much more complex than the interior; there’s a lot going on at that boundary The inner dev loop matters, but Focusing on your users matters more.
  • 30. 30 The Crystal Ball Low barrier to entry stays critical Performance becomes more important Debuggability and transparency are huge things on our radar Expose more Envoy features (e.g. multiple listeners, first- class gRPC, …) Protect Envoy from bad configurations Be ready when EnvoyV3 happens, and if rapid-turnaround security fixes happen Maybe next-gen Ingress will happen? someday?
  • 31. 31 Questions? Github: https://github.com/datawire/ambassador Community Slack: https://d6e.co/slack Email: Flynn <flynn@datawire.io> ?