Compensation de saga
Le patron qui consiste à défaire une transaction distribuée en plusieurs étapes (une « saga ») en exécutant des actions compensatoires explicites pour chaque étape déjà réalisée — au lieu d'un rollback de base de données. La méthode habituelle pour garder des données cohérentes entre microservices sans transactions distribuées.
Le problème : une opération qui traverse plusieurs services (réserver vol + hôtel + voiture de location) ne peut pas s'appuyer sur une transaction de base de données unique ni sur le 2PC (chaque service a sa propre base, et le 2PC passe mal à l'échelle). Une saga la découpe en transactions locales, une par service ; si une étape ultérieure échoue, des transactions compensatoires « annulent » les précédentes (annuler l'hôtel, rembourser le vol). Attention : la compensation est sémantique, pas un rollback exact — on rembourse l'argent, on ne remonte pas le temps. Deux styles : la chorégraphie (les services réagissent aux événements les uns des autres) ou l'orchestration (un coordinateur central pilote l'ensemble). Les compensations doivent être idempotentes. Une pierre angulaire de l'architecture en microservices. Voir aussi transaction distribuée et point de sauvegarde.