Auto Scaling, la facture risque d’être salée.
Avec le circuit breaker, une fois déclenché, cette surconsommation aurait été évitée en passant en mode dégradé et en désactivant le service 2.
L’affichage d’une page de notre application fait appel à plusieurs services.
Pas de chance le service en bout de chaîne (service 4) tombe.
Le service 3 tombe à son tour, car dépendant des réponses du service 4. Les raisons du crash peuvent être nombreuses et diverses :
Et ainsi de suite, jusqu’à l’affichage d’une erreur incompréhensible au client.
Le circuit breaker aurait évité la propagation et seul le service 4 aurait été impacté.
Dans cet exemple, nous constatons bien l’avantage par rapport aux patterns timeout et retry qui auraient été inutiles, voir auraient empiré la situation.
Un autre pattern intéressant dans ce cas est le bulkhead, voire notre livre blanc pour plus de détails.
Toujours avec la même application, une autre fonctionnalité dépend de plusieurs services.
En temps normal tous les services répondent en moins de 500ms et donc notre fonctionnalité à un temps de réponse en dessous de la seconde (l’application met 500ms pour traiter tous les résultats des services).
Un problème intervient sur notre service catalogue qui ne répond plus. La réponse arrive 2s après (réglage du timeout).
Notre temps de réponse est donc maintenant égal au maximum des temps de réponse des services et du temps de traitement.
Ce qui nous donne 2s + 500ms = 2,5s
Sans circuit breaker notre fonctionnalité prendra toujours 2,5s pour répondre le temps que le service catalogue soit réparé.
Avec le circuit breaker, une fois ouvert et donc passage en mode dégradé, le temps de réponse descendra à nouveau à 1s. Ici le choix a été fait d’avoir un bon temps de réponse avec un mode dégradé, plutôt qu’un temps de réponse très mauvais avec la bonne réponse.
Maintenant que nous savons comment le design pattern marche et dans quelles situations il peut être utilisé, il nous reste à regarder comment le mettre en oeuvre.
Pour aller plus loin, notre nouveau livre blanc sur le sujet vient de sortir :