Tutti noi abbiamo sicuramente sentito parlare di CDN. Se stai leggendo questo articolo probabilmente hai già un'idea di cosa sia e vuoi approfondire; in caso contrario, il concetto di base non è molto complesso ed è alla portata di tutti, oltre ad essere interessante.

Cos'è una CDN? Innanzitutto capiamo cosa vuol dire questo acronimo: Content Delivery (o Distribution) Network.
Già il nome fa capire di cosa si tratta: una CDN è, infatti, un'infrastruttura di rete estesa a livello globale, composta da vari server dislocati su diverse reti, che si occupano di distribuire dei particolari contenuti tramite Internet.

Il gestore di un sito web, ad esempio, può delegare ad una CDN la distribuzione di alcune parti del suo sito.
In questo modo, quelle parti verranno scaricate dal CDN, che le replicherà nei suoi vari server, che le distribuiranno agli utenti che ne faranno richiesta.
Come abbiamo visto il concetto è semplice, ma qual è lo scopo di una CDN? Perchè devo delegare ad una società la distribuzione di alcune mie risorse?
La risposta è altrettanto semplice: per ottimizzare il proprio sito web e migliorarne le prestazioni.

Perchè utilizzare una CDN

Come abbiamo visto, lo scopo di una CDN è aumentare le prestazioni del proprio sito web. Ma come avviene questo? Rispondo con un esempio pratico.

Immaginiamo di avere un sito per la nostra azienda in Italia. Il punto è che questa nostra azienda ha contatti anche in Australia.

Sito senza CDN (Content Delivery Network)

Come vediamo dall'immagine, il cliente è abbastanza lontano dal nostro web server. Ciò in cosa si traduce? Quel cliente otterrà un aumento tempo di caricamento, e avrà a che fare con un sito molto lento.
Generalizzando il problema, si ottengono i seguenti risultati:

  • Alto tempo di caricamento delle pagine;
  • Basso livello di prestazioni percepite dagli utenti lontani;
  • Altissimo numero di abbandoni del sito;
  • Perdita di utenti, quindi di potenziali clienti;

Immaginiamo ora lo stesso scenario, ma aggiungendo una** CDN tra il nostro web server e gli utenti**.

Sito con CDN (Content Delivery Network)

Ora che abbiamo una CDN, quel cliente lontano, invece di scaricare le pagine dal nostro web server, lo farà da un altro a lui più vicino, che contiene copie esatte dei nostri contenuti.
I benefici che ne conseguono sono:

  • Basso tempo di caricamento delle pagine;
  • Aumento del livello di prestazioni percepite da tutti gli utenti;
  • Diminuzione del numero di abbandoni del sito;
  • Diminuzione del carico di lavoro sul web server d'origine.

Due definizioni

Ora che stiamo per ampliare il discorso, facciamo luce su alcuni termini che incontreremo tra poco:

  • Il web server di origine è anche chiamato Content Provider, o Origin Server;
  • I server su cui sono replicati i contenuti, sono chiamati Edge Servers (o Content, o Delivery Servers).

Architettura di una CDN

Le quattro parti che generalmente compongono una CDN sono:

  • Content Delivery: web server di origine più l'insieme degli Edge Server della CDN;
  • Request Routing: indirizza le richieste di contenuti verso gli Edge Server;
  • Distribution: replica i contenuti da Origin a Edge Server, e gestisce la consistenza dei contenuti (scadenza, aggiornamento on-demand/periodico, propagazione aggiornamento);
  • Accounting: produce log, statistiche e analisi per l'amministratore del sito.

Il cuore di una CDN, ed anche la parte con cui un webmaster ha a che fare, è la Request Routing.

Request Routing

Perchè questa parte è così importante? Perchè stabilisce anche le modalità con cui i contenuti sono replicati, e quindi anche spediti agli utenti.

Se hai presente il funzionamento del DNS, la prenderesti bene se ti dicessi che i principali apparati per il Request Routing (tra cui Edge Server), non sono altro che Name Servers autoritativi, con funzioni per controllare e monitorare il traffico di rete.

