Workflow de disjoncteur (circuit breaker)
patterns
Pattern de résilience de disjoncteur avec états fermé, ouvert et semi-ouvert pour protéger les services des défaillances en cascade avec tests de récupération automatique.
patterns
Modèle de réessai avec backoff exponentiel pour les appels API avec limites de réessai configurables, calcul de délai, détection d'erreurs réessayables et dégradation gracieuse en cas d'échecs permanents.
Client { # Client
n1: circle label:"Start"
n2: rectangle label:"Prepare API request"
n3: rectangle label:"Process successful response"
n4: rectangle label:"Handle permanent failure"
n5: circle label:"End"
n1.handle(right) -> n2.handle(left)
n2.handle(bottom) -> RetryHandler.n6.handle(top) [label="Send request"]
n3.handle(right) -> n5.handle(left)
n4.handle(right) -> n5.handle(left)
}
RetryHandler { # Retry Handler
n6: rectangle label:"Initialize retry state"
n7: rectangle label:"Execute HTTP request"
n8: diamond label:"Response status?"
n9: rectangle label:"Return success"
n10: diamond label:"Retryable error?"
n11: diamond label:"Retries remaining?"
n12: rectangle label:"Calculate backoff delay"
n13: rectangle label:"Wait exponential delay"
n14: rectangle label:"Increment retry counter"
n15: rectangle label:"Return final error"
n6.handle(right) -> n7.handle(left)
n7.handle(right) -> n8.handle(left)
n8.handle(right) -> n9.handle(left) [label="2xx"]
n8.handle(bottom) -> n10.handle(top) [label="4xx/5xx"]
n9.handle(top) -> Client.n3.handle(bottom) [label="Success"]
n10.handle(right) -> n11.handle(left) [label="Yes"]
n10.handle(bottom) -> n15.handle(top) [label="No"]
n11.handle(right) -> n12.handle(left) [label="Yes"]
n11.handle(bottom) -> n15.handle(top) [label="No"]
n12.handle(right) -> n13.handle(left)
n13.handle(right) -> n14.handle(left)
n14.handle(top) -> n7.handle(bottom) [label="Retry"]
n15.handle(top) -> Client.n4.handle(bottom) [label="Failed"]
loop [retry up to 3 times] n7 n8 n10 n11 n12 n13 n14
}
APIServer { # API Server
n16: rectangle label:"Receive request"
n17: diamond label:"Server healthy?"
n18: rectangle label:"Process request"
n19: rectangle label:"Return 503 Service Unavailable"
n20: rectangle label:"Return 200 OK"
n16.handle(right) -> n17.handle(left)
n17.handle(right) -> n18.handle(left) [label="Yes"]
n17.handle(bottom) -> n19.handle(top) [label="No"]
n18.handle(right) -> n20.handle(left)
n19.handle(top) -> RetryHandler.n8.handle(bottom) [label="Error"]
n20.handle(top) -> RetryHandler.n8.handle(bottom) [label="Success"]
}
patterns
Pattern de résilience de disjoncteur avec états fermé, ouvert et semi-ouvert pour protéger les services des défaillances en cascade avec tests de récupération automatique.
patterns
Ce flux de travail modélise la comparaison de deux versions pour voir laquelle donne les meilleures performances.
patterns
Schéma de passerelle API avec authentification des requêtes, limitation de débit, routage des requêtes vers les services backend, agrégation des réponses et gestion des erreurs.
patterns
Ce workflow modélise la journalisation de toutes les actions importantes à des fins de conformité.
patterns
Workflow d’authentification utilisateur avec validation des identifiants, défi MFA, génération de jeton JWT, création de session et suivi des tentatives échouées.
patterns
Ce workflow modélise la vérification des permissions utilisateur avant l’exécution des actions.