Le librerie condivise generano l'accoppiamento. Questo è tutto. Inoltre modelli canonici .
Dal punto di vista dell'architettura Microservices ( dogmatic ), qualsiasi fattore che possa portare all'accoppiamento (diretto o indiretto) tra i servizi è un fattore indesiderabile, perché è contrario all'indipendenza assoluta di Microservice.
Avere due POJO identici / entità in diversi microservizi non è una violazione di DRY.
Di solito, i microservizi sono sviluppati, gestiti e governati da diversi team. I team si sono formati attorno a capacità e competenze aziendali (non altrimenti).
Di conseguenza, i team non potevano essere assegnati nello stesso dipartimento. Forse, nemmeno nello stesso edificio o città.
Forse i microservizi non condividono nemmeno lo stesso stack tecnologico.
Il problema qui è un problema di decomposizione. Potrebbe interessarti questa lettura .
Sia che ci avviciniamo alla scomposizione da una strategia Contesti o Valore stream , la definizione del modello varia (o si differenzia) in base ai servizi, perché ogni servizio è una business unit di per sé. Ha il suo dominio, le sue regole e la sua logica.
Quindi Cliente , Ordine , Indirizzo , ecc. hanno definizioni diverse, in base all'ambito (servizio) da cui sono guardati.
Ad esempio, dal punto di vista della sicurezza, un cliente non è affatto un cliente. Probabilmente è un account (credenziali, ruoli, profili, ecc.)
Dal punto di vista del reparto spedizioni, un cliente è un nome completo, un indirizzo e, forse, un telefono.
Dal punto di vista del reparto vendite, un cliente è un documento identificativo, una carta di credito e un nome completo.
Va bene avere l'attributo nome e indirizzo in diversi modelli di dati di Microservices. Anche se non sono sincronizzati !!!
Nel mondo reale, quando cambiamo l'indirizzo di fatturazione corrente, le fatture precedenti non cambiano !!! O non dovrebbero! Lo stesso succede con i prezzi. O con i nomi.
Se diversi microservizi devono comunicare cambiamenti sullo stato dei dati, non comunicano direttamente le modifiche, propagano eventi che potrebbero (o non) essere seguiti da altri microservizi.
In Microservices, SRP e DRY operano in livelli più alti di astrazione (strategie aziendali e aziendali) rispetto a quelli con cui abbiamo più familiarità (classi e componenti).
Tornando alla domanda principale, la mia risposta è cercare di evitare le librerie condivise. Le principali fonti di accoppiamento utilizzano comunicazioni sincrone tra processi e librerie condivise. Quindi, vi incoraggio ad approfondire: la decomposizione dei microservizi e le strategie di comunicazione tra processi di microservizi.