Dunque, dicevamo che il Request Routing gestisce quali contenuti replicare, quindi come spedirli agli utenti; vediamo i due tipi di gestione della replicazione:

DNS Redirection (Total Redirection, o First Hit at CDN)

Questa tecnica consiste nella replicazione totale delle risorse che la CDN dovrà gestire (quindi pagine HTML dopo il rendering, CSS, JavaScript ed altre risorse statiche).

È chiamato DNS Redirection proprio perchè per farlo si deve modificare il proprio record DNS: il Name Server autoritativo per il nostro dominio, infatti, deve essere impostato per delegare la risoluzione ad un altro Name Server autoritativo della CDN.

DNS Redirection (Total Redirection) in un CDN

Lo schema che riassume il le varie transazioni è il seguente:

  1. Il client interroga il DNS per ottenere l'indirizzo IP del web server del nostro dominio;
  2. Il NS Autoritativo per il dominio delega la risoluzione ad un NS autoritativo della CDN;
  3. È proprio quest'ultimo ad eleggere il miglior Edge Server per l'utente;
  4. Al termine della query DNS, il client ottiene l'indirizzo IP del miglior Edge Server;
  5. Il client si connette all'Edge Server, per scaricare tutto il contenuto della pagina.

In poche parole, con il DNS Redirection, il miglior Edge Server si sostituisce interamente al web server di origine.

URL Rewriting (Selective Redirection, o First Hit at Origin)

Con questa tecnica, è il webmaster a scegliere quali risorse far gestire alla CDN (solitamente risorse statiche).

È chiamata URL Rewriting proprio perchè si devono riscrivere gli URL delle risorse scelte, sostituendoli con quelli forniti dalla CDN.

URL Redirection (Selective Redirection) in un CDN

Ad esempio, una situazione con URL riscritti può essere la seguente:

URL Originale URL della CDN
http://miosito.it/style.css http://miosito-static.thecdn.net/style.css
http://miosito.it/nicescript.js http://miosito-static.thecdn.net/nicescript.js
http://miosito.it/uploads/img.jpg http://miosito-static.thecdn.net/uploads/img.jpg

Riassumendo, lo schema generale nel caso di URL Rewriting è:

  1. Il client interroga il DNS e ottiene l'indirizzo IP del web server del nostro dominio;
  2. Il client si connette al nostro sito, e scarica la pagina HTML (gli URL sono riscritti);
  3. Il client interroga nuovamente il DNS per ottenere l'indirizzo IP del dominio della CDN (miosito-static.thecdn.net);
  4. Il NS Autoritativo contattato, restituisce l'IP degli miglior Edge Server;
  5. Il client si connette all'Edge Server e scarica le risorse indicate dagli URL riscritti.

Qual è il metodo migliore?

Il metodo scelto è coerente con il tipo di progetto che si sta sviluppando, quindi non esiste un metodo globalmente migliore.

Prendiamo ad esempio Facebook: un approccio di tipo DNS non sarebbe mai possibile, perchè i contenuti cambiano da utente ad utente.
Facebook, infatti, fino a qualche anno fa utilizzava il CDN Akamai per le risorse statiche (es. https://fbstatic-a.akamaihd.net/rsrc.php/v2/yF/r/ADbV1q22oVf.css), mentre dal 2016 usa un'infrastruttura proprietaria, con struttura degli URL molto simile.

Al contrario, per un semplice blog un approccio DNS è perfetto.

Conclusioni

Esempi di CDN sono Akamai, MaxCDN, CloudFlare, Amazon CloudFront, Coral, RackSpace, Windows Azure CDN.

Utilizzare un CDN anche quando non si hanno utenti così distanti, può davvero essere un beneficio (non sempre però!), per la diminuzione del carico sul nostro server, con buoni risultati anche a livello SEO.

E tu hai già usato un CDN? Che esperienza hai avuto con il tuo sito web? Puoi esprimere la tuo opinione, condividere espereienze, fare domande, semplicemente utilizzando lo spazio per i commenti qui sotto.