Un Content Delivery Network, o CDN, è un sistema distribuito di server che offrono il servizio di “inviare files/contenuti” in modo efficacie ed efficiente, quindi ad elevate prestazioni.
A cosa può servire un cdn?
Un cdn serve per velocizzare le performance della vostra piattaforma, sito o e-commerce sostituendosi al vostro server nell’invio dei file che voi gli date. In pratica invece di chiamare il vostro dominio per lo scaricamento di un immagine, ex: http://www.vostrodominio.com/immagine.jpg il vostro sito chiamerà il cdn, che non è altro che una copia dei vostri file, all’url http://www.cdn.com/immagine.jpg.
Il cdn, risponderà con tempi molto minori, con una capacità di banda molto maggiore e farà in modo che il caricamento della vostra pagina sia molto più veloce.
Questo è tutto.
In questo articolo vedremo con fare lavorare Magento con uno dei più famosi cdn, ovvero il servizio di Amazon CloudFront.
Questo servizio è un servizio ad iscrizione gratuita, ma con pagamento a seconda della quantità di dati che vengono richiesti; ecco la tabella dei prezzi.
PASSO 1
Si inizia registrandosi ad Amazon Web Services, si entra poi in Cloudfront e si accede alla console (alla registrazione viene chiesta la carta di credito, senza la quale non è possibile registrarsi).
Una volta entrati nella console di Cloudfront si inizia a creare una distribuzione, ovvero una copia dei vostri file su Cloudfront:
PASSO 2
Dopo avere creato la distribuzione, è necessario configurarla, in modo che questa riesca in maniera del tutto automatica a scaricare dal vostro sito i file che dovrà fare scaricare ai vostri visitatori. E’ il momento di scegliere il “delivery method”:
PASSO 3
E’ il momento di configurare il nostro CDN, impostando il nome del nostro dominio ed i vari paramentri necessari; in realtà è necessario inserire solo il nome di dominio se non si è molto pratici della cosa e al resto pensa tutto Cloudfront (se insicuri lascaire i parametri di default):
PASSO 4
Dopo avere creato la “distribuzione”, ovvero la copia il servizio si prenderà una decina di minuti per configurarsi; la creazione della distribuzione genererà un nuovo nome di dominio del tipo:
d34y234asa3dfa234b6qr1j5d.cloudfront.net
una volta pronto potrete attivare il cdn all’interno del magento.
Basterà andare in
System -> Configuration -> General -> Web -> Tab Unsecure
ed impostare la url del cdn nei campi Media Url, Skin Url e Js Url come nella seguente immagine:
Salvate ed il gioco sarà fatto.
Se poi andate ad analizzare il sorgente del vostro codice, oppure come ho fatto io, se utilizzate Firebug per vedere i tempi di caricamento del vostro e-commerce noterete che le richieste saranno servite dalla vostra nuova e performante cdn.
IL TEST DELLE PERFORMANCE
Per ultimo, sono andato a misurare le performance del magento giocattolo installato sul mio server. Ecco alcuni dati riguardanti l’ambiente:
Server vps con 512MB di ram
Magento con cache abilitata e compilazione disabilitata
Server non ottimizzato per magento (nessuna ottimizzazione a livello di php, apache e mysql)
Ho fatto il test su questo magento appunto per capire in che modo un cdn possa pesare su un magento fresco di installazione e non ottimizzato (Attenzione: le prestazioni dipendono molto anche dal server e dalla banda quindi questi dati sono reali e significativi per questo mio ambiente di prova; la situazione può cambiare da server a server).
Aprendo la schermata generata dal caricamento della pagina visto attraverso firebug, ed incollando assieme la parte dei tempi di caricamento del test effettuato con CDN e quello effettuato senza CDN, ecco il risultato:
I RISULTATI
Come potete vedere già dall’immagine sopra, i tempi di caricamento sono un 20, 30% più veloci. Ecco però i risultati del tempo di caricamento dell’home page del mio sito di prova (il risultato in secondi è stato fatto eseguendo il caricamento della pagina con firefox 5 volte premento Ctrl + F5 per bypassare la cache del browser):
Alcuni dettagli:
E’ possibile impostare un nome di dominio per la distribuzione del CDN: basterà specificarlo nel campo CNAME delle opzioni di amazon Cloudfront e puntare il dns del proprio host per poter accedere al cdn con il nome http://cdn.propriodominio.com invece che d34y234asa3dfa234b6qr1j5d.cloudfront.net
Problema con javascript: non ho fatto test, ma attenzione al caricamento di file javascript da dominio esterni; ci sono restrizioni a causa del caricamento di codice “cattivo” da domini esterni; fate dei test!!!
Aggiornamento dei file nel CDN: i file all’interno del CDN hanno una scadenza, dopo la quale, questi verrano scaricati nuovamente; quindi se aggiornate nel vostro sistema una immagine, questa sarà replicata all’interno del CDN alla sua scadenza; è inoltre possibile fare scadere degli oggetti del cdn; per una guida completa è possibile consultare la guida di Amazon Cloudfront: http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html