1 of 20

Circuit breaker

PHP - Forum 2016

www.eleven-labs.com

2 of 20

Qui suis-je ?

Jonathan Jalouzot - Lead développeur Lemonde.fr

@CaptainJojo42

https://github.com/captainjojo/

PHP - Symfony - React - Backbone - Node - Pg - RabbitMQ -MongoDB - etc ...

3 of 20

Architecture

4 of 20

Monolitique vs Microservices

Dessins d’Olivier Grange Labat CTO Lemonde

www.eleven-labs.com

5 of 20

Monolithique

Microservices

= un serveur

Les composants (pages articles, classeur abonné, suivi d’actu, etc.) sont tous sur un même serveur.

Les composants sont sur des serveurs dédiés, indépendants les uns des autres.

6 of 20

Monolithique

Microservices

La panne d’un composant...

7 of 20

Monolithique

Microservices

… entraîne la panne de tout le serveur :(

8 of 20

Monolithique

Microservices

La panne d’un composant (exemple : classeur abonné)

reste localisée : les autres continuent de fonctionner :)

9 of 20

Monolithique

Microservices

Si un composant en particulier

a besoin de plus de serveurs,

tout est dupliqué :(

10 of 20

Monolithique

Microservices

Le nombre de serveurs peut être adapté

aux besoins de chaque composant :)

11 of 20

Oui mais c’est quoi un circuit breaker ?

12 of 20

Un peu d’histoire

  • Il n’y a pas si longtemps, l'électricité arrive en France
  • Et c’est le drame ….

13 of 20

Le disjoncteur

14 of 20

Circuit breaker

Closed

on call / pass through

call succeeds / reset count

call fails / count failure

threshold reached / trip breaker

trip breaker

Open

on call / fail

on timeout / attempt reset

Half-Open

on call / pass through

call succeeds / reset

call fails / trip breaker

attempt reset

trip breaker

Reset

15 of 20

Sans circuit breaker

Un service casse

Sans circuit breaker

Il amène les autres avec lui

16 of 20

Avec circuit breaker

Un service casse

Avec circuit breaker

On attend qu’il se soigne

17 of 20

Implémentation

  • Les middlewares Guzzle 6

  • Utiliser les évènements symfony

18 of 20

Ce qu’il faut retenir

  • Don’t do it if it hurts
    • Circuit breaker c’est le pattern qui vous permet de protéger votre système
  • Use together with Timeouts
    • Circuit breaker permet de ne pas appeler vos services qui ont des problèmes
    • Le pattern ‘Timeouts’ permet de savoir s’il y a un problème sur vos services
  • Expose, track, and report state changes
    • Circuit breaker permet de suivre les problèmes de vos services

19 of 20

Vos livres de chevet :)

20 of 20

Questions ?