SlideShare une entreprise Scribd logo
1  sur  344
Télécharger pour lire hors ligne
Boxcar
A self-balancing distributed services protocol
R.B. Boyer
Software Engineer
Resume
I help
people
get jobs.
I solve
interesting
problems.
Boxcar was the solution
to a problem:
Building
How we build products
Simple
Fast
Comprehensive
Relevant
How we build products
Simple
Fast
Comprehensive
Relevant
How we build systems
Simple
Fast
Resilient
Scalable
Simple
“I want my application to be
more complicated”
- No one ever
Complexity creates
confusion
Complexity creates
confusion
Confusion breeds bugs
Fast
“I want my application to be
slower”
- No one ever
conducted a speed test
+500 milliseconds of latency
per search
20% fewer
searches
Speed is a feature
Resilient
“I want my users to
experience outages”
- No one ever
Programs crash
Programs crash
Machines die
Minimize vulnerability to
any failure
Scalable
“My system will only need to
support 10 users”
- No one ever
Scale with MORE machines
Scale with MORE machines
Not BIGGER machines
TL;DR:
Indeed

Jobs
Sites

Job
Seekers
Aggregation

Jobs
Sites

Job Search

Job
Seekers
Job Search
Aggregation
Challenge!

Job Search
Aggregation
Challenge:
keep this

Simple
Fast
Resilient
Scalable
Options:
Share data access?
Example:
Shared Database
Shared Database

Main
Database
Shared Database

Main
Application

Main
Database
Shared Database

Main
Application

Analysis
Tool

Main
Database
Shared Database
Main
Application

Analysis
Tool

Billing
Application

Main
Database
Shared Database
Main
Application

Main
Database

Analysis
Tool

Billing
Application
Intern
Project
Shared Database
Main
Application

Main
Database

Analysis
Tool

Billing
Application
Intern
Project

Other
Intern
Project
Shared Database
Main
Application

Main
Database

Analysis
Tool

Billing
Application
Intern
Project

Other
Intern
Project

Email
Tool
Shared Database
Main
Application

Main
Database

Analysis
Tool

This is an anti-pattern
Billing
Application
Intern
Project

Other
Intern
Project

Email
Tool
On a long enough timeline...
Maintenance Nightmare
Share data access
Share data access
Insulate data from
consumers
Shared Database
Main
Application

Main
Database

Analysis
Tool

Billing
Application
Intern
Project

Other
Intern
Project

Email
Tool
Insulated Database
Main
Application

Main
Database

Main
Service

Analysis
Tool

Billing
Application
Intern
Project

Other
Intern
Project

Email
Tool
Service?
Service

Client
Client
Client
Client
Client
Client
Client
Client

NETWORK

Service
Client
Client
Client
Client

NETWORK

Service

Icky
Technical
Stuff
Service

NETWORK

Databases
Client
Client
Client
Client

Logging
Caches
Business Logic
...

Client API

Icky Technical
Details
Client API

Service.getJobs([12345, 62])
Icky Technical Details
SELECT * FROM jobs AS j
LEFT JOIN companyinfo AS ci
ON j.id=ci.job_id
LEFT JOIN locations AS loc
ON loc.id=j.location_id
WHERE j.id IN (12345, 62)
Service
Oriented
Architecture
Service
Oriented
Architecture
Boxcar
Boxcar is a...
self-balancing
distributed
services
protocol
Origin Story
There was a life before
Boxcar
There were services before
Boxcar
Pick one:
Doc Service
Document Serving Service
aka “Doc Service”
http://go.indeed.com/docservice
Doc Service controls
access to JOBS
Building Blocks
Webapp

Wants jobs

Doc
Service

Controls access to jobs

Docstore

Stores jobs
Build it
Webapp
Webapp
Doc
Service
Docstore
Webapp
Doc
Service
Docstore
Mission Accomplished

Webapp
Doc
Service
Docstore
But is it good?
How we build systems
Simple
Fast
Resilient
Scalable
Goodness Metric
Simple deploys
Efficient networking (Fast)
Resilient
Horizontally scalable
Webapp
Doc
Service
Docstore
Webapp
Doc
Service
Docstore
✘ Resilient
Webapp
Doc
Service
Docstore
Add Resilience
Webapp
Doc
Service
Docstore
Webapp

Webapp

Doc
Service

Doc
Service

Docstore

Docstore
Front-end Load Balancer

Webapp

Webapp

Doc
Service

Doc
Service

Docstore

Docstore
Siloed Stacks
Front-end Load Balancer

Webapp

Webapp

Doc
Service

Doc
Service

Docstore

Docstore
Siloed Stacks

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
?

Horizontally scalable
Scaling Silos
Front-end Load Balancer

Webapp

Webapp

Doc
Service

Doc
Service

Docstore

Docstore
Scaling Silos
Front-end Load Balancer

Webapp

Webapp

Webapp

Doc
Service

Doc
Service

Docstore

Docstore
Scaling Silos
Front-end Load Balancer

Webapp

Webapp

Webapp

Doc
Service

Doc
Service

Doc
Service

Docstore

Docstore

Docstore
Need bigger and

bigger machines
Vertical Scaling
Siloed Stacks

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
✘ Horizontally scalable
Siloed Stacks

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
✘ Horizontally scalable

Services
Version 1
Improve scalability
Front-end Load Balancer

Webapp

Webapp

Webapp

Doc
Service

Doc
Service

Doc
Service

Docstore

Docstore

Docstore
Front-end Load Balancer
Webapp

Webapp

Webapp

Doc Service Load Balancer
Doc
Service

Doc
Service

