Architettura dei microservizi: singolo database di proprietà di un singolo servizio? [duplicare]

10

Stiamo ricostruendo un sistema in un'architettura di microservizi. So che la pratica standard per SOA è di avere ogni singolo servizio responsabile per il proprio database.

Tuttavia, ha senso avere un servizio di "database" responsabile della gestione di un database monolitico (vale a dire detenere utenti, ordini, inventario, ecc. in un db)? È qualcosa che è considerato ragionevole?

O l'aspettativa che gli utenti, gli ordini, l'inventario abbiano tutti i propri database separati e servizi? In questo caso, come posso gestirlo quando voglio fare una semplice query relazionale come ordinare un elenco di spazio pubblicitario in base a quanti ordini abbiamo avuto per ciascun articolo?

Modifica: non duplicato. per chiarire (dai commenti): Capisco che sia sbagliato condividere i database tra più microservizi. la mia domanda è se avere un grande database centrale gestito da un singolo microservizio è una cattiva idea, o se è fondamentale che i dati del sistema interno siano disaccoppiati da soli

    
posta jtmarmon 27.03.2015 - 06:56
fonte

1 risposta

6

However, does it make sense to have one 'database' service responsible for handling a monolithic database (i.e. holding users, orders, inventory, etc in one db)? Is this something that's considered reasonable?

Penso che sia un errore rendere un servizio (o qualsiasi altra cosa) in SOA o qualsiasi altra architettura responsabile di un database o di una parte di database o di una tabella o di qualsiasi parte di database che si possa immaginare.

Il servizio riguarda la realizzazione di una richiesta dell'utente (o potrebbe essere di un altro servizio). L'interazione con il database è solo secondaria. Microservice server un gruppo di richieste, non un gruppo di tabelle.

A mio avviso, i servizi sono generalmente progettati per utilizzare un database dedicato solo per garantire il massimo disaccoppiamento. In questo modo i dati del servizio sono fisicamente separati dai dati di un altro servizio. Inoltre, questa decisione consente di spostare facilmente il servizio su una nuova piattaforma (basta spostare il server dell'app di servizio + il database in un'altra macchina).

Puoi utilizzare un singolo database se troverai altri mezzi per mantenere i tuoi servizi disaccoppiati e se non sarai troppo preoccupato di spostare una parte specifica del tuo database, per esempio, su un'altra macchina (capendo quale parte del database appartiene a quale servizio a volte non è facile).

    
risposta data 27.03.2015 - 15:24
fonte

Leggi altre domande sui tag