Introduction
Nous avons migré plus de 10 microservices de l'utilisation d'appels d'API directs à une communication basée sur les événements via Kafka. La fiabilité s'est améliorée de manière significative, mais la migration a été plus difficile que prévu. Voici les véritables leçons tirées, y compris les erreurs commises.
Contexte Technique
Notre système a commencé comme un monolithe, puis a été divisé en microservices. Les services communiquaient entre eux à l'aide d'appels HTTP directs. Lorsque nous avions 3 services, cela fonctionnait bien. Cependant, avec 10 services, un problème de mémoire dans le service de notification a provoqué une cascade de défaillances, affectant plusieurs services.
La décision a été prise de migrer vers une architecture orientée événements. Le concept est simple : au lieu que le Service A appelle directement le Service B, le Service A publie un événement sur Kafka, que le Service B écoute et traite à son propre rythme.
Analyse et Implications
La migration n'a pas été sans problèmes. Nous avons rencontré des difficultés avec l'ordre des événements, les événements en double et la débogage. Nous avons résolu ces problèmes en ajoutant un numéro de version d'événement, en rendant les consommateurs idempotents et en ajoutant un ID de corrélation à chaque événement.
Les avantages de l'architecture orientée événements incluent une fiabilité améliorée, une flexibilité accrue et une meilleure scalabilité. Nous pouvons désormais déployer des services de manière indépendante sans affecter les autres services.
Perspective
En rétrospective, nous aurions dû implémenter l'idempotance dès le début et investir dans de meilleures outils de débogage. La migration aurait dû être effectuée de manière progressive, en commençant par les services les moins critiques.
L'architecture orientée événements est puissante, mais elle ajoute de la complexité. Si vous avez 3 services qui rarement échouent, les appels d'API directs sont probablement suffisants. Cependant, si vous avez 10 services ou plus et que la fiabilité est importante, les événements valent l'investissement.