YouTube è, dopo Google, il sito più popolare esistente sul web. La media, degli ultimi 9 mesi, è di 500 ore di file video caricati in un solo minuto.
YouTube permette la visione di un miliardo di ore di contenuti da parte dei circa 2 miliardi di visitatori, che consentono di generare, ogni giorno, altrettanti miliardi di visualizzazioni. Produrre contenuti per il canale YouTube è una priorità per ogni impresa che debba promuoversi in modo organico, seguendo un preciso piano editoriale.
Vorrei cercare di spiegare come possa YouTube attraverso la propria infrastruttura gestire e mantenere una così ampia quantità di dati con un tale numero di utenti che simultaneamente accedono ai contenuti.
Infrastruttura di back-end
I video più ricercati vengono diffusi attraverso un sistema complesso di CDN (content delivery network) che salva una copia del contenuto in diversi server posizionati in diverse location, così che ogni utente sia in grado di accedere al contenuto video salvato nel server più vicino alla propria posizione.
I video meno ricercati vengono gestiti direttamente dalla banca-dati principale.
I video sono identificati grazie a codici univoci. Al momento del caricamento i video sono sottoposti ad elaborazione che produce codifiche, trascrizioni, miniature, dati utili alla monetizzazione e metadati.
Il processo di compressione del video è garantito dal codec VP9 e dal codec H264/MPEG-4AVC, capaci di dimezzare il dispendio di spazio rispetto ad altri codificatori in grado di mantenere stabile la qualità dei contenuti 4K e HD.
Il protocollo usato da YouTube per gestire su HTTP lo streaming è Dynamic Adaptive Streaming, capace di produrre streaming di alta qualità e veloci. Il protocollo lavora con server convenzionali e si appoggia ad HTTP.
Grazie a questa tecnica, ogni video è disponibile al fruitore con diverse velocità e risoluzioni.
Su YouTube ogni client usato dall’utente provvede al rendering in modo automatico. L’adattamento viene fatto in base alle caratteristiche della connessione e ha lo scopo di portare ai minimi livelli il buffering.
Nel caso delle dirette streaming su YouTube infatti chi trasmette eroga un solo formato, come mostrato nell’ articolo che spiega come fare. E’ la piattaforma che a sua volta eroga flussi diversi
MSQL, database e Vitess
Come conseguenza dell’intensità di traffico di richieste di YouTube con MSQL, il team di sviluppo ha aggiunto un framework, Vitess.
Vitess rappresenta un sistema in grado di replicare il contenuto del database alleggerendo il lavoro del master originale. Il sistema di copie garantisce rapidità e affidabilità del sistema intero.Ne deriva che il master è interessato nella fase di input e di output mentre i nodi sono interessati solo agli output. Viene spiegato in questo modo la diversità dei numeri relativi al sistema del master e a quello dei nodi.
Suddivisione del database
Il database viene replicato grazie al protocollo master-slave e al protocollo master-master oltre ad essere suddiviso nei diversi nodi.
Dopo la suddivisione del database, i file vengono distribuiti nelle diverse macchine, questo incrementa la velocità in fase di scrittura. Ognuna della macchine è fornita di copie separate dei file assicurando, in tal modo, la velocità e la ridondanza.