• Home
  • About
    • Ahmed DAMMAK photo

      Ahmed DAMMAK

      Full Stack Developer

    • Learn More
    • Twitter
    • LinkedIn
    • Github
  • All Posts
  • All Tags
  • Projects

Architecture microservices et cohérence des données : mais on fait comment pour de vrai ?

24 Apr 2022

Reading time ~2 minutes

Architecture microservices et cohérence des données : mais on fait comment pour de vrai ?

Présentation

Les architectures microservices ont le vent en poupe. Elles présentent de nombreux avantages pour mettre en place les bonnes pratiques DevOps et faire travailler en parallèle des équipes pluridisciplinaires autonomes. Evoluer du monolithe vers les microservices n’est pas un long fleuve tranquille… Les challenges ne manquent pas. L’un d’entre eux, et non des moindres, est la cohérence des données. Un des principes de base est que chaque service possède sa propre base de données. Quand une transaction métier invoque plusieurs services, on ne peut donc plus compter sur les bonnes vieilles transactions ACID des serveurs SQL. Quant aux transactions distribuées XA/2PC, oubliez les, elles sont jetées au pilori des mauvaises pratiques depuis bien longtemps ! Une fois ce constat établi, on fait quoi concrètement ? Comment peut-on répondre à cette problématique ? Dans cette présentation, nous verrons comment procéder avec deux approches : les SAGA et les LRA (Long Running Action). Un exemple concret basé sur MicroProfile et le framework Eeventuate Tram vous permettra de les appréhender et de choisir la bonne option pour votre projet Microservices

Talk de Jean Francois JAMES @jefrajames

Notes

Challenges :

  • identifier et borner les services
  • Garantir la cohérence de données (entre plissures base de données métier)

Transaction ACID locale

L’isolation max est serializable, mais, on est souvent sur un compromis

Transaction distribuée :

  • on fait appel à un transaction manager
  • Non supporté par du NOSQL / Kafka

LRA/SAGA : Rajouter une couche de coordination LRA/SAGA avec un ACID locale

4 solution :

  • Microprofile
  • Eventuate
  • AxonIQ
  • SEATA

Micro profile LRA Eventaute SAGA

Plateforme eventaute :CQRS / Event sourcing / JPA …

Jager UI : pour voir ce qui se passe entre les servies

On doit implémenter une méthode compensante pour faire l’annulation/rollback de la transaction

Il y a des petits pièges :

  • Pas de delais sur les appels des méthodes complete
  • Pour la méthode compensate, on peut avoir des soucis avec le système distribué

Demo LRA

Entente demo (mode asynchrone)

Techno dbsum ? Pour tail log

Zookeeper : permet e gérer la redondance des CDC

Outil Kowl ??

Nariana est le seul orchestrateur

Voir le code des démos



Devoxx2022Micro-servicearchi