Amazon Cloudfront servizio per il Content Delivery Network
da Massimo Della Rovere · pubblicato il 11 maggio, 2014 · modificato il 13 luglio, 2016

Il servizio di Amazon Cloudfront è un sistema CDN (Content Deliver Network) che permette la distribuzioni di contenuti statici da diverse postazioni geografiche per mantenere una bassa latenza e quindi delle performance migliori. Oltre ad esonerare i server centrali dalla richieste statiche esegue anche funzioni di streaming audio e video senza la necessità di installare complessi software sul proprio server web.

Se un utente richiede un contenuto presente su Amazon Cloudfront, quest’ultimo sarà indirizzato verso la edge location più vicina e quindi con una latenza più bassa. Se il contenuto è presente nella edge location, verrà immediatamente distribuito, altrimenti verrà recuperato dall’origine configurata e verrà generata una richiesta di duplicazione per servire le prossime richieste eseguite da quel punto geografico.

Introduzione

Quando richiediamo una pagina HTML in realtà il processo non viene concluso immediatamente, infatti viene prima analizzato il codice della pagina caricata e poi vengono generate ulteriori richieste per caricare tutti gli elementi che compongono la pagina stessa, ad esempio immagini, fogli stili, javascript, fonts, etc, etc. Quindi se nella pagina richiesta ci sono ad esempio 30 risorse differenti queste genereranno 30 richieste HTTP singole allo stesso server. Normalmente, ma non sempre, la prima richiesta è un’elaborazione dinamica, ad esempio con PHP, ASP, Java, etc, mentre le altre sono risorse statiche, ed è proprio su queste che interviene una CDN.

Infatti il compito di una CDN e in questo caso quello di Amazon Cloudfront è quello di suddividere e bilanciare tutte le richieste HTTP generate, lasciando quelle dinamiche al nostro server web e quelle statiche al servizio stesso. In questa maniera il carico di lavoro maggiore e i problemi di scalabilità legati alle risorse statiche sarebbero tutti demandati al servizio di Cloudfront. Come potete facilmente intuire il nostro server web sarebbe liberato da un numero molto elevato di richieste HTTP.

Mappa edge locations

Amazon CloudfFront

Terminologia

Come tutti i servizi di Amazon AWS, prima di incominciare a configurare il servizio è bene prendere confidenza con i termini che vengono utilizzati. Vi elenco qui di seguti o i termini più importanti e poi passiamo a vedere una configurazione di prova.

Objects: Gli oggetti sono quei file memorizzati in una nostra origine che vogliamo che vengano distribuiti automaticamente tramite il servizio di Cloudfront. Gli oggetti includono immagini, file statici o qualsiasi cosa possa essere distribuita via HTTP o Adobe RTMP il protocollo utilizzato da Adobe Flash Media Server. Ultimamente è stato aggiunto anche il supporto a Microsoft Live Smooth Streaming. Quindi possiamo memorizzare dei video da poter utilizzare con il player proprietario della Microsoft.

Origin Server: Il server di origine è il luogo dove risiedono le versioni originali degli oggetti che vogliamo distribuire con Cloudfront attraverso le edge locations. Il server di origine può essere un Bucket S3 o un server HTTP, quest’ultimo può essere attivo sia su un’istanza EC2 o su un server diverso esterno agli AWS. Se gli oggetti vengono distribuiti via HTTP il server di origine può essere un Bucket S3 o un server HTTP, se vengono distribuiti in streaming via RTMP l’origine deve essere un Bucket S3.

Distributions: Una volta memorizzati gli oggetti nel server di origine bisogna specificare dove risiedono tramite una distribuzione che può essere di due tipi:

  • Web Distribution – Distribuzione tramite i protocolli HTTP e HTTPS. Si possono distribuire immagini, file CSS, javascript, fonts, documenti, etc …
  • Streaming Distribution – Distribuisce contenuti digitali attraverso Adobe Flash Media Server e il protocollo RTMP. Possiamo memorizzare dei file video.

Edge Locations: È un sito geografico dove Cloudfront deposita le copie degli oggetti memorizzati nelle origini che sono state specificate nella distribuzione. Quando un utente finale richiede uno di questi oggetti, il servizio di Cloudfront decide la miglior Edge Location che possa rispondere a questa richiesta. Se la edge location non possiede l’oggetto richiesto, Cloudfront la prende dal server di origine e lo distribuisce all’utente finale mantenendo poi una copia all’interno della cache nella Edge Location.

Expiration: Per ogni richiesta dello stesso oggetto Cloudfront distribuirà l’oggetto contenuto nella cache della Edge Location fino a che l’oggetto non sarà scaduto. Scaduto l’oggetto alla successiva richiesta Cloudfront inoltrerà una richiesta verso l’origine per determinare se è disponibile una versione più aggiornata dell’oggetto. Di default l’oggetto scade dopo 24h che risiede nella cache della Edge Location. Il tempo minimo di scadenza dell’oggetto è 0 sec e non esiste un limite massimo.

Eventual Consistency: Quando una distribuzione Cloudfront viene creata, modificata o cancellata si richiede tempo prima che i cambiamenti vengano propagati nel sistema completo. Le informazioni riguardanti la distribuzione alla fine diventano coerenti, ma una richiesta immediata di informazioni potrebbe non mostrare i cambiamenti. Per raggiungere la coerenza dei dati normalmente si richiedono alcuni minuti, ma un alto carico del sistema generale potrebbe aumentare il tempo richiesto.

Costi

Amazon CloudFront

Cloudfront o S3 ?

Sia Cloudfront che S3 distribuiscono contenuti, è sempre meglio utilizzare Cloudfront per farlo? Non necessariamente, dipende dalle nostre particolari esigenze e dalla geografia dei nostri utenti. Amazon S3 è stato disegnato per memorizzare le versioni originali dei file e per garantire una alta durevolezza del dato. Cloudfront è stato progettato per distribure i contenuti con una bassissima latenza, non è stato progettato per una memorizzazione del dato durevole. Se prevedete un alto numero di richieste di oggetti, Cloudfront può fornire delle performance più elevate rispetto al solo Amazon S3. Su un alto numero di richieste Cloudfront risulta più economico di S3.

Configurazione

Per vedere i passi necessari alla configurazione del servizio e alla creazione delle distribuzioni vi rimando all’articolo “Configurazione di Amazon Cloudfront” dove troverete tutte le spiegazioni del caso e una piccola dimostrazione finale.

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services.  Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

condividi