Panoramica

I carichi di lavoro come le API dinamiche o le pagine web molto personalizzate sono poco o per nulla memorizzabili nella cache. Tuttavia, traggono vantaggio dalla sicurezza e dall'accelerazione fornite dai servizi edge di AWS, come CloudFront e Global Accelerator. I servizi edge di AWS operano su centinaia di Points of Presence (PoP) distribuiti in tutto il mondo tra i 20 e 30 millisecondi in media dagli utenti. Il traffico verso l'origine viene riportato sulla rete globale AWS anziché sulla rete Internet pubblica. L'infrastruttura globale di AWS è un'infrastruttura privata appositamente costruita, ad alta disponibilità e a bassa latenza, costruita su una rete in fibra metropolitana globale, completamente ridondante, collegata tramite cavi terrestri e transoceanici in tutto il mondo.

Accelerazione dinamica con CloudFront

Oltre a terminare la connessione TCP/TLS in prossimità degli utenti, CloudFront accelera i contenuti dinamici mediante:

  • Pubblicazione contenuti tramite protocolli Internet moderni come QUIC o TLS1.3, anche se l'origine non li supporta.
  • Connessioni persistenti all'origine. A volte, la richiesta deve essere inoltrata all'origine, ad esempio quando il contenuto non è presente nella cache locale o quando è puramente dinamico, come le API. Le richieste inoltrate tramite connessioni persistenti dai PoP non devono stabilire una nuova connessione TCP/TLS all'origine, il che elimina la latenza di diversi percorsi di andata e ritorno, mantenendo finestre TCP dimensionate. È possibile migliorare l'ulteriore riutilizzo della connessione aumentando il timeout TCP Keepalive sull'origine e nella configurazione di CloudFront e, se opportuno, abilitando Origin Shield. Inoltre, la minore velocità di creazione della connessione all'origine ne riduce i costi in termini di dimensionamento. Più specificamente per le origini basate su EC2 e ALB, ciò comporta costi di trasferimento dati (DTO) inferiori, poiché il sovraccarico DTO relativo all'invio di certificati TLS dall'origine verrà ridotto. Si consideri che CloudFront non misura il sovraccarico TLS nei suoi calcoli DTO. È possibile migliorare il riutilizzo della connessione su CloudFront abilitando Origin Shield.
    Nei seguenti video testimonianza, Tinder e Slack spiegano come CloudFront li aiuta a ridurre significativamente i tempi di risposta delle API.

Nei seguenti video testimonianza, Tinder e Slack spiegano come CloudFront li aiuta a ridurre significativamente i tempi di risposta delle API.

Slack parla dell'accelerazione sicura delle API con Amazon CloudFront
Ottimizzazione delle prestazioni in CloudFront: ogni millisecondo conta!

Per informazioni più approfondite su come CloudFront ottimizza il traffico dinamico HTTP, leggi questo blog. Inoltre, questo blog spiega come utilizzare uno script python che consente di comprendere meglio come CloudFront migliora le prestazioni delle richieste dinamiche HTTP.

Per utilizzare CloudFront come reverse proxy, bisogna configurare la Policy gestita di caching Cashing disabilitato nella distribuzione, nel comportamento della cache pertinente. Ciò indicherà a CloudFront di inoltrare le richieste ricevute dai PoP direttamente all'origine. Per impostazione predefinita, se non si configura esplicitamente una Policy di richiesta dell'origine, CloudFront elimina i cookie, i parametri query e la maggior parte delle intestazioni prima di inoltrare la richiesta all'origine. Eccezionalmente, CloudFront invia l'intestazione Host con il valore del nome di dominio dell'origine, aggiunge l'intestazione X-Forwarded-For incrementata dall'IP del richiedente e sostituisce l'intestazione Utente-Agente con il valore di Amazon CloudFront. Si noti che quando CloudFront è configurato come reverse proxy, non comprime le risposte utilizzando Gzip o Brotli.

Se si ha bisogno che determinati attributi della richiesta vengano inoltrati a CloudFront, bisogna configurarli esplicitamente nella Policy di richiesta dell'origine. Ad esempio, è possibile inoltrare tutti gli attributi della richiesta ricevuti dall'utente, configurando la Policy di richiesta gestita dell'origine di AllViewer. Si noti che quando si fa ciò, CloudFront invia l'intestazione Host così come viene ricevuta dall'utente, a differenza dell'invio del valore del nome di dominio dell'origine. Quando l'origine dell'API prevede il nome di dominio di origine nell'intestazione Host, ad esempio come con il Gateway API, configura invece la Policy di richiesta gestita dell'origine AllViewerExceptHostHeader.

Per arricchire la richiesta inoltrata con metadati di CloudFront, come il Paese dell'utente o le informazioni del dispositivo, è necessario configurare le intestazioni CloudFront pertinenti nella Policy di richiesta dell'origine. Per le intestazioni dinamiche personalizzate, come True-Client-IP, è necessario utilizzare una funzione CloudFront sull'evento di richiesta del visualizzatore per aggiungerle a monte.

Per testare il miglioramento delle prestazioni dei contenuti dinamici con CloudFront, consulta questo workshop.

Accelerazione dinamica con Global Accelerator

Global Accelerator indirizza il traffico degli utenti al PoP più vicini utilizzando BGP Anycast. Da lì, Global Accelerator trasporta il traffico degli utenti verso l'origine tramite il dorsale di rete di Amazon. Global Accelerator migliora ulteriormente le prestazioni utilizzando le seguenti tecniche:

  • Supporto per frame Jumbo. Abilitando i frame jumbo tra posizione edge AWS e l'endpoint dell'applicazione nella Regione AWS, Global Accelerator è in grado di inviare e ricevere fino a 6 volte più dati (payload) in ogni pacchetto. Il supporto per frame jumbo riduce il tempo totale necessario per trasmettere i dati tra gli utenti e l'applicazione.
  • Terminazione TCP all'edge. Global Accelerator riduce il tempo di configurazione TCP iniziale stabilendo una connessione TCP tra il client e il PoP di AWS più vicino al client. Quasi contemporaneamente, viene creata una seconda connessione TCP tra il PoP e l'endpoint dell'applicazione nella Regione AWS.
  • Ampia finestra laterale di ricezione, buffer TCP e finestra di congestione. Per il traffico terminato con TCP, Global Accelerator è in grado di ricevere e bufferizzare grandi quantità di dati dall'applicazione in un periodo di tempo più breve ottimizzando le impostazioni della finestra laterale di ricezione e del buffer TCP sull'infrastruttura edge AWS. Ciò fornisce download più rapidi ai clienti, che ora recuperano i dati in un tempo più breve direttamente dall'edge AWS. Trasmettendo dati sulla rete globale AWS, Global Accelerator può aumentare la finestra di congestione TCP per inviare quantità di dati maggiori di quelle normalmente possibili tramite Internet pubblico.
Migliora le prestazioni e la disponibilità con AWS Global Accelerator

Risorse

Questa pagina è stata utile?