Docstore

Docstore
Per-Service Balancer
Front-end Load Balancer
Webapp

Webapp

Webapp

Doc Service Load Balancer
Doc
Service

Doc
Service

Docstore

Docstore
Per-Service Balancer

~

Simple deploys

?

Efficient networking (Fast)

?

Resilient

✓ Horizontally scalable
Proxying isn’t free

✘2x Bandwidth
Webapp

Doc Service Load Balancer

Doc
Service
Per-Service Balancer

~

Simple deploys

✘ Efficient networking (Fast)
?

Resilient

✓ Horizontally scalable
Resilience
Front-end Load Balancer
Webapp

Webapp

Webapp

SINGLE POINT OF FAILURE
Doc
Service

Doc
Service

Docstore

Docstore
Need two balancers
Need two balancers
...and a way to balance
between them?
Load Balancer Balancing
Master / Slave
Share IP address
Heartbeat between nodes
Complex
Resilience
Front-end Load Balancer
Webapp

Webapp

Webapp

Doc Service Load Balancer
Doc Service Load Balancer
Doc
Service

Doc
Service

Docstore

Docstore
Best explained by our
Operations folks:
“Redundant Array of
Inexpensive Datacenters”
http://go.indeed.com/raid
Per-Service Balancer

~

Simple deploys

✘ Efficient networking (Fast)
✓ Resilient
✓ Horizontally scalable
Per-Service Balancer

~

Simple deploys

✘ Efficient networking (Fast)
✓ Resilient
✓ Horizontally scalable

Services
Version 2
Reduce network waste
Front-end Load Balancer
Webapp

Webapp

Webapp

Doc Service Load Balancer
Doc
Service

Doc
Service

Docstore

Docstore
Front-end Load Balancer
Webapp

Webapp

Webapp

Doc
Service

Doc
Service

Docstore

Docstore
Naive Round Robin
Front-end Load Balancer
Webapp

Webapp

Webapp

Doc
Service

Doc
Service

Docstore

Docstore
Naive Round Robin

✓ Simple deploys
?

Efficient networking (Fast)

?

Resilient

✓ Horizontally scalable
Direct Connections

Webapp

✓1x Bandwidth
Doc
Service
Naive Round Robin

✓ Simple deploys
✓ Efficient networking (Fast)
?

Resilient

✓ Horizontally scalable
Server A

Server B
Server A

Server B
REQUEST

Server A

Server B
✘

REQUEST

Server A

Server B
✘

REQUEST

Server A

Server B
REQUEST

Server A

Server B
Server A

Server B

REQUEST
Naive Round Robin

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
✓ Horizontally scalable
Naive Round Robin

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
✓ Horizontally scalable
Naive Round Robin

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
✓ Horizontally scalable
?

Balanced
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Can’t keep
up

Slow

Fast
Naive Round Robin

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
✓ Horizontally scalable
✘ Balanced
Naive Round Robin

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
✓ Horizontally scalable
✘ Balanced

NOPE
Ensure balance
Front-end Load Balancer
Webapp

Webapp

Webapp

Doc Service Load Balancer
Doc
Service

Doc
Service

Docstore

Docstore
Front-end Load Balancer
Webapp

Webapp

Webapp

Distribute!
Doc
Service

Doc
Service

Docstore

Docstore
Front-end Load Balancer
Webapp

Webapp

B

Webapp

B

B

Doc
Service

Doc
Service

Docstore

Docstore
Front-end Load Balancer
Web
App

Web
App

B

Web
App

B

Doc
Service

Doc
Service

Docstore

Docstore

B
Boxcar
Front-end Load Balancer
Web
App

Web
App

B

Web
App

B

Doc
Service

Doc
Service

Docstore

Docstore

B
Naive Round
Robin

Per-Service
Balancer
The Boxcar balancing
algorithm is simple
Gist
Servers assign numeric value to
connections
Clients use the connection with the
lowest numeric value to service each
request
Server A
Server A

Server A
Server A
Slot 0
Slot 1
Slot 2
Slot 3
Slot 4
...
Slot Numbers
Just numbers

Server A
Slot 0

No limit

Slot 1
Slot 2

NOT a priority

Slot 3
Slot 4
...

ONLY used for balancing
LOW slot numbers
are the
BEST slot numbers
Server A
Slot 0

USED

Slot 1

He

llo

!

USED

Slot 2

Client 2

Slot 3
Slot 4

USED
...
Server A
Slot 0

USED

Slot 1

USED

Slot 2

USED

Slot 3
Slot 4

USED

Slot 2
Client 2

...
Client 2
Client 2
Client 2
Server

Client 2

Server

Slot 0
Slot 2

A

Slot 12
Slot 29
Slot 30
Slot 57

B
long-lived
connections

Server

Client 2

Server

Slot 0
Slot 2

A

Slot 12
Slot 29
Slot 30
Slot 57

B
Clients are greedy
MINE!

50

2
Clients are greedy
Want best connections
MINE!

50

2

Continually look for better
connections
Close worst connections
Background thread maintains
the
connection pool
Server

Client 2

Server

Slot 0
Slot 2

A

Slot 12
Slot 29
Slot 30
Slot 57

B
Slot
17

Server

Client 2

Server

Slot 0
Slot 2

A

Slot 12
Slot 29
Slot 30
Slot 57

B
Slot
17

Server

Client 2

Server

Slot 0
Slot 2

A

B

Slot 12
Slot 29
Slot 30

✘

Slot 57

✘
Slot
17

Server

Client 2

Server

Slot 0
Slot 2

A

Slot 12
Slot 29
Slot 30

