Cet article explore en profondeur le Saga Pattern, une solution élégante pour gérer les transactions distribuées dans les architectures microservices en PHP. Il explique pourquoi les transactions ACID traditionnelles ne fonctionnent pas dans un contexte distribué et comment le Saga Pattern, basé sur des transactions compensatoires et une cohérence éventuelle, permet de contourner ces limites. L'article détaille deux approches d'implémentation (chorégraphie et orchestration), présente des exemples concrets de code, et aborde des défis avancés comme la gestion des timeouts, l'idempotence, les verrous sémantiques, ainsi que des modèles théoriques comme les sagas imbriquées ou parallèles. Une attention particulière est portée sur la persistance de l'état des sagas, la récupération après échec, et la surveillance pour assurer la fiabilité du système. Une lecture essentielle pour les développeurs PHP travaillant sur des systèmes distribués complexes.
Pascal Martin, Principal Engineer et AWS Hero, explique dans cette conférence que les systèmes distribués — ensembles de services communiquant via le réseau — sont omniprésents dans le web moderne, offrant scalabilité, résilience et flexibilité, mais introduisant aussi des défis majeurs : gestion de la cohérence des données, communication complexe entre services, et résilience face aux pannes inévitables. Il aborde des concepts clés comme le partitionnement des données, les compromis du théorème CAP (cohérence, disponibilité, tolérance aux pannes), les patterns Outbox et Saga pour les transactions, et l’importance de limiter le Blast Radius (impact des pannes) via des time-outs, retries intelligents, et une dégradation gracieuse des services. Son message central : tout peut tomber en panne, il faut donc concevoir des architectures résilientes, s’appuyer sur des outils éprouvés, et accepter que les systèmes distribués fonctionnent toujours dans un état "partiellement dégradé". Une conférence essentielle pour comprendre pourquoi et comment construire des systèmes robustes, avec des exemples concrets tirés de sa pratique chez Bedrock et dans le cloud.