I database nei microservizi
Un altro argomento su cui bisogna ragionare per la creazione di una MSA è la gestione e l'architettura dei database.
Possibili pattern di architettura
Database centralizzato
Una delle possibilità, come nelle Monolithic Application, è quella di avere un database centrale, che viene condiviso da tutti i microservizi. Questa soluzione è molto semplice da implementare, ma presenta alcuni problemi:
- Il database centrale diventa un punto di bottleneck per tutta l'applicazione
- Il database centrale diventa un punto di single point of failure per tutta l'applicazione
Questa soluzione è consigilabile solo se si ha un numero limitato di microservizi e se si ha un numero limitato di utenti.
Database per microservizio
Un'altra possibilità è quella di avere un database per ogni microservizio.
Questa soluzione presenta i seguenti problemi:
- La difficoltà di implementazione è maggiore
- La difficoltà di gestione è maggiore
- La difficoltà di manutenzione è maggiore
Questa soluzione è consigliabile solo se si ha un numero elevato di microservizi e se si ha un numero elevato di utenti.
Quest'ultima soluzione è anche quella consigliata a livello formale per quanto riguarda la gestione dei database all'interno dell'MSA. Questo però dipende anche dalla valutazione costo/benefici del progetto: - un progetto piccolo o da completare rapidamente predilige una soluzione più rapida e semplice - un progetto da far scalare e con prospettive di crescita/utilizzo ampie predilige una soluzione più complessa ma più scalabile e solida