B
Slot
17

Server

Client 2

Server

Slot 0
Slot 2

A

Slot 12
Slot 29
Slot 30

B
Server

Client 2

Server

Slot 0
Slot 2

A

Slot 12
Slot 17
Slot 29
Slot 30

B
Server

Client 2

Server

Slot 0
Slot 2

A

Slot 12
Slot 17
Slot 29
Slot 30

Continues forever

B
Incoming Requests
Client 2
Slot 0

ACTIVE

Slot 2

ACTIVE

Slot 12

[idle]

Slot 29

ACTIVE

Slot 30

[idle]

Slot 57

[idle]

GetJobs()
Incoming Requests
Client 2
Slot 0

ACTIVE

Slot 2

ACTIVE

Slot 12

ACTIVE

Slot 29

ACTIVE

Slot 30

[idle]

Slot 57

[idle]

GetJobs()
Connections NOT
established on-demand
Requests to Busy Pool
Client 2
Slot 0

ACTIVE

Slot 2

ACTIVE

Slot 12

ACTIVE

Slot 29

ACTIVE

Slot 30

ACTIVE

Slot 57

ACTIVE

GetJobs()
Requests to Busy Pool
Client 2
Slot 0

ACTIVE

Slot 2

ACTIVE

Slot 12

ACTIVE

Slot 29

ACTIVE

Slot 30

ACTIVE

Slot 57

ACTIVE

✘

GetJobs()
ERROR!
Sizing the pool properly is
imperative!
Gist Redux
Servers assign numeric value to
connections
Clients use the connection with the
lowest numeric value to service each
request
Balanced load is
emergent behavior
Load Balancing
Simulations
Server A

Server B

Client X
Server A
slot 0

Server B

Client X
0
Server A
slot 0

Server B

Client X
0
Server A
slot 0

Client X
0
0

Server B
slot 0
Server A
slot 0

Server B
slot 0

Client X
0
0
Server A
slot 0
slot 1

1
1

Server B
slot 0
slot 1

Client X
0
0
Server A
slot 0

Client X
0
0

Server B
slot 0

Steady-state balance
Server A
slot 0

Client X
0
0

New Clients Join
Server B
slot 0
Server A
slot 0

Client X
0
0

Client Y

Server B
slot 0
Server A
slot 0
slot 1

Client X
0
0

1
1
Server B
slot 0
slot 1

Client Y
Server A
slot 0
slot 1

Client X
0
0

Client Y
1
1
Server B
slot 0
slot 1
Server A
slot 0
slot 1
slot 2

Client X
0
0

2

Server B
slot 0
slot 1
slot 2

2

Client Y
1
1
Server A
slot 0
slot 1

Client X
0
0

Client Y
1
1
Server B
slot 0
slot 1
Server A
slot 0
slot 1

Client X
0
0

Client Y
1
1
Server B
slot 0
slot 1

Client Z
Server A
slot 0
slot 1
slot 2

Client X
0
0

Client Y
1
1
Server B
slot 0
slot 1
slot 2

2
2

Client Z
Server A
slot 0
slot 1
slot 2

Client X
0
0

Client Y
1
1
Server B
slot 0
slot 1
slot 2

Client Z
2
2
Server A
slot 0
slot 1
slot 2
slot 3

Client X
0
0

Client Y
1
1
Server B
slot 0
slot 1
slot 2
slot 3

3
3

Client Z
2
2
Server A
slot 0
slot 1
slot 2

Client X
0
0

Client Y
1
1
Server B
slot 0
slot 1
slot 2

Client Z
2
2
Steady-state balance
Server A
slot 0
slot 1
slot 2

Client X
0
0

Server Failure
Server B
slot 0
slot 1
slot 2

Client Y
1
1

Client Z
2
2
Server A
slot 0
slot 1
slot 2

Client X
0

Client Y
1

Server B
slot 0

Client Z
2
Server A
slot 0
slot 1
slot 2

Client X
0

Client Y
1

Server B
Client Z
2
Server A
slot 0
slot 1
slot 2
slot 3

Client X
0

Client Y
1

Server B
3

Client Z
2
Server A
slot 0
slot 1
slot 2
slot 3

Client X
0

Client Y
1

Server B
Client Z
2
3
Server A
slot 0
slot 1
slot 2
slot 3
slot 4

Client X
0
4

Client Y
1

Server B
Client Z
2
3
Server A
slot 0
slot 1
slot 2
slot 3
slot 4

Client X
0
4

Client Y
1

Server B
Client Z
2
3
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Client X
0
4

5

Client Y
1

Server B
Client Z
2
3
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Client X
0
4

Client Y
1
5

Server B
Client Z
2
3
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Client X
0
4

Client Y
1
5

Server B
Client Z
2
3
Steady-state balance
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Client X
0
4

Client Y
1
5

Server B
Client Z
2
3
Steady-state balance
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Client X
0
4

Server Restored

Client Y
1
5

Server B
Client Z
2
3
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Client X
0
4

Client Y
1
5

Server B
Client Z
2
3
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Client X
0
4

Client Y
1
5

Server B
slot 0
0

Client Z
2
3
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Server B
slot 0

Client X
0
4

Client Y
1
5

Client Z
2
0<3
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Server B
slot 0

Client X
0
4

Client Y
1
5

Client Z
2
0
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Server B
slot 0

Client X
0
4

Client Y
1
5

Client Z
2
0
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Server B
slot 0

Client X
0
4

Client Y
1
5

Client Z
0
2
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Client X
0
4

Client Y
1
5
1

Server B
slot 0
slot 1

