Sto lavorando su un'applicazione con circa 50 microservizi che hanno database multi-tenant separati. Il problema è sorto nel mettere offline i dati di un tenant, il che significa che qualsiasi richiesta relativa ai dati di un determinato titolare dovrebbe essere negata indipendentemente dal servizio per cui viene effettuata la richiesta.
Normalmente in un singolo database di tenant, potremmo aver portato offline il server del database, ma ovviamente non possiamo farlo nello scenario multi-tenanted che è ulteriormente complicato dall'avere database separati per ogni servizio.
Quindi la domanda è sorto se questo è un problema che ogni microservizio dovrebbe gestire o se questo dovrebbe essere risolto in un livello superiore, diciamo un tipo di gateway che passa per ogni richiesta e può essere filtrato di conseguenza.
Ogni soluzione crea un singolo punto di errore. Se ciascun microservizio deve conoscere lo stato di un titolare, sarà necessario interrogare lo stesso servizio per queste informazioni e se tale servizio non è disponibile, la richiesta non riuscirà. Allo stesso modo se il gateway va giù, tutte le richieste falliscono. Quindi in termini di disponibilità entrambe le soluzioni sembrano avere lo stesso risultato.
Esiste un approccio più accettato nella progettazione dei microservizi per spingere il problema ai singoli servizi o tentare di creare un'unica soluzione in modo che ogni singolo servizio non debba preoccuparsi di determinati problemi?