Bonjour,
Ma problématique est pour le moment toute théorique puisque je fais de la veille et m'intéresse actuellement aux microservices, mais je n'ai pas trouvé de réponse qui me convienne.
Les microservices sont composés de blocs indépendant qui gèrent un petit ensemble d'actions/données indépendant les uns des autres. Par exemple, nous aurions un service pour les clients, un service pour les produits, et un service pour les commandes, et donc des bases indépendantes pour ces blocs.
Or, je pense que ceci ne respecte pas plusieurs règles de Codd :
- La règle d'' "indépendence d'intégrité" (règle 10/12 de Codd) spécifie que les contraintes d'intégrité doivent être stockée dans le catalogue, indépendamment des applications qui utilisent les données. Or, une commande concernant un client et des produits ne peut pas avoir ses contraintes appliquées au niveau de la base de donnée puisque les données n'existent pas dans la base.
- La règle d' "Indépendance de distribution" spécifie que peu importe comment les données sont distribuées sur les serveurs, cette organisation est invisible pour les applications qui les utilisent, de manière à pourvoir réorganiser la distribution de manière transparente. Or, avec les microservices, les règles de distribution de données me semblent figées.
- La règle de "non subversion" spécifie qu'on ne peut pas contourner le système. Or, si les règles de validation sont au niveau des micro-services, il est aisé de contourner les règles. Et si on peut contourner les règles, comment s'assurer que sa base de donnée est sécurisée... qu'on ne puisse pas y valider des commandes pour un client suspendu ou pour un produit désactivé, qu'on ne puisse pas accéder aux produits commandés par un client en outrepassant les règles d'accès...
De plus, il me semble difficile de modéliser les cas limites : Le produit préféré d'un utilisateur par catégorie de produit fait fortement référence aux produits et aux utilisateurs.
Enfin, les bases données sont optimisées pour gérer les jointures, en particulier pour les questions complexes. Ne perd-on pas toute cette optimisation en découpant le système ?
Pour moi, les microservices posent donc problème pour l'intégrité des données et pour leur sécurité... Quelles solutions existent pour palier à ces problèmes ?
Partager