- Utilizzare Cloud Run per servire file statici - 1
- Questo articolo del blog illustra come utilizzare Google Cloud Run per fornire file statici. L'attenzione è focalizzata sul reindirizzamento e sul miglioramento delle prestazioni.
Testo tradotto dall'IA.
Riepilogo del post generato dall'IA di durumis
- Abbiamo implementato un sistema CDN che utilizza l'integrazione tra Google Cloud Storage (GCS) e Cloud Run per gestire in modo efficiente immagini e risorse web e fornire file ottimizzati per l'ambiente del browser web.
- Le immagini caricate vengono convertite e archiviate in vari formati come webp e avif, mentre i file di testo vengono compressi con gzip, br e altri metodi per fornire contenuti ottimizzati agli utenti.
- Abbiamo distribuito Cloud Storage e Cloud Run in 8 regioni globali per fornire le risorse dalla regione più vicina alla posizione dell'utente, riducendo al minimo la latenza e migliorando l'esperienza utente
Articolo precedenteha spiegato la parte relativa alla fornitura di file statici utilizzando Cloud Run, utilizzato da durumis.
Tuttavia, a differenza di file come robots.txt o favicon.ico, i file immagine caricati sul blog o le risorse stesse della pagina web non possono essere gestiti semplicemente come file statici.
Pertanto, per questi file è necessario utilizzare Cloud Run collegato a Google Cloud Storage (d'ora in poi GCS).
Il concetto di base è semplice. I file immagine caricati in tempo reale o le nuove risorse create durante l'aggiornamento del sito vengono caricati su GCS e, quando viene ricevuta una richiesta esterna, Cloud Run verifica se il file è presente in GCS e, in caso affermativo, lo trasmette.
Tuttavia, il modo in cui funziona nella pratica è molto più complesso.
Quando si carica un'immagine su GCS, durumis la converte fondamentalmente in tre formati diversi.
Al momento del caricamento, se l'immagine è in formato jpeg o png, viene convertita automaticamente in webp e avif e salvata contemporaneamente.
Tutti i file immagine vengono richiesti tramite URL senza estensione e, quando viene effettuata una richiesta, Cloud Run controlla l'header del browser web che sta effettuando la richiesta per verificare se supporta avif o webp in quest'ordine. Se non è in grado di ricevere nessuno dei due file, viene inviato un file jpeg o png. Inoltre, oltre alla semplice conversione di formato, viene eseguita anche una pre-ridimensionamento in base alle dimensioni richieste dalla pagina web per l'archiviazione e la trasmissione.
Diagramma
Lo stesso vale per i file di testo.
Molte risorse necessarie per un sito web sono costituite da immagini, ma anche da file di testo come js e css.
Anche i file js e css, analogamente alle immagini, vengono compressi in gzip e br al momento del caricamento e memorizzati. Al momento della richiesta, viene inviato al browser web il file supportato.
Il ruolo della CDN non si limita al semplice caching dei contenuti. Nel caso di Google Cloud Platform (GCP), è possibile collegare direttamente la funzionalità Cloud CDN a Google Cloud Load Balancer (GCLB), offrendo così funzionalità ancora più potenti.
Cloud CDN riceve i dati dal Backend Service, li memorizza e li trasmette al client. Durante questo processo, Cloud CDN può inviare il file ottimizzato in base all'header di richiesta del client. Ciò consente di fornire contenuti di diversi formati per lo stesso URL.
Ad esempio, per lo stesso URL '/image/tempImage'
- Nel caso dei file immagine
- Viene inviato un tipo di immagine diverso in base all'header 'Accept' del browser.
- Il browser Chrome generalmente indica la preferenza nell'ordine 'image/avif,image/webp,image/apng'.
- La CDN fornisce il tipo di immagine disponibile in base a questo ordine e, se non è supportato, lo sostituisce con jpeg o png.
- Allo stesso modo, per i file di testo
- Viene presa in considerazione anche la preferenza per il metodo di compressione.
- Il browser Chrome supporta metodi di compressione come 'gzip, deflate, br, zstd'.
- Ad esempio, il servizio durumis attualmente supporta gzip e br, quindi il file compresso con br viene inviato per primo.
Grazie a queste funzionalità avanzate della CDN, è possibile fornire contenuti ottimizzati per l'ambiente dell'utente, migliorando notevolmente le prestazioni del sito web e l'esperienza utente.
Anche se si utilizza Cloud CDN, è comunque necessario richiedere i file da Cloud Run dalla CDN, quindi durumis utilizza un metodo in cui Cloud Storage e Cloud Run vengono distribuiti in anticipo in 8 regioni in tutto il mondo e le risorse vengono distribuite in anticipo per la trasmissione. Ciò comporta un leggero aumento dei costi e del carico di lavoro, ma gli utenti possono godere di una latenza notevolmente migliorata.
Anche utilizzando Cloud CDN, è fondamentalmente necessario ottenere il file dal server di origine (in questo caso Cloud Run). Durumis ottimizza questa struttura per fornire un servizio migliore agli utenti globali.
Strategia di ottimizzazione globale di durumis:
- Distribuzione anticipata di Cloud Storage e Cloud Run in 8 regioni in tutto il mondo
- Distribuzione preventiva delle risorse necessarie in ogni regione
- Trasmissione delle risorse dalla regione più vicina al momento della richiesta dell'utente
Questo metodo comporta un leggero aumento dei costi e un lavoro aggiuntivo, ma offre i seguenti vantaggi agli utenti:
- Latenza notevolmente migliorata
- Tempi di caricamento dei contenuti più rapidi
- Miglioramento generale dell'esperienza utente
Questa struttura può essere visualizzata come segue:
Grazie a questa struttura, durumis è in grado di fornire un servizio rapido e costante agli utenti globali. Poiché i contenuti vengono forniti dalla regione più vicina alla posizione dell'utente, è possibile utilizzare il servizio con una bassa latenza in qualsiasi parte del mondo.
Questo approccio richiede uno sforzo maggiore nella configurazione iniziale e nella manutenzione, ma offre il vantaggio di migliorare notevolmente l'esperienza dell'utente finale. In particolare, per le aziende che forniscono servizi globali, questa struttura può essere di grande aiuto per fornire un servizio competitivo.
Oggi, nella nostra discussione sulla CDN, abbiamo esaminato solo i concetti di base.
In realtà, avremmo potuto affrontare anche gli aspetti di configurazione dettagliata, ma poiché variano a seconda del fornitore cloud (GCP, Azure, AWS) e sono meno interessanti, abbiamo optato per una spiegazione concettuale.
In futuro, se ne avremo l'opportunità, approfondiremo anche gli aspetti più dettagliati.
Nella prossima discussione, affronteremo quindi la questione di come sincronizzare Cloud Storage in più regioni (nel nostro caso ben 8!).
Grazie.