Client Z
0
2
Server A
slot 0
slot 1
slot 2
slot 3
slot 4
slot 5

Server B
slot 0
slot 1

Client X
0
4

Client Y
1
1<5

Client Z
0
2
Server A
slot 0
slot 1
slot 2
slot 3
slot 4

Client X
0
4

Client Y
1
1
Server B
slot 0
slot 1

Client Z
0
2
Server A
slot 0
slot 1
slot 2
slot 3
slot 4

Client X
0
4
2
Client Y
1
1

Server B
slot 0
slot 1
slot 2

Client Z
0
2
Server A
slot 0
slot 1
slot 2
slot 3
slot 4

Client X
0
2<4

Client Y
1
1
Server B
slot 0
slot 1
slot 2

Client Z
0
2
Server A
slot 0
slot 1
slot 2

Client X
0
2

Client Y
1
1
Server B
slot 0
slot 1
slot 2

Client Z
0
2
Server A
slot 0
slot 1
slot 2

Client X
0
2

Client Y
1
1
Server B
slot 0
slot 1
slot 2

Client Z
0
2
Steady-state balance
Server A
slot 0
slot 1
slot 2

Client X
0
2

Client Shutdown
Server B
slot 0
slot 1
slot 2

Client Y
1
1

Client Z
0
2
Server A
slot 0
slot 1
slot 2

Client X
0
2

Client Y
1
1
Server B
slot 0
slot 1
slot 2

Client Z
0
2
Server A
slot 0
slot 1
slot 2

Server B
slot 0
slot 1
slot 2

Client X
0
2

Client Z
0
2
Server A
slot 0
slot 1
slot 2

Server B
slot 0
slot 1
slot 2

Client X
0
2

1

Client Z
0
2
Server A
slot 0
slot 1
slot 2

Server B
slot 0
slot 1
slot 2

Client X
0
2

Client Z
0
1<2
Server A
slot 0

Server B
slot 0
slot 1
slot 2

Client X
0
2

Client Z
0
1
Server A
slot 0
slot 1

Server B
slot 0
slot 1
slot 2

1

Client X
0
2

Client Z
0
1
Server A
slot 0
slot 1

Client X
0
1<2

Server B
slot 0
slot 1
slot 2

Client Z
0
1
Server A
slot 0
slot 1

Server B
slot 0
slot 1

Client X
0
1

Client Z
0
1
Server A
slot 0
slot 1

Client X
0
1

Server B
slot 0
slot 1

Client Z
0
1
Steady-state balance
Server A
slot 0
slot 1

Client X
0
1

Client Rejoins
Server B
slot 0
slot 1

Client Z
0
1
Server A
slot 0
slot 1

Client X
0
1

Client Y

Server B
slot 0
slot 1

Client Z
0
1
Server A
slot 0
slot 1
slot 2

Client X
0
1

2

Client Y

2
Server B
slot 0
slot 1
slot 2

Client Z
0
1
Server A
slot 0
slot 1
slot 2

Client X
0
1

Client Y
2
2
Server B
slot 0
slot 1
slot 2

Client Z
0
1
Server A
slot 0
slot 1
slot 2

Client X
0
1

Client Y
2
2
Server B
slot 0
slot 1
slot 2

Client Z
0
1
Steady-state balance
Why does this Balance?
Connections are like
running water
seeking lower ground
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Roughly Equal
Distribution
Slots

Connections

Servers
Edge cases
Server A
slot 0
slot 1

Server B
slot 0
slot 1

Client X
0
1

Client Z
0
1
Server A
slot 0
slot 1

Client X
0
1

Balanced
but not ideal
Server B
slot 0
slot 1

Client Z
0
1
Server A
slot 0
slot 1

Client X
0
1

Server B
slot 0

Client Z
Server A
slot 0
slot 1

Client X
0
1

Server B
slot 0

Client Z

EMPTY
POOL!
Server A
slot 0
slot 1

Client X
0
1

✘ Resilient
Server B
slot 0

EMPTY
POOL!

Client Z
Fix by adding entropy
Fix by adding entropy
aka “Table Shaking”
Table Shaking
Servers regularly hang up on connections
Table Shaking
Servers regularly hang up on connections
Clients expect failed connections
Table Shaking
Servers regularly hang up on connections
Clients expect failed connections
Failures are retried on new connections
Table Shaking
Servers regularly hang up on connections
Clients expect failed connections
Failures are retried on new connections
Bad configurations are less likely
Server A
slot 0
slot 1

Client X
0
1

Table Shaking
turns this
Server B
slot 0
slot 1

Client Z
0
1
Server A
slot 0
slot 1

Client X
0
1

Into this
Server B
slot 0
slot 1

Client Z
0
1
Server A
slot 0
slot 1

Server B
slot 0

Client X
0

Client Z
1
Server A
slot 0
slot 1

Client X
0

YAY!

YAY!
Server B
slot 0

Client Z
1
Balancing Tricks:
Handicapping
Handicapping is
Server Self-quarantine
Handicapping
Exploit slot number assignment
Handicapping
Exploit slot number assignment
Unhealthy servers inflate slot numbers
Handicapping
Exploit slot number assignment
Unhealthy servers inflate slot numbers
Clients naturally avoid these servers
Slots

Connections

Servers
Unhealthy
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Unhealthy
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers
Slots

Connections

Servers

graceful degradation
Is Boxcar good?
Boxcar

✓ Simple deploys
✓ Efficient networking (Fast)
?

Resilient

✓ Horizontally scalable
?

Balanced
Clients are pessimistic
Clients are pessimistic
Failure is expected
Boxcar

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
✓ Horizontally scalable
?

