Ho intenzione di costruire un back-end basato sui microservizi. La seguente figura presenta la mia idea attuale:
Duecaratteristicheimportantisono:
- caricamentoditestoe/ofilevideodigrandidimensioni
- streamvideo:mostral'utentenell'appWebenelleapplicazionimobilinative
Lostacktecnologicononèfinalmenteimpostato,mainizialmentepensoa:
- webapp-ReactJs/Angular
- appdibackend-RubyonRails
Hoiseguentidubbisulmioattualeconcetto:
- IlgatewayAPIdovrebbefunzionarecomerouter,chereindirizzalerichiestedegliutentiaspecificimicroservizi?Oppure...dovrebbeessereun'appdedicata(adesempioRubyonRailsApp)conAPI?
- Comerenderel'autorizzazione?Dovreiusareilmicroserviceseparatoperquesto?Diciamochel'utentecaricailfileelasuarichiestadovrebbeandarealterzomicroservizio:"Big Data Upload". Dove e quando dovrei autorizzare il suo accesso? In quel microservice o prima nel gateway API? O forse l'autenticazione dovrebbe essere fatta anche in "Autenticazione microservice"?
- Caricamento di file di grandi dimensioni - diciamo che l'utente desidera trasferire un file di grandi dimensioni (video o file di testo compresso con dati grezzi) dall'app mobile al back-end tramite HTTP. La sua richiesta arriva a API Gateway e quindi viene reindirizzato al microservizio "Big Data Upload". App salva il file nell'archivio oggetti. È la strada giusta per caricare i file? Oppure potrei fare qualche scorciatoia per rendere più breve la rotta del file?
- Flusso video: quando l'utente carica un file video, desidero inserirlo in Risorse (Object Storage, ad esempio Amazon S3). È sufficiente presentare questo video agli utenti nell'app Web o nell'app mobile? (Accanto al servizio di transcodifica e CDN)
- Bilanciamento del carico - È ragionevole utilizzare il bilanciamento del carico per controllare il flusso in istanze di microservizi (nell'immagine tra gateway API e microservizi verdi)? O non è un buon approccio perché possiamo perdere alcune informazioni su richiesta / destinatario / utente o anche API Gateway sarebbe un "collo di bottiglia" più significativo?
- Questo concetto di architettura ha il buon potenziale per una facile scalabilità, secondo lei? Ovviamente, omettendo una configurazione hardware e software.
Grazie in anticipo per il tuo aiuto e suggerimenti!