PRD-008 - Amazon CloudFront CDN

16
Community - Cloud AWS su Google+ Cloud AWS Amazon Web Services cloud-aws.com Servizio Amazon CloudFront Hangout 08 del 03.03.2014 Davide Riboldi Massimo Della Rovere Oggi vedremo il servizio di Amazon CloudFront per la distribuzione di contenuti statici tramite CDN. CLOUD AWS #cloudaws

Transcript of PRD-008 - Amazon CloudFront CDN

Community - Cloud AWS su Google+

Cloud AWS

Amazon Web Services

cloud-aws.com

Servizio Amazon CloudFront

Hangout 08 del 03.03.2014

● Davide Riboldi● Massimo Della Rovere

Oggi vedremo il servizio di Amazon CloudFront per la distribuzione di contenuti statici tramite CDN.

CLOUD AWS

#cloudaws

Amazon CloudFront - Descrizione generale

Cloud AWS

● CloudFront è un servizio di Amazon collegato al servizio S3 che velocizza la distribuzione dei contenuti statici nei confronti dell’utente finale.

● Quando un utente finale richiede un contenuto presente su CloudFront, l’utente viene indirizzato verso la edge location con la latenza più bassa.

● Se il contenuto è presente nella edge location, verrà immediatamente distribuito, altrimenti verrà recuperato dall’origine configurata.

Amazon CloudFront - Una richiesta HTTP

Cloud AWS

● Quando eseguiamo la richiesta di una pagina HTML in realtà generiamo diverse richieste per caricare diversi elementi che compongono la pagina finale, ad esempio immagini, fogli stili, javascript, ect

● Normalmente la prima richiesta è un’elaborazione dinamica, ad esempio con PHP, ASP, Java ect e le altre sono risorse statiche.

Request URL

Request CSSRequest IMG1Request IMG2Request File JS

Server WEB

Server WEB Quindi se nella pagina richiesta ci sono ad esempio 30 risorse diverse queste genereranno 30 richieste HTTP singole allo stesso server.

Amazon CloudFront - Suddividere le richieste

Cloud AWS

● Una soluzione al problema precedente potrebbe essere quella di suddividere le richieste HTTP, lasciando quelle dinamiche al nostro server web e quelle statiche al servizio di Amazon CloudFront.

● Come potete facilmente notare il nostro server web sarebbe liberato da un numero molto elevato di richieste HTTP.

Request URL

Request CSSRequest IMG1Request IMG2Request File JS

CloudFront

Server WEB In questa maniera il carico maggiore e i problemi di scalabilità legati alle nostre risorse statiche sarebbero demandati al servizio cloudfront.

Amazon CloudFront - Mappa geografica

Cloud AWS

URL

REQ Milano

Dublino

ROMA

EdgeLocations

Server = Zona geograficaRisorse = Edge Locations

Amazon CloudFront - Concetti e Termini

Cloud AWS

ObjectsOrigin Server

Edge Locations

ExpirationEventual

Consistency

Distributions

Amazon CloudFront - Objects

Cloud AWS

● 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 video e usare il player Microsoft.

Amazon CloudFront - Origin Server

Cloud AWS

● 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 il server di origine deve essere un Bucket S3.

Amazon CloudFront - Distributions

Cloud AWS

● Una volta memorizzati gli oggetti nel server di origine bisogna dire a CloudFront dove risiedono questi oggetti creando una distribuzione che può essere di due tipi:

● Web Distribution - Distribuisce i contenuti utilizzando i protocolli HTTP e HTTPS. Si possono distribuire immagini, file CSS, javascript, etc ...

● Streaming Distribution - Distribuisce contenuti digitali attraverso Adobe Flash Media Server e il protocollo RTMP. Possiamo memorizzare dei file video.

Amazon CloudFront - Edge Locations

Cloud AWS

● Una Edge Location è 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.

Amazon CloudFront - Expiration

Cloud AWS

● 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.

Amazon CloudFront - Eventual Consistency

Cloud AWS

● 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 di sistema potrebbe aumentare il tempo richiesto.

Amazon CloudFront - Costi

Cloud AWS

Si pagano i costi dei dati memorizzati all’interno

del Bucket.

Amazon S3 come origine

Si paga per il numero di richieste GET e la

quantità di dati trasferiti al di fuori di Amazon S3.

Trasferimento Edge Locations

Vengono addebitati i costi per il numero di

richieste e la quantità di dati trasferiti al di fuori

delle Edge Location.

Distribuzione Oggetti

Addebitati i costi di trasferimento dati da

parte dell’utente verso l’origine.

Trasferimento Origin Server

http://aws.amazon.com/cloudfront/pricing/

Al momento il servizio CloudFront non è inserito

nell’offerta Free Tier

Amazon CloudFront - CloudFront o S3 ?

Cloud AWS

● Sia CloudFront che amazon 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 dei propri 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.

Amazon CloudFront - Management Console

Cloud AWS

Scegliere il metodo di distribuzione

Configurazione distribuzione Web

Configurazione distribuzione RTMP