Historique de la question
Avec le passage aux architectures de microservices et aux systèmes distribués, la probabilité d'erreurs résultant des interactions entre services a fortement augmenté, ainsi que la complexité de leur traitement. Les approches antérieures prenaient souvent peu en compte l'instabilité des interactions réseau, ce qui entraînait des incidents majeurs en production.
Problème
Le problème clé réside dans le fait que les scénarios complexes de défaillance, de dégradation des services et d'erreurs d'intégration ne sont pas suffisamment formalisés dans les exigences. En conséquence, les développeurs sont contraints de prendre des décisions sur le traitement des erreurs à leur propre discrétion, ce qui entraîne une hétérogénéité des cas et des difficultés de test.
Solution
Une description efficace du traitement des erreurs doit inclure :
Caractéristiques clés :
Est-il obligatoire de décrire le traitement des erreurs techniques dans les exigences — n'est-ce pas la tâche du développeur ?
Oui, c'est obligatoire. Une politique de gestion des erreurs non reflétée entraîne souvent des erreurs de fonctionnement et des malentendus. L'analyste système doit discuter du comportement en cas d'erreurs.
Faut-il décrire les cas qui se produisent très rarement (par exemple, perte partielle de connexion entre services) ?
Oui, car les erreurs rares entraînent les incidents les plus complexes. Leurs conséquences peuvent être critiques pour l'entreprise.
Est-il nécessaire d'approuver avec le métier les messages affichés aux utilisateurs lors d'erreurs ?
Oui. Des messages corrects, informatifs, mais pas excessifs ou effrayants doivent être approuvés avec le métier, sinon l'expérience utilisateur et la fidélité en souffrent.
Cas négatif : Dans le projet, les scénarios de traitement des timeouts entre services n'avaient pas été décrits. En raison d'un réseau instable, les services « se bloquaient » sans réponse. Avantages : Exécution rapide des scénarios principaux. Inconvénients : Pannes massives en production, mécontentement des clients, fermeture « manuelle » des incidents.
Cas positif : L'analyste a décrit des scénarios de dégradation et de redémarrage, des tentatives répétées et des messages corrects. Avantages : Haute stabilité du service en cas de pannes, réduction des incidents. Inconvénients : Plus de temps pour l'élaboration de l'architecture des scénarios.