Highly available software

Guillaume Simard

  • Coveo
  • Team Lead
  • Infrastructure de usage data
  • Infrastructure de machine learning

200M+
900K+
1500+

THAT'S A LOT

OF NUTS REQUESTS!

Highly available software

Comment rester disponible en tout temps?

DESIGN

FOR

FAILURE

Add redundancy

Avoid state

Handle exceptions

Have a fallback plan

Async > Sync

A.A.H.H.A. !

Add redundancy

Add redundancy

Add redundancy

Avoid State

State sucks.

Avoid State

Use Immutability

Avoid sharing objects between requests

 

Avoid State

If you have to, save state in a shared thing

Handle Exceptions

Force yourself to document possible exceptions

Can happen on every interaction with another service

Distinguish between client side and server side errors

Every unhandled server side error is a bug

Have a Fallback Plan

Always have a Plan B

Async > Sync

Asynchronous leads to scalable

TL;DR

High Availability is hard

careers.coveo.com

source.coveo.com

?

High Availability + Cloud

By Guillaume Simard

High Availability + Cloud

  • 1,158