Questa domanda non è specifica per le immagini, ma questo è il problema attuale che ho così im usando questo come esempio.
Quindi, in pratica, ho una sorta di pipeline che alcuni dati (in questo caso un'immagine) devono passare prima che possano essere utilizzati nella mia app (in questo caso, un'app Web).
Se dividessimo la pipeline in funzioni, sarebbe come questa: 1. L'immagine viene caricata su una memoria (cloud storage). 2. L'immagine viene convertita in più formati e dimensioni. 3. Tutte le diverse dimensioni e formati sono registrati nel database in relazione al file originale.
La mia domanda è, quale sarebbe il modo giusto di gestire questo processo e tenere traccia degli errori, dei tentativi, dell'aggiornamento del front-end, ecc.
Penso che sto cercando di risolvere questo compito con la mentalità sbagliata, e quindi sto ottenendo una cattiva soluzione. Ma forse le funzioni non sono la strada giusta. Forse ho bisogno di disattivare le funzioni cloud e utilizzare qualche altra soluzione serverless, come ad esempio "AppEngine di Google".
Attualmente, ho una funzione con un endpoint HTTP che: 1. Ricevi il file e trasferiscilo nella memoria Cloud (lo faccio perché cerco di evitare un front end pesante). 2. Salvare il nome del file nel DB con il nome temporaneo e lo stato (lo stato è attualmente in attesa di ottimizzazione / ritaglio). 3. Il caricamento in Cloud Storage attiva un'altra funzione che avvia l'ottimizzazione e il ritaglio dell'immagine. 4. Aggiornare il DB con lo stato e tutti i nomi dei file secondari. 5. cancella il file originale.
Il problema è che tra 2 e 3, c'è un collegamento interrotto. Non posso davvero sapere cosa sta succedendo dal lato client senza più richieste al DB per vedere lo stato dell'immagine.
Quindi è questo il modo giusto? c'è un modo migliore? Ho trovato alcuni problemi simili in tutto lo sviluppo della mia app, come ad esempio con la convalida dei dati, e questo mi ha fatto pensare che forse sto sbagliando.