Balanced
Balance Connections
Not Requests
Balancing Review:
Naive Round Robin
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Slow

Fast
Can’t keep
up

Slow

Fast
The problem was that
requests (connections)
piled up
Boxcar has a fixed number of
connections
Boxcar has a fixed number of
connections
there’s nothing to pile up
Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9
0 1

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

Slot 7

Slot 9

Slow
Server

Fast
Server
Client

7 9

2 requests

4 requests

Slot 7

Slot 9

Slow
Server

Fast
Server
Slow servers handle fewer
requests
No overloaded servers
All requests are serviced
Load balancing is
probabilistic
Boxcar

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
✓ Horizontally scalable
✓ Balanced
Boxcar

✓ Simple deploys
✓ Efficient networking (Fast)
✓ Resilient
✓ Horizontally scalable
✓ Balanced
Good enough for Indeed
Services well over a

BILLION requests
every day
Fundamental technology
Powering over 20
different services
In production since 2009
Service
Oriented
Architecture
Q&A

Contenu connexe

Tendances

(WEB301) Operational Web Log Analysis | AWS re:Invent 2014
(WEB301) Operational Web Log Analysis | AWS re:Invent 2014(WEB301) Operational Web Log Analysis | AWS re:Invent 2014
(WEB301) Operational Web Log Analysis | AWS re:Invent 2014Amazon Web Services
 
Writing less code with Serverless on AWS at FrOSCon 2021
Writing less code with Serverless on AWS at FrOSCon 2021Writing less code with Serverless on AWS at FrOSCon 2021
Writing less code with Serverless on AWS at FrOSCon 2021Vadym Kazulkin
 
COE 2016: Technical Data Migration Made Simple
COE 2016: Technical Data Migration Made SimpleCOE 2016: Technical Data Migration Made Simple
COE 2016: Technical Data Migration Made SimpleRazorleaf Corporation
 
A Look at the Performance of SAP UI Technologies - UXP212 at SAP TechEd && d-...
A Look at the Performance of SAP UI Technologies - UXP212 at SAP TechEd && d-...A Look at the Performance of SAP UI Technologies - UXP212 at SAP TechEd && d-...
A Look at the Performance of SAP UI Technologies - UXP212 at SAP TechEd && d-...Sascha Wenninger
 
Optimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-miningOptimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-miningAtlassian
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web ComponentsRed Pill Now
 
Enterprise DevOps at Scale with AWS | AWS Public Sector Summit 2016
Enterprise DevOps at Scale with AWS | AWS Public Sector Summit 2016Enterprise DevOps at Scale with AWS | AWS Public Sector Summit 2016
Enterprise DevOps at Scale with AWS | AWS Public Sector Summit 2016Amazon Web Services
 
Atlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-OnsAtlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-OnsAtlassian
 
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...Amazon Web Services
 
Scaling wix with microservices and multi cloud - 2015
Scaling wix with microservices and multi cloud - 2015Scaling wix with microservices and multi cloud - 2015
Scaling wix with microservices and multi cloud - 2015Aviran Mordo
 
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...Amazon Web Services
 
Writing less code with Serverless on AWS at AWS User Group Nairobi
Writing less code with Serverless on AWS at AWS User Group NairobiWriting less code with Serverless on AWS at AWS User Group Nairobi
Writing less code with Serverless on AWS at AWS User Group NairobiVadym Kazulkin
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...Amazon Web Services
 
Api fundamentals
Api fundamentalsApi fundamentals
Api fundamentalsAgileDenver
 
Pratiques administration avancées et techniques de développement
Pratiques administration avancées et techniques de développementPratiques administration avancées et techniques de développement
Pratiques administration avancées et techniques de développementParis Salesforce Developer Group
 
M is for modernization
M is for modernizationM is for modernization
M is for modernizationRed Pill Now
 
LearnBop Blue Green AWS Deployments - October 2015
LearnBop Blue Green AWS Deployments - October 2015LearnBop Blue Green AWS Deployments - October 2015
LearnBop Blue Green AWS Deployments - October 2015Alec Lazarescu
 

Tendances (20)

(WEB301) Operational Web Log Analysis | AWS re:Invent 2014
(WEB301) Operational Web Log Analysis | AWS re:Invent 2014(WEB301) Operational Web Log Analysis | AWS re:Invent 2014
(WEB301) Operational Web Log Analysis | AWS re:Invent 2014
 
Writing less code with Serverless on AWS at FrOSCon 2021
Writing less code with Serverless on AWS at FrOSCon 2021Writing less code with Serverless on AWS at FrOSCon 2021
Writing less code with Serverless on AWS at FrOSCon 2021
 
The CSV File Strikes Back
The CSV File Strikes BackThe CSV File Strikes Back
The CSV File Strikes Back
 
COE 2016: Technical Data Migration Made Simple
COE 2016: Technical Data Migration Made SimpleCOE 2016: Technical Data Migration Made Simple
COE 2016: Technical Data Migration Made Simple
 
A Look at the Performance of SAP UI Technologies - UXP212 at SAP TechEd && d-...
A Look at the Performance of SAP UI Technologies - UXP212 at SAP TechEd && d-...A Look at the Performance of SAP UI Technologies - UXP212 at SAP TechEd && d-...
A Look at the Performance of SAP UI Technologies - UXP212 at SAP TechEd && d-...
 
Optimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-miningOptimizing Git LFS Migration Through Repository Data-mining
Optimizing Git LFS Migration Through Repository Data-mining
 
An Introduction to Web Components
An Introduction to Web ComponentsAn Introduction to Web Components
An Introduction to Web Components
 
