Recentemente per un progetto abbiamo avuto modo di lavorare con CloudFront un servizio di Amazon AWS che permette di velocizzare la distribuzione dei contenuti (immagini, video, file ecc) sul web.
Si tratta di un servizio molto interessante perché permette di migliorare l’esperienza utente nell’accesso alle informazioni
Prima di spiegarvi il problema che abbiamo riscontrato e come evitarlo facciamo una piccola premessa sul funzionamento di CloudFront.

cloudfront1-1

Come si può vedere nell’immagine precedente il gestore del contenuto:

  1. Carica l’informazione su S3 (servizio Amazon) oppure su uno spazio web di sua proprietà.
  2. Configura la lista di distribuzione dei contenuti dal pannello di controllo del servizio CloudFront.
  3. Modifica le impostazioni della web application in modo tale che la richiesta di contenuti venga eseguita sui nodi di distribuzione del servizio CloudFront di Amazon.

A questo punto il sistema è configurato e pronto all’uso.
Quando l’utente esegue la richiesta per ottenere un contenuto attraverso una web app, questa andrà ad interrogare i nodi Amazon (edge) per fornire all’utente l’informazione.
Se questa è presente verrà inviata direttamente all’utente riducendo eventuali tempi di latenza per raggiungere l’hosting.
Se l’informazione non è presente nell’edge questo provvederà a contattare il servizio di hosting o S3 per copiare il contenuto e poi inviarlo all’utente. Il contenuto poi rimarrà all’interno del nodo per soddisfare le successive richieste degli utenti in modo efficiente.

Compreso il funzionamento di CloudFront passiamo a descrivere il problema incontrato con i DNS di Google.
Quello che accadeva è che tutte le richieste provenienti all’interno della rete aziendale non ottenevano risposte in tempi rapidi come avveniva dall’esterno dopo la configurazione del sistema CloudFront.
Dopo varie ricerche e verifiche nella configurazione del sistema, dell’applicativo, ecc… siamo riusciti a scoprire che il problema si nascondeva sulle impostazioni aziendali che prevedevano l’utilizzo dei DNS di Google .
I DNS di google, come spiegato in questo post, permettono di migliore la navigazione ma purtroppo cercando di accedere a contenuti distribuiti tramite CloudFront il rusultato è un accesso lento alle informazioni desiderate dall’utente.

Tale problema è da imputare al fatto che l’impiego dei DNS di Google portano ad interpretare la richiesta come proveniente dal continente americano e quindi il servizio Amazon identificava e portava a distribuire il contentuto da un edge americano e non al più vicino alla reale richiesta dell’utente. In questo modo la latenza di trasferimento delle informazioni andava ad annullare il beneficio introdotto dal servizio Amazon.

Quando utilizzate un servizio di distribuzione dei contenuti come CloudFront (la cosa potrebbe accadere anche con altri) ricordatevi, quindi, di verificare eventuali “incompatibilità” tra DNS e servizi di distribuzione.