Sto leggendo libri e guardo tutorial su architettura e soluzioni di microservizi. Sono fantastici e aiutano molto. Hanno fatto la dichiarazione che condividere modelli di dati tra servizi (contesto) è una cosa malvagia e renderà la mia vita un inferno. Va bene e posso accettarlo. Ma la mia domanda che conta come modelli di condivisione? La mia domanda potrebbe essere strana, ma non riesco a concludere la frase e sfortunatamente non ho ancora trovato un chiaro esempio per questo.
Consentitemi di portare il dominio e il caso su cui sto lavorando. Ho un sistema che ha un modulo spese (dove gestisco i miei guadagni e le mie spese per avere una panoramica sulla mia situazione finanziaria) e c'è un modello di dati master in cui sono gestiti i dati di riferimento.
Una struttura dei dati di spesa semplificata si presenta così:
- tipo di spesa - campo obbligatorio
- importo - campo obbligatorio
- valuta - campo obbligatorio
- partner (un nome del negozio o fornitore) - campo obbligatorio
La valuta e il partner sono considerati dati di riferimento perché verranno utilizzati in altri moduli del sistema, pertanto la loro posizione è nel modulo dei dati master. A seguito di questo pollice di spese di regola nel modulo di spesa verrà memorizzato come di seguito:
+---------+-------------+---------+----------+
|ExpenseId|ExpenseAmount|PartnerId|CurrencyId|
+---------+-------------+---------+----------+
|1 |200 |124 | 2 |
+---------+-------------+---------+----------+
Dove PartnerId e CurrencyId puntano al di fuori del contesto del servizio. Questa soluzione ha il suo prezzo, ma avere gli stessi dati nel contesto delle spese e nel contesto dei dati master non è desiderabile per me.
Regole riguardanti PartnerId
e CurrencyId
:
- entrambi sono campi obbligatori
Non ho esperienza in questo argomento, quindi queste domande sono i miei primi passi. E il mio approccio potrebbe essere troppo semplice, ma serve al suo scopo, credo. Cosa ne pensi di questa soluzione? Come risolveresti questo?
Sono felice con questa soluzione e il prezzo che devo pagare. Successivamente, potrei provare l'event sourcing o altre possibili soluzioni.
Successivamente, introdurrò funzionalità di reporting in cui i dati verranno raccolti e archiviati in una struttura denormalizzata. È una storia diversa.