Che rapporto c’è tra Software libero e Netflix?

Si sente parlare sempre di più spesso di Netflix, la piattaforma di streaming più famosa al mondo che permette la visione di film e telefilm. Come spesso mi accade, mi son chiesto: “che rapporto c’è tra Software libero e Netflix?“.

Netflix ha un account GitHub in cui è possibile trovare oltre 120 progetti, tra librerie proprie, plugin e fork di progetti già esistenti, tra i linguaggi che troviamo possiamo trovare: Java, JavaScript, Python, Ruby e Html, la licenza più utilizzata è la Apache 2.0.

Software libero e Netflix

 

Netflix e la sua storia

Nel 1997 fu fondata l’azienda, inizialmente si occupava di noleggio di DVD e videogiochi, era possibile ordinare online i dischi e riceverli direttamente a casa tramite posta.

Dal 2008 fu lanciato il servizio ad abbonamento di streaming online on demand.

Prima del 2010 i servizi online erano disponibili solo negli Stati Uniti, dopo venne reso disponibile anche in Sud America ed Europa.

Venne scorporata la divisione che si occupava di noleggio nel 2011.

Nel 2014 gli abbonati superano i 50 milioni, raggiungendo i 93 milioni nel 2016.

Cosa si può trovare

  • Serie TV;
  • Miniserie;
  • Serie animate;
  • Film;
  • Documentari.

Software libero e Netflix

Dall’account ufficiale GitHub possiamo trovare le librerie divise per argomento, come Big Data, Build and Delivery Tools, Common Runtime Services & Libraries, Content Encoding, Data Persistence, Insight, Reliability and Performance, Security e User Interface. Queste librerie sono state create internamente dagli sviluppatori di Netflix e rese disponibili a tutta la comunità.

Vediamo nel dettaglio queste categorie.

Big Data

In questa categoria ci sono tutti gli strumenti utilizzati da Netflix per l’analisi dei dati, possiamo trovare:

  • Genie (Apache 2.0): un applicazione per la gestione dei flussi di lavoro tramite API REST-ful;
  • Inviso (Apache 2.0): un’altra applicazione per la gestione del lavoro;
  • Lipstick (Apache 2.0): come i precedenti;
  • Egisto (Apache 2.0): serve per elaborare grosse moli di dati formattandole in un formato utilizzabile dagli algoritmi interni;

Build and Delivery Tools

Qui ci sonno tutti gli strumenti utilizzati per lo sviluppo.

  • Nebulosa (Apache 2.0): una serie di plugin Gradle (un sistema Open Source che automatizza il processo di Sviluppo) ;
  • Aminator (Apache 2.0): un tools per la creazione di applicazioi Web;
  • Spinnaker (MIT): una piattaforma di repositoring basato su cloud.

Common Runtime Services & Libraries

Si tratta delle librerie utilizzate costantemente da Netflix sia per lo sviluppo e che il comune utilizzo.

  • Eureka (Apache 2.0): per la gestione del traffico dei dati sia riguardanti il comune utilizzo di Netflix che per il suo sviluppo;
  • Archaius (Apache 2.0): una libreria contenente le configurazioni della gestione delle API;
  • Ribbon (Apache 2.0): sistema per il bilanciamento del carico di lavoro tra i servizi Cloud e i client;
  • Hystrix (Apache 2.0): questa libreria serve per gestire le richieste che arrivano a Netflix e distribuisce il carico di lavoro per evitare latenze o blocchi;
  • Karyon (Apache 2.0): la parte centrale di tutto il sistema, contiene i dati principali che servono per creare nuove funzionalità del sito;
  • Governator (Apache 2.0): libreria di integrazione con Google Guice, un framework Open Source, per la gestione delle dipendenze in Java;
  • Prana (Apache 2.0): una libreria che rende utilizzabili alcune librerie Java da Eureka, Ribbon e Archaius;
  • Zuul (Apache 2.0): quando da una App o dal sito si effettua una qualsiasi operazione passa per questa libreria, che si occupa di ricevere la chiamata e formattarla ed instradarla nel modo corretto;
  • Fenzo (Apache 2.0): libreria Java per la suddivisione del lavoro della JVM;

Content Encoding

Sono le funzioni che si occupano di conversioni e codifica dei una formati multimediali.

  • Photon (Apache 2.0): strumenti per la conversioni tra i vari formati delle tracce audio;
  • Vmaf (Apache 2.0): una libreria per l’analisi e la valutazione della qualità dei video.

Data Persistence

La parte che si occupa del salvataggio dei dati e di mantenere i dati persistenti.

  • Hollow (Apache 2.0): sistema per l’aumento delle prestazioni del prelevamento dei dati in solo lettura, per comunicazioni 1 ad n;
  • Raigard (Apache 2.0): serve per gestire la creazione delle copie di backup ed il ripristino;
  • Priam (Apache 2.0): come Raigard ma dedicato a Cassandra;
  • EVCache (Apache 2.0): è un sistema di caching per il cloud;
  • Dynomite (Apache 2.0): un altra libreria dedicata alla cache.

Insight, Reliability and Performance

Tutte le funzionalità dedicate alla statistiche, affidabilità dei dati e le prestazioni.

  • Atlas (Apache 2.0): sistema di gestione dei dati, creato per archiviare enormi moli di dati molto rapidamente;
  • Edda (Apache 2.0): un sistema di sondaggi e funzionante tramite le API di AWS;
  • Spectator (Apache 2.0): altro sistema di immagazzinamento dati;
  • Vector (Apache 2.0): framework per il monitoraggio delle prestazioni per la scelta della risoluzione ottimale dei video;
  • Vizceral (Apache 2.0): libreria in OpenGL per la creazione di grafici animati;
  • Chaos Monkey (Apache 2.0): un sistema utilizzato in fase di test per collaudare e rendere più resistente la piattaforma;
  • Simian Army (Apache 2.0): uno strumento che funziona insieme a Chaos Monkey, utilizzato per rendere sempre performante il sistema.

Security

  • Security Monkey (Apache 2.0): controlla i cambiamenti e gli avvisi degli account AWS E GCP;
  • Scrumblr (Apache 2.0): serve per automatizzare la ricerca e la sincronizzazione di dati riguardante la sicurezza;
  • Stethoscope (Apache 2.0): applicazione web che raccoglie informazioni sul trasferiento dei dati da Netflix a utenti.

User Interface

Tutte le librerie utilizzate per migliorare le applicazioni per i singoli utenti.

  • Falcor (Apache 2.0): libreria JavaScript per la creazione di Dati in formati JSON per comunicarli alle applicazioni Node.JS
  • Restify (MIT): Framework per costruire servizi REST Web corretti e funzionanti;
  • RxJS (Apache 2.0): libreria JavaScript dedicata alle performance del sistema.

Queste sono solo i principali progetti con licenza libera presenti su Netflix, l’elenco completo è possibile trovare nel loro profilo GitHub.

Altri articoli simili

Ho realizzato altri articoli sull’utilizzo di Open Source in grosse aziende: