4 votes

Partager des données entre microservices

Je travaille sur une architecture de microservices et je veux résoudre un petit problème de partage de données (je ne sais pas si c'est le bon mot).

Exemple :

J'ai un service utilisateur et une base de données qui stocke l'email, le nom d'utilisateur, le mot de passe...

J'ai un autre service et sa base de données qui travaillent avec les données de l'utilisateur pour générer des documents avec les informations de l'utilisateur.

Quel est le meilleur moyen pour le second service d'accéder aux données de l'utilisateur ? Répliquer les données de l'utilisateur (seulement si elles sont nécessaires pour son travail) pour elle dans la base de données ?

6voto

S.Stavreva Points 236

Je ne connais pas la conception de l'ensemble du système, mais je laisserais le microservice utilisateur envoyer un événement lorsqu'un utilisateur est créé, mis à jour ou supprimé. Tous les autres microservices qui sont intéressés par cet événement peuvent extraire les données utilisateur dont ils ont besoin.

L'utilisation de microservices permet d'éviter la redondance des données, mais chaque microservice a une vision différente des données.

Votre microservice utilisateur peut considérer l'utilisateur plutôt comme une identité avec des données utilisateur complètes (par exemple, identifiant, mot de passe, prénom, nom de famille, courriel, adresse, organisation, etc.) D'autre part, votre microservice de génération de documents peut considérer l'utilisateur comme le récepteur du document et n'a pas besoin de toutes les données de l'utilisateur.

5voto

Damo Points 515

Il y a la réponse des consultants de la mise en garde "cela dépend". Tout le monde a une description différente de ce que sont les microservices, mais pour moi, il s'agit de petits services déployables indépendamment qui font bien une chose (je souscris généralement à l'expression définition des microsevices par les aviateurs ).

En fait, je n'ai pas de problème à ce que les microservices partagent le stockage (qu'il s'agisse de bases de données, de stockage blob, etc.) tant que les microservices font partie du même périmètre de "service". Ce que j'entends par limite de service est un regroupement logique de petits services qui collaborent tous pour atteindre un objectif ou une capacité commerciale. Pour moi, c'est ce regroupement logique qui forme le "service", vu de l'extérieur de l'équipe. Un service, le service utilisateur, est souvent composé de nombreux petits microservices.

Par exemple, vous pouvez avoir un service "Utilisateur" qui se compose d'un certain nombre de microservices. Un pour capturer les intérêts d'un site Web et les stocker dans une base de données, un autre utilisé par le site Web pour traiter les changements d'adresse, un autre pour exécuter un travail dans le temps et envoyer des événements à d'autres services du système.

Mais vous ne voudriez pas que le service de génération de documents (service de rapport ?) lise et écrive à partir de la base de données utilisateur. Dans ce cas (comme l'a dit Stavreva), la communication événementielle entre les services serait la meilleure solution.

Vous seul, avec votre connaissance du domaine d'activité, pouvez décider si deux microservices appartiennent à ce même service. Une astuce consiste à examiner la capacité opérationnelle à laquelle le microservice contribue.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X