Enterprise DevOps at Scale with AWS | AWS Public Sector Summit 2016
Enterprise DevOps at Scale with AWS | AWS Public Sector Summit 2016Enterprise DevOps at Scale with AWS | AWS Public Sector Summit 2016
Enterprise DevOps at Scale with AWS | AWS Public Sector Summit 2016
 
Atlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-OnsAtlassian Connect on Serverless Platforms: Low Cost Add-Ons
Atlassian Connect on Serverless Platforms: Low Cost Add-Ons
 
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...
Building a CICD Pipeline for Container Deployment to Amazon ECS - May 2017 AW...
 
Scaling wix with microservices and multi cloud - 2015
Scaling wix with microservices and multi cloud - 2015Scaling wix with microservices and multi cloud - 2015
Scaling wix with microservices and multi cloud - 2015
 
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...
Managing Your Application Lifecycle on AWS: Continuous Integration and Deploy...
 
Writing less code with Serverless on AWS at AWS User Group Nairobi
Writing less code with Serverless on AWS at AWS User Group NairobiWriting less code with Serverless on AWS at AWS User Group Nairobi
Writing less code with Serverless on AWS at AWS User Group Nairobi
 
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
DevOps, Continuous Integration and Deployment on AWS: Putting Money Back into...
 
Cloud-native Data
Cloud-native DataCloud-native Data
Cloud-native Data
 
Api fundamentals
Api fundamentalsApi fundamentals
Api fundamentals
 
Pratiques administration avancées et techniques de développement
Pratiques administration avancées et techniques de développementPratiques administration avancées et techniques de développement
Pratiques administration avancées et techniques de développement
 
Cqrs api v2
Cqrs api v2Cqrs api v2
Cqrs api v2
 
M is for modernization
M is for modernizationM is for modernization
M is for modernization
 
LearnBop Blue Green AWS Deployments - October 2015
LearnBop Blue Green AWS Deployments - October 2015LearnBop Blue Green AWS Deployments - October 2015
LearnBop Blue Green AWS Deployments - October 2015
 

Similaire à [@IndeedEng] Boxcar: A self-balancing distributed services protocol

Lunch && Learn DevHub - 6 Things to Learn to become an AWS Genius
Lunch && Learn DevHub - 6 Things to Learn to become an AWS GeniusLunch && Learn DevHub - 6 Things to Learn to become an AWS Genius
Lunch && Learn DevHub - 6 Things to Learn to become an AWS GeniusAndrew Brown
 
Pipeline conference 2017 - Breaking down your build: architectural patterns f...
Pipeline conference 2017 - Breaking down your build: architectural patterns f...Pipeline conference 2017 - Breaking down your build: architectural patterns f...
Pipeline conference 2017 - Breaking down your build: architectural patterns f...Abraham Marin-Perez
 
Continuously serving the OSS community with Continuous Integration and Delive...
Continuously serving the OSS community with Continuous Integration and Delive...Continuously serving the OSS community with Continuous Integration and Delive...
Continuously serving the OSS community with Continuous Integration and Delive...Thoughtworks
 
FISL 15: Continuously serving the OSS community with Continuous Integration a...
FISL 15: Continuously serving the OSS community with Continuous Integration a...FISL 15: Continuously serving the OSS community with Continuous Integration a...
FISL 15: Continuously serving the OSS community with Continuous Integration a...Akshay Karle
 
Rest in Practice, Brazil 2010
Rest in Practice, Brazil 2010Rest in Practice, Brazil 2010
Rest in Practice, Brazil 2010Thoughtworks
 
Changing application demands: What developers need to know
Changing application demands: What developers need to knowChanging application demands: What developers need to know
Changing application demands: What developers need to knowIndicThreads
 
Couchbase overview033113long
Couchbase overview033113longCouchbase overview033113long
Couchbase overview033113longJeff Harris
 
Couchbase overview033113long
Couchbase overview033113longCouchbase overview033113long
Couchbase overview033113longJeff Harris
 
Couchbase Mobile on Android
Couchbase Mobile on AndroidCouchbase Mobile on Android
Couchbase Mobile on AndroidPhilipp Fehre
 
Containers and the Evolution of Computing
Containers and the Evolution of ComputingContainers and the Evolution of Computing
Containers and the Evolution of ComputingAmazon Web Services
 
Handling Asynchronous Workloads With OpenShift and Iron.io
Handling Asynchronous Workloads With OpenShift and Iron.ioHandling Asynchronous Workloads With OpenShift and Iron.io
Handling Asynchronous Workloads With OpenShift and Iron.ioIvan Dwyer
 
Using Red Hat’s OpenShift PaaS to Develop Scalable Applications on AWS (DMG21...
Using Red Hat’s OpenShift PaaS to Develop Scalable Applications on AWS (DMG21...Using Red Hat’s OpenShift PaaS to Develop Scalable Applications on AWS (DMG21...
Using Red Hat’s OpenShift PaaS to Develop Scalable Applications on AWS (DMG21...Amazon Web Services
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Vadym Kazulkin
 
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...Vadym Kazulkin
 
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileKenAtIndeed
 
Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352sflynn073
 
Achieving a Serverless Development Experience
Achieving a Serverless Development ExperienceAchieving a Serverless Development Experience
Achieving a Serverless Development ExperienceIvan Dwyer
 
NodeJS Interactive 2019: FaaS meets Frameworks
NodeJS Interactive 2019:  FaaS meets FrameworksNodeJS Interactive 2019:  FaaS meets Frameworks
NodeJS Interactive 2019: FaaS meets FrameworksChris Bailey
 
5 Proven Tips for Building a Successful Enterprise Web Application
5 Proven Tips for Building a Successful Enterprise Web Application5 Proven Tips for Building a Successful Enterprise Web Application
5 Proven Tips for Building a Successful Enterprise Web ApplicationZorbis Inc.
 

Similaire à [@IndeedEng] Boxcar: A self-balancing distributed services protocol (20)

Lunch && Learn DevHub - 6 Things to Learn to become an AWS Genius
Lunch && Learn DevHub - 6 Things to Learn to become an AWS GeniusLunch && Learn DevHub - 6 Things to Learn to become an AWS Genius
Lunch && Learn DevHub - 6 Things to Learn to become an AWS Genius
 
Pipeline conference 2017 - Breaking down your build: architectural patterns f...
Pipeline conference 2017 - Breaking down your build: architectural patterns f...Pipeline conference 2017 - Breaking down your build: architectural patterns f...
Pipeline conference 2017 - Breaking down your build: architectural patterns f...
 
Continuously serving the OSS community with Continuous Integration and Delive...
Continuously serving the OSS community with Continuous Integration and Delive...Continuously serving the OSS community with Continuous Integration and Delive...
Continuously serving the OSS community with Continuous Integration and Delive...
 
FISL 15: Continuously serving the OSS community with Continuous Integration a...
FISL 15: Continuously serving the OSS community with Continuous Integration a...FISL 15: Continuously serving the OSS community with Continuous Integration a...
FISL 15: Continuously serving the OSS community with Continuous Integration a...
 
Rest in Practice, Brazil 2010
Rest in Practice, Brazil 2010Rest in Practice, Brazil 2010
Rest in Practice, Brazil 2010
 
Changing application demands: What developers need to know
Changing application demands: What developers need to knowChanging application demands: What developers need to know
Changing application demands: What developers need to know
 
Couchbase overview033113long
Couchbase overview033113longCouchbase overview033113long
Couchbase overview033113long
 
Couchbase overview033113long
Couchbase overview033113longCouchbase overview033113long
Couchbase overview033113long
 
Couchbase Mobile on Android
Couchbase Mobile on AndroidCouchbase Mobile on Android
Couchbase Mobile on Android
 
Containers and the Evolution of Computing
Containers and the Evolution of ComputingContainers and the Evolution of Computing
Containers and the Evolution of Computing
 
Handling Asynchronous Workloads With OpenShift and Iron.io
Handling Asynchronous Workloads With OpenShift and Iron.ioHandling Asynchronous Workloads With OpenShift and Iron.io
Handling Asynchronous Workloads With OpenShift and Iron.io
 
Using Red Hat’s OpenShift PaaS to Develop Scalable Applications on AWS (DMG21...
Using Red Hat’s OpenShift PaaS to Develop Scalable Applications on AWS (DMG21...Using Red Hat’s OpenShift PaaS to Develop Scalable Applications on AWS (DMG21...
Using Red Hat’s OpenShift PaaS to Develop Scalable Applications on AWS (DMG21...
 
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
Measure and Increase Developer Productivity with Help of Serverless at AWS Co...
 
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
 
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond AgileEngineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
Engineering Velocity @indeed eng presented on Sept 24 2014 at Beyond Agile
 
Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352Was l iberty for java batch and jsr352
Was l iberty for java batch and jsr352
 
Achieving a Serverless Development Experience
Achieving a Serverless Development ExperienceAchieving a Serverless Development Experience
Achieving a Serverless Development Experience
 
Just do it!
Just do it!Just do it!
Just do it!
 
NodeJS Interactive 2019: FaaS meets Frameworks
NodeJS Interactive 2019:  FaaS meets FrameworksNodeJS Interactive 2019:  FaaS meets Frameworks
NodeJS Interactive 2019: FaaS meets Frameworks
 
5 Proven Tips for Building a Successful Enterprise Web Application
5 Proven Tips for Building a Successful Enterprise Web Application5 Proven Tips for Building a Successful Enterprise Web Application
5 Proven Tips for Building a Successful Enterprise Web Application
 

Plus de indeedeng

Weapons of Math Instruction: Evolving from Data0-Driven to Science-Driven
Weapons of Math Instruction: Evolving from Data0-Driven to Science-DrivenWeapons of Math Instruction: Evolving from Data0-Driven to Science-Driven
Weapons of Math Instruction: Evolving from Data0-Driven to Science-Drivenindeedeng
 
Alchemy and Science: Choosing Metrics That Work
Alchemy and Science: Choosing Metrics That WorkAlchemy and Science: Choosing Metrics That Work
Alchemy and Science: Choosing Metrics That Workindeedeng
 
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...indeedeng
 
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...indeedeng
 
Improving the development process with metrics driven insights presentation
Improving the development process with metrics driven insights presentationImproving the development process with metrics driven insights presentation
Improving the development process with metrics driven insights presentationindeedeng
 
Data-Driven off a Cliff: Anti-Patterns in Evidence-Based Decision Making
Data-Driven off a Cliff: Anti-Patterns in Evidence-Based Decision MakingData-Driven off a Cliff: Anti-Patterns in Evidence-Based Decision Making
Data-Driven off a Cliff: Anti-Patterns in Evidence-Based Decision Makingindeedeng
 
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)indeedeng
 
Data Day Texas - Recommendations
Data Day Texas - RecommendationsData Day Texas - Recommendations
Data Day Texas - Recommendationsindeedeng
 
Vectorized VByte Decoding
Vectorized VByte DecodingVectorized VByte Decoding
Vectorized VByte Decodingindeedeng
 
[@IndeedEng] Imhotep Workshop
[@IndeedEng] Imhotep Workshop[@IndeedEng] Imhotep Workshop
[@IndeedEng] Imhotep Workshopindeedeng
 
@IndeedEng: Tokens and Millicents - technical challenges in launching Indeed...
@IndeedEng:  Tokens and Millicents - technical challenges in launching Indeed...@IndeedEng:  Tokens and Millicents - technical challenges in launching Indeed...
@IndeedEng: Tokens and Millicents - technical challenges in launching Indeed...indeedeng
 
[@IndeedEng] Large scale interactive analytics with Imhotep
[@IndeedEng] Large scale interactive analytics with Imhotep[@IndeedEng] Large scale interactive analytics with Imhotep
[@IndeedEng] Large scale interactive analytics with Imhotepindeedeng
 
[@IndeedEng] Logrepo: Enabling Data-Driven Decisions
[@IndeedEng] Logrepo: Enabling Data-Driven Decisions[@IndeedEng] Logrepo: Enabling Data-Driven Decisions
[@IndeedEng] Logrepo: Enabling Data-Driven Decisionsindeedeng
 
[@IndeedEng Talk] Diving deeper into data-driven product design
[@IndeedEng Talk] Diving deeper into data-driven product design[@IndeedEng Talk] Diving deeper into data-driven product design
[@IndeedEng Talk] Diving deeper into data-driven product designindeedeng
 
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctorindeedeng
 
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...indeedeng
 
[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Searchindeedeng
 
[@IndeedEng] From 1 To 1 Billion: Evolution of Indeed's Document Serving System
[@IndeedEng] From 1 To 1 Billion: Evolution of Indeed's Document Serving System[@IndeedEng] From 1 To 1 Billion: Evolution of Indeed's Document Serving System
[@IndeedEng] From 1 To 1 Billion: Evolution of Indeed's Document Serving Systemindeedeng
 

Plus de indeedeng (18)

Weapons of Math Instruction: Evolving from Data0-Driven to Science-Driven
Weapons of Math Instruction: Evolving from Data0-Driven to Science-DrivenWeapons of Math Instruction: Evolving from Data0-Driven to Science-Driven
Weapons of Math Instruction: Evolving from Data0-Driven to Science-Driven
 
Alchemy and Science: Choosing Metrics That Work
Alchemy and Science: Choosing Metrics That WorkAlchemy and Science: Choosing Metrics That Work
Alchemy and Science: Choosing Metrics That Work
 
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...
 
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...
Indeed Engineering and The Lead Developer Present: Tech Leadership and Manage...
 
Improving the development process with metrics driven insights presentation
Improving the development process with metrics driven insights presentationImproving the development process with metrics driven insights presentation
Improving the development process with metrics driven insights presentation
 
Data-Driven off a Cliff: Anti-Patterns in Evidence-Based Decision Making
Data-Driven off a Cliff: Anti-Patterns in Evidence-Based Decision MakingData-Driven off a Cliff: Anti-Patterns in Evidence-Based Decision Making
Data-Driven off a Cliff: Anti-Patterns in Evidence-Based Decision Making
 
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
 
Data Day Texas - Recommendations
Data Day Texas - RecommendationsData Day Texas - Recommendations
Data Day Texas - Recommendations
 
Vectorized VByte Decoding
Vectorized VByte DecodingVectorized VByte Decoding
Vectorized VByte Decoding
 
[@IndeedEng] Imhotep Workshop
[@IndeedEng] Imhotep Workshop[@IndeedEng] Imhotep Workshop
[@IndeedEng] Imhotep Workshop
 
@IndeedEng: Tokens and Millicents - technical challenges in launching Indeed...
@IndeedEng:  Tokens and Millicents - technical challenges in launching Indeed...@IndeedEng:  Tokens and Millicents - technical challenges in launching Indeed...
@IndeedEng: Tokens and Millicents - technical challenges in launching Indeed...
 
[@IndeedEng] Large scale interactive analytics with Imhotep
[@IndeedEng] Large scale interactive analytics with Imhotep[@IndeedEng] Large scale interactive analytics with Imhotep
[@IndeedEng] Large scale interactive analytics with Imhotep
 
[@IndeedEng] Logrepo: Enabling Data-Driven Decisions
[@IndeedEng] Logrepo: Enabling Data-Driven Decisions[@IndeedEng] Logrepo: Enabling Data-Driven Decisions
[@IndeedEng] Logrepo: Enabling Data-Driven Decisions
 
[@IndeedEng Talk] Diving deeper into data-driven product design
[@IndeedEng Talk] Diving deeper into data-driven product design[@IndeedEng Talk] Diving deeper into data-driven product design
[@IndeedEng Talk] Diving deeper into data-driven product design
 
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
[@IndeedEng] Managing Experiments and Behavior Dynamically with Proctor
 
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
[@IndeedEng] Engineering Velocity: Building Great Software Through Fast Itera...
 
[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search[@IndeedEng] Building Indeed Resume Search
[@IndeedEng] Building Indeed Resume Search
 
[@IndeedEng] From 1 To 1 Billion: Evolution of Indeed's Document Serving System
[@IndeedEng] From 1 To 1 Billion: Evolution of Indeed's Document Serving System[@IndeedEng] From 1 To 1 Billion: Evolution of Indeed's Document Serving System
[@IndeedEng] From 1 To 1 Billion: Evolution of Indeed's Document Serving System
 

Dernier

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 

Dernier (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 

[@IndeedEng] Boxcar: A self-balancing distributed services protocol