Quindi sto attualmente cercando di progettare un'architettura di microservizi per un progetto parallelo. Ho scelto l'architettura dei microservizi principalmente perché è solo un mio progetto personale, quindi voglio imparare qualcosa di nuovo dopo aver costruito i monoliti per così tanto tempo.
La mia principale confusione in questo momento riguarda la separazione delle preoccupazioni nella registrazione, l'autenticazione e l'autorizzazione.
La mia idea iniziale era qualcosa di simile al seguente:
- utente fornisce le credenziali al servizio di autenticazione che verifica che la password corrisponda.
- auth service cerca le autorizzazioni dell'utente
- il servizio auth restituisce il token all'utente
- l'utente utilizza il token auth per chiamare i servizi di risorse (profilo, ricerca, prodotti, ecc.) attraverso il gateway API
All'inizio sembra semplice, ma mi chiedo se la mia idea iniziale non sia abbastanza dettagliata. Il "servizio di autenticazione" potrebbe quasi essere definito un "servizio di account" perché gestisce 3 diversi problemi (autenticazione, autorizzazione, generazione di token). Ho visto un diagramma e articolo qui che suddivide questo in 3 microservizi separati
La mia domanda qui è, quale effettivo vantaggio è in grado di scomporre fino a questo punto in cambio di tutte le comunicazioni extra che devono accadere tra i servizi?