Dans ce Matters Meetup, Ben Stopford, CTO chez Confluent, explique comment tirer parti des services de streaming Kafka pour concevoir un écosystème de microservices événementiels durables car évolutif.
Ben Stopford commence par présenter ce que sont les services de streaming et comment travailler avec eux. Il introduit le streaming comme la manipulation de données à la volée. Il continue sur la conception d'écosystèmes de microservices événementiels dans lesquels un problème est résolu en étant découpé en plusieurs services.
Un exemple de commerce en ligne, illustré par des schémas clairs, permet de saisir l'évolution d'un système monolithique vers une architecture de microservices événementiels. Au passage, Ben Stopford détaille les deux rôles des évènements : déclencher l'action et répliquer la donnée dans les services.
Les composants principaux de Kafka sont expliqués en détails :
- Le Log, dans lequel sont inscrits les événements
- Les connecteurs (Kafka Connect et Change Data Capture), qui permettent de travailler avec les bases de données legacy d'un système
- Kafka Streams, qui permet de travailler sur la donnée à la volée
Dans une seconde partie, Ben Stopford liste les 10 étapes pour faire évoluer un système vers un ensemble de microservices événementiels :
1. Partir du système existant pour le faire évoluer.
2. Émettre des évènements plutôt qu'appeler un service.
3. Utiliser Kafka Connect et Change Data Capture (CDC) pour s'éloigner du legacy, en transformant les données existantes d'une base de données en flux d'évènements utilisable dans Kafka.
4. Utiliser les schémas pour représenter la donnée.
5. Appliquer le principe d'auteur unique, en attribuant la responsabilité de la propagation des événements d'un type donné à un seul service.
6. Stocker les jeux de données dans le Log de Kafka.
7. Pousser la donnée dans les services.
8. Utiliser le Log plutôt qu'une base de données.
9. Utiliser les transactions pour lier les interactions.
10. Utiliser un système de streaming pour faire le lien entre le synchrone et l'asynchrone.