View
410
Download
0
Category
Preview:
Citation preview
APPLICATION ROUTING ON K8S
OLIVER GOULD @OLIX0R
CTO, BUOYANT.IO
#KUBECON2015
WHALE WARSTWITTER, 2010
TWITTER, 2010: WHALE WARS
THE MONORAIL AND THE FAIL WHALE
▸ Millions of lines of Ruby on Rails
▸ Deployed as a single unit by a single team
▸ twitter.com growing like crazy 📈
▸ Eng: 2x every ~9 months
▸ Hardware: thousands of machines
▸ Allocated & configured ~manually by Ops
▸ Site-wide outages are a given
TWITTER, 2010: WHALE WARS
THE HUNT
▸ Scaling Eng via SOA Microservices!
▸ provisioning:
▸ service discovery (zookeeper, etc)
▸ rpc/traffic (finagle.github.io)
▸ observability (e.g. zipkin)
TWITTER, 2010: WHALE WARS
NOW YOU HAVE N+1 PROBLEMS
▸ What are the properties of slow requests?
▸ How do I set an appropriate timeout without redeploying?
▸ What are sane retry policies?
▸ How do we fail a service to another region where it’s working properly?
TWITTER, 2010: WHALE WARS
SCALING TEAMS THROUGH FLEXIBILITY
▸ How do I stage a version of my service for only certain users?
▸ How do I inject latency/failures into a downstream service without asking them to redeploy?
▸ How do I stage a debugging version of my service without impacting my clients?
APPLICATION ROUTING ON KUBERNETES
BUOYANT, 2015
APPLICATION ROUTING ON KUBERNETES
AN APPLICATION WHAT WHAT?se
rver
clie
ntsvc
serv
er
clie
nt
svc
serv
er
clie
nt
svc
serv
er
clie
nt
svc
Finagle Finagle Finagle
svc
clie
ntse
rver
App Router
svc svc svc
clie
ntse
rver
App Router
clie
ntse
rver
App Router
APPLICATION ROUTING ON KUBERNETES
WHY KUBERNETES?
▸ Flexible
▸ Simple
▸ Networking model + L4 discovery!
▸ Community
--- kind: Service apiVersion: v1 metadata: namespace: $NAMESPACE name: $SERVICE_NAME
spec: selector: app: $SERVICE_NAME
clusterIP: None ports: - name: http port: 8080 - name: admin port: 9990
TEXT
BUOYANT <3 K8S
K8S MASTER
SERVICE A SERVICE B SERVICE C
BUOYANT ROUTER
ServicesUSERS SERVICE OWNERSRequests
Tracing, Stats
Routing, SLAs, …
DESIGN PARTNERS WANTED
OLIVER GOULD @OLIX0R VER@BUOYANT.IO @BUOYANTIO
Recommended