Slides de la conférence "Circuit Breaker; comment disjoncter pour "éviter de péter les plombs" du 19 Avril 2017 au BreizhCamp
Pourquoi et comment mettre en place un circuit breaker?
https://www.youtube.com/watch?v=e3n6zhoJd2M
2. #RÉVÉLER
LES SAVOIR-FAIRE
EN LOCAL
~812 M €
de chiffre d’affaires
~52%
Reach online et mobile
~ 490 000
annonceurs
~ 80 %
du chiffre d’affaires sur le
digital
Nos services utilisés par
9 français sur 10
#1
en contenu digital pour les PME
+250 K sites
Internet
~30% du marché de la
publicité digitale locale
7. CIRCUIT - BREAKER
QUELQUES CHIFFRES
▸ Coût moyen d’un incident en production
▸ 115 000 €
▸ MTTR (Mean Time To Repair)
▸ ~7H
▸ RCA (Root Cause Analysis)
▸ + de 12H
Source: Master of Machines III - Réduire l’impact des incidents IT Quocirca / Splunk 7
Sondage réalisé sur un échantillon de 400 entreprises en Grande-Bretagne,
Allemagne, France, Suède et Pays-Bas par Quocirca pour Splunk
21. CIRCUIT - BREAKER
AVANTAGES DES MICROSERVICES
▸ Consommation plus efficace des ressources
▸ Scalabilité horizontale variable
▸ Possibilité de faire varier le nombre d’instance de
chaque composant
▸ Plus modulaires
▸ Mises à jour facilitées
13
25. CIRCUIT - BREAKER
CIRCUIT-BREAKER, KESKECEST?
▸ Permet de maintenir la
disponibilité du service
▸ Eventuellement dégradé
▸ Disjoncteur / Coupe-circuit
▸ Automatique !
17
45. CIRCUIT - BREAKER
FONCTIONNEMENT
▸ Encapsule et supervise les échanges entre les services
▸ Interdit les appels lors du dépassement des seuils
▸ Réouverture quand le service est de nouveau opérationnel
34
53. Hystrix is a latency and fault tolerance library designed to
isolate points of access to remote systems, services and
3rd party libraries, stop cascading failure and enable
resilience in complex distributed systems where failure is
inevitable.
https://github.com/Netflix/Hystrix
CIRCUIT - BREAKER
54. CIRCUIT - BREAKER
FONCTIONNALITÉS
▸ Tolérance aux défaillances et aux timeouts
▸ Evite l’effet « boule de neige »
▸ Isolation des appels, fail fast, fallback
▸ Configuration dynamique et rechargeable
▸ Changements appliqués en temps réel
▸ Concurrence
▸ Parallélisation
▸ Caching, Batching
56. CIRCUIT - BREAKER
HYSTRIX
▸ Facile à mettre en place
▸ Très bonne granularité logique
▸ Coupure à la fonction
▸ Mais pas physique
▸ Limité au Java
45
66. CIRCUIT - BREAKER
CONSUL
▸ Basé sur un cluster d’agents
▸ Chaque serveur porte un agent
▸ Responsable des services colocalisés
▸ Enregistrement/Désenregistrement dans le cluster
▸ Produit les Health-Check
67. CIRCUIT - BREAKER
CONSUL-TEMPLATE
▸ Transforme n’importe quel fichier statique en dynamique
▸ A partir de l’état des services dans Consul et d’un template
backend mon_appli
{{ range $server := service "mon_appli "}}
server {{$server.Node}} {{$server.Address}}:{{$server.Port}} check observe layer7
{{ end }}
backend mon_backend
server server1 192.168.1.1:8080 check observe layer7
server server2 192.168.1.2:8080 check observe layer7
69. CIRCUIT - BREAKER
ET POURQUOI PAS TRAEFIK ?
▸ Assez jeune au moment de l’étude
▸ Perf < à HAProxy
▸ Fonctionnalités « Circuit-Breaker » en dessous de HAProxy
72. CIRCUIT - BREAKER
BÉNÉFICES
▸ Fonctionnement en majorité dynamique et automatique
▸ Enregistrement des services
▸ Entrée/Sortie du traffic
▸ "Container Ready" (port et localisation peuvent être
dynamiques)
▸ Générique
▸ Quelque soit la techno des APIs
73. CIRCUIT - BREAKER
FIABILITÉ
▸ En cas de défaillance
▸ Agent Consul
▸ Perte des services hébergés sur le même noeud
▸ Consul-Template
▸ Conservation de la configuration HAProxy à l’état N-1
▸ HAProxy
▸ Déployé en actif/actif via un LB matériel
74. CIRCUIT - BREAKER
DIFFICULTÉS
▸ Prise en compte des partenaires en HTTPS
▸ Supervision/Exploitation
▸ Tout automatique ça peut inquiéter
▸ Permettre à la production d’avoir un retour sur l’état du système
▸ Eventuellement de le piloter
▸ Configuration
▸ Ajustement des seuils