Fiabilité et Sécurité des Applications

Gestion des pannes

Emmanuel COQUERY

2023-04-24 – TIW-FSA

Introduction

Qualité de service

  • Service Level Objective (SLO):
    • description des attendus
      • en particulier mesurables
  • Exemples:
    • taux de disponibilité
    • temps de réponse
    • taux d’erreurs

Impacts des pannes

  • dégradation de la qualité de service
    • e.g. service non disponible
  • dégradation de l’utilisabilité
    • e.g. interface dégradée
  • perte de données
    • e.g. perte brute
    • e.g. transaction échouée silencieusement

Typologies de pannes

Caractéristiques des pannes

  • origine
  • type
  • impact
  • probabilité

Origine d’une panne

Interne

  • programmation
    • bug technique (typo, mauvaise utilisation d’un framework, etc)
    • bug algorithmique (y compris métier)
  • erreur pas/mal gérée

Origine d’une panne (2)

Externe

  • contexte d’exécution
    • limites de ressources
  • panne de composant externe
    • infrastructure
    • service
  • attaque

Type de panne

  • erreur système / du langage
    • segfault
    • fichier inexistant
    • exception non rattrappée et inattendue
  • atteinte de limites
  • ressource externe inutilisable

Conséquences de la panne

  • erreur inattendue dans une réponse
  • non respect d’un SLO
  • non respect d’une spécification
    • e.g. transaction arrêtée

Gestion des pannes

Niveaux de gestion

  • détection
  • mitigation
  • anticipation

Détection

  • monitoring
    • instrumenter le code (logs, sondes, mesures)
    • implémenter des levées d’alerte
  • gestion des requêtes
    • timeout
    • test du retour (statut HTTP, etc)

Mitigation

  • compenser
    • réssayer
    • déclencher une action corrective
  • réduction d’impact
    • garder une partie de la fonctionnalité opérationelle
  • propager et gérer à une autre endroit

Exemple

Pattern circuit-breaker

Réduction de l’impact d’une baisse de performance d’un service

  • détection d’un timeout sur l’appel au service
  • mise en place d’un flag
    • si le flag est activé, on appelle pas le service, mais on déclenche directement une erreur
  • test régulier pour voir si le service est à nouveau fonctionnel

Anticipation

  • modéliser le comportement du système
  • prédire quand la probabilité d’une panne deviendra trop importante
    • modèles simples, seuils
    • IA
  • agir en amont pour empêcher/mitiger la panne
  • exemples:
    • scaling des workers dans le TP
    • ajouter du stockage quand les disques sont pleins à plus de 80%

Liens