Increasing Delivery Velocity with a Service Mesh at Indeed Joshua - - PowerPoint PPT Presentation

increasing delivery velocity with a service mesh at indeed
SMART_READER_LITE
LIVE PREVIEW

Increasing Delivery Velocity with a Service Mesh at Indeed Joshua - - PowerPoint PPT Presentation

Increasing Delivery Velocity with a Service Mesh at Indeed Joshua Shanks Senior Software Engineer, Indeed Indeed is the #1 job site worldwide what where Software Engineer Seattle, WA Find Jobs 60 countries 30 languages 200M unique visitors


slide-1
SLIDE 1

Joshua Shanks

Increasing Delivery Velocity with a Service Mesh at Indeed

Senior Software Engineer, Indeed

slide-2
SLIDE 2

Indeed is the #1 job site worldwide

slide-3
SLIDE 3
slide-4
SLIDE 4

Software Engineer Seattle, WA

what where

Find Jobs

slide-5
SLIDE 5

60 countries 30 languages 200M unique visitors 20M jobs

slide-6
SLIDE 6

About me

slide-7
SLIDE 7

Agenda

  • What is delivery velocity
  • Our motivations
  • Service mesh features
  • How it helps
  • Your options
slide-8
SLIDE 8

Delivery Velocity

slide-9
SLIDE 9

Delivery Velocity

  • Automated Service Creation
slide-10
SLIDE 10

Delivery Velocity

  • Automated Service Creation
  • Self Service VM provisioning
slide-11
SLIDE 11

Delivery Velocity

  • Automated Service Creation
  • Self Service VM provisioning
  • Self Service DB provisioning and migration
slide-12
SLIDE 12

Delivery Velocity

  • Automated Service Creation
  • Self Service VM provisioning
  • Self Service DB provisioning and migration
  • Continuous Deployment & Integration
slide-13
SLIDE 13

Where We Were

slide-14
SLIDE 14

Where We Were

  • Proprietary
slide-15
SLIDE 15

Where We Were

  • Proprietary
  • Java
slide-16
SLIDE 16

Where We Were

  • Proprietary
  • Java
  • Data center Local
slide-17
SLIDE 17

Where We Were

  • Proprietary
  • Java
  • Data center Local
  • Low Latency
slide-18
SLIDE 18

Where We Were

  • Proprietary
  • Java
  • Data center Local
  • Low Latency
  • 1 request = 1 connection
slide-19
SLIDE 19

Where We Wanted To Be

  • Open source
slide-20
SLIDE 20

Where We Wanted To Be

  • Open source
  • Language agnostic
slide-21
SLIDE 21

Where We Wanted To Be

  • Open source
  • Language agnostic
  • gRPC, HTTP2, REST
slide-22
SLIDE 22

Where We Wanted To Be

  • Open source
  • Language agnostic
  • gRPC, HTTP2, REST
  • Consul integration
slide-23
SLIDE 23

Where We Wanted To Be

  • Open source
  • Language agnostic
  • gRPC, HTTP2, REST
  • Consul integration
  • Cross data center
slide-24
SLIDE 24

Where We Wanted To Be

  • Open source
  • Language agnostic
  • gRPC, HTTP2, REST
  • Consul integration
  • Cross data center
slide-25
SLIDE 25

Where We Are

slide-26
SLIDE 26

Where We Are

slide-27
SLIDE 27

Where We Are

slide-28
SLIDE 28

Where We Are

slide-29
SLIDE 29

Where We Were

slide-30
SLIDE 30

Service Mesh

+

Linkerd Consul

slide-31
SLIDE 31

Big Picture

slide-32
SLIDE 32

Big Picture

slide-33
SLIDE 33

Service Registration

slide-34
SLIDE 34

Big Picture

slide-35
SLIDE 35

Service Discovery

slide-36
SLIDE 36

Classifiers

  • Error

○ HTTP 5XX ○ gRPC non-zero

  • Retryable

○ HTTP GET, HEAD, OPTIONS, TRACE ○ gRPC UNAVAILABLE (14)

slide-37
SLIDE 37

Load Balancing

Power of Two Choices: Least Loaded

slide-38
SLIDE 38

Load Balancing

Power of Two Choices: Least Loaded

slide-39
SLIDE 39

Load Balancing

Power of Two Choices: Least Loaded

slide-40
SLIDE 40

Load Balancing

Power of Two Choices: Least Loaded

slide-41
SLIDE 41

Circuit Breaking

slide-42
SLIDE 42

Circuit Breaking

slide-43
SLIDE 43

Circuit Breaking

slide-44
SLIDE 44

Circuit Breaking

slide-45
SLIDE 45

Retries

1st Try

slide-46
SLIDE 46

Retries

2nd Try

slide-47
SLIDE 47

Delivery Velocity

slide-48
SLIDE 48

Where we are now

  • Open Source

  • khttp h2c patch from Jaye Pitzeruse
  • Language agnostic

○ Java & Python

  • HTTP2

○ 95% 2ms added latency

  • Consul Integration
  • Cross Data center
slide-49
SLIDE 49

Client Implementation

slide-50
SLIDE 50

Client Implementation 1. Retrieve outbound port

slide-51
SLIDE 51

Client Implementation 1. Retrieve outbound port port = Env.get("egressPort");

slide-52
SLIDE 52

Client Implementation 1. Retrieve outbound port port = Env.get("egressPort"); cl = Client("http://localhost:" + port);

slide-53
SLIDE 53

Client Implementation 1. Retrieve outbound port 2. Inject service header port = Env.get("egressPort"); cl = Client("http://localhost:" + port);

slide-54
SLIDE 54

Client Implementation 1. Retrieve outbound port 2. Inject service header port = Env.get("egressPort"); cl = Client("http://localhost:" + port); req = cl.makeFooRequest(); req.setHeader("indeed-service", "ServiceB");

slide-55
SLIDE 55

Service Implementation

slide-56
SLIDE 56

Service Implementation

slide-57
SLIDE 57

Future Plans

slide-58
SLIDE 58

Future Plans

  • Transparent TLS
  • Authentication
  • Authorization
  • Rate Limiting
  • Tracing
  • Metrics
  • Chaosify
slide-59
SLIDE 59

Future Plans

  • Transparent TLS
  • Authentication
  • Authorization
  • Rate Limiting
  • Tracing
  • Metrics
  • Chaosify
slide-60
SLIDE 60

Future Plans

  • Transparent TLS
  • Authentication
  • Authorization
  • Rate Limiting
  • Tracing
  • Metrics
  • Chaosify
slide-61
SLIDE 61

Future Plans

  • Transparent TLS
  • Authentication
  • Authorization
  • Rate Limiting
  • Tracing
  • Metrics
  • Chaosify
slide-62
SLIDE 62

Future Plans

  • Transparent TLS
  • Authentication
  • Authorization
  • Rate Limiting
  • Tracing
  • Metrics
  • Chaosify
slide-63
SLIDE 63

Future Plans

  • Transparent TLS
  • Authentication
  • Authorization
  • Rate Limiting
  • Tracing
  • Metrics
  • Chaosify
slide-64
SLIDE 64

Linkerd

  • Finagle
  • Cloud Native Computing Foundation
  • Scala
  • HTTP
  • Plugin Support
slide-65
SLIDE 65

Conduit

  • Kubernetes
  • Alpha
  • Rust & golang
  • TCP
  • Linkerd 2
slide-66
SLIDE 66

Envoy

  • Lyft
  • CNCP
  • C++
  • TCP
  • Extensions
slide-67
SLIDE 67

Istio

  • IBM & Google
  • Envoy underneath
  • golang
  • TCP
  • Security
slide-68
SLIDE 68

Consul Connect

  • HashiCorp
  • Beta
  • golang
  • TCP
  • ACLs
slide-69
SLIDE 69

Thanks for coming

jshanks@indeed.com jjshanks