Architettura Amazon Prime Video

Architettura Amazon Prime Video

Nell’ architettura di Amazon Prime Video troviamo una migrazione dai microservizi al monolite per il servizio di monitoraggio audio/video.

Amazon Prime Video è uno dei più grandi servizi di streaming al mondo, che serve milioni di clienti in tutto il mondo. Per offrire un’esperienza di visione senza interruzioni ai propri utenti, l’azienda ha creato uno strumento per monitorare ogni streaming visualizzato dai clienti, che analizza la qualità degli streaming audio e video in tempo reale, basato su un’infrastruttura Microservice, ma con l’aumento del numero di streaming sulla piattaforma, questa infrastruttura ha dovuto affrontare colli di bottiglia di scalabilità e si è rivelata molto costosa.

In questo articolo parleremo di come Prime Video sia passata dai microservizi distribuiti a un’applicazione monolitica e di come ciò abbia contribuito a ridimensionare e ridurre i costi.

Prima di approfondire l’argomento, cerchiamo di capire la terminologia di base che verrà utilizzata nell’articolo.

Monolite:

Un’architettura software in cui tutti i componenti di un servizio sono raggruppati in un’unica base di codice. Questo approccio è più semplice da sviluppare e distribuire, ma può diventare difficile da gestire e scalare man mano che l’applicazione cresce.

Cerchiamo di capirlo con degli esempi:

Esempio n.1: Consideriamo un ristorante che offre servizi di ristorazione, asporto e consegna. Un’architettura Monolitica sarebbe come avere una cucina e lo stesso chef dove tutto il cibo viene preparato e una persona che gestisce tutti gli ordini, che siano per ristorazione, asporto o consegna, che passano attraverso la stessa cucina. In questa configurazione, qualsiasi modifica al menu o al processo di ordinazione influenzerebbe l’intera cucina e lo chef.

Esempio n.2: Consideriamo un grande magazzino che vende di tutto, dall’abbigliamento all’elettronica. Un’architettura Monolitica sarebbe come se l’intero negozio fosse gestito da una persona che deve prendere decisioni per tutti i reparti.

Microservizi:

Un’architettura software in cui ogni componente di un servizio viene sviluppato e distribuito in modo indipendente. Questo approccio consente un migliore isolamento dei guasti, scalabilità e agilità.

Cerchiamo di capirlo con degli esempi:

Esempio n.1: Prendiamo lo stesso esempio di un ristorante che offre servizi di ristorazione, asporto e consegna. Un’architettura di microservizi sarebbe come avere cucine separate per ogni servizio (ristorazione, asporto, consegna) con i propri chef e manager per gestire i loro ordini specifici. Questa configurazione consente una maggiore flessibilità e specializzazione in cucina, nonché la possibilità di apportare modifiche ai singoli servizi senza influenzare gli altri.

Esempio n.2: Consideriamo un grande magazzino che vende di tutto, dall’abbigliamento all’elettronica. Un’architettura Microservices sarebbe come se ogni reparto fosse gestito dal suo manager che può prendere decisioni per il proprio reparto.

Moduli:

Un’architettura ibrida che combina il meglio delle architetture Monolith e Microservices. È un’architettura monolitica suddivisa in moduli debolmente accoppiati, con ogni modulo sviluppato e distribuito in modo indipendente. Questo approccio consente una migliore scalabilità e manutenibilità rispetto a un monolite, evitando al contempo le complessità dei Microservices.

Cerchiamo di capirlo con degli esempi:

Esempio n.1: Prendiamo lo stesso esempio di un ristorante che offre servizi di ristorazione, asporto e consegna. Un’architettura Modulitica sarebbe come quella in cui il ristorante ha cucine separate per la ristorazione e l’asporto/consegna, ma sono comunque gestite da uno chef e condividono alcune risorse. Questa configurazione consente una certa specializzazione e flessibilità, ma garantisce anche coerenza tra i due servizi principali offerti dal ristorante. Inoltre, qualsiasi modifica apportata alle risorse condivise (come ingredienti o attrezzature) influenzerebbe entrambe le cucine.

Amazon EC2:

Amazon Web Services Elastic Compute Cloud è un servizio Web che fornisce capacità di elaborazione scalabile nel cloud in base alle esigenze dell’utente, pagando solo per le risorse che utilizza. Fornisce un’infrastruttura affidabile, sicura e scalabile per l’esecuzione di applicazioni e servizi nel cloud. È comunemente utilizzato per l’hosting di siti Web, l’esecuzione di processi batch e la distribuzione di applicazioni

Amazon ECS:

Amazon Web Services Elastic Container Service è un servizio di gestione dei container altamente scalabile che semplifica l’esecuzione, l’arresto e la gestione dei container Docker su un cluster. ECS può essere utilizzato per gestire le istanze dei container e garantire che il codice sia sempre in esecuzione.

AWS Step functions:

Un servizio Web che consente di creare applicazioni con più servizi AWS e di orchestrarle utilizzando flussi di lavoro visivi.

Funzione L ambda:

Un servizio di elaborazione serverless basato su eventi fornito da AWS che ti consente di eseguire il tuo codice senza doverti preoccupare dell’infrastruttura sottostante. Con AWS Lambda, possiamo creare ed eseguire funzioni che rispondono a eventi attivati ​​da altri servizi AWS, come S3, DynamoDB o API Gateway.

S3 Bucket:

Amazon Simple Storage Service è un servizio di archiviazione di oggetti altamente scalabile, utilizzato per archiviare e recuperare file e oggetti.

Perché Amazon Prime Video ha deciso di migrare il servizio di monitoraggio audio-video verso un’architettura monolitica.
Inizialmente, il servizio Prime Video è stato configurato utilizzando componenti serverless come AWS Step Functions e Lambda Functions, che hanno consentito un processo di creazione rapido e semplice.

Tuttavia, quando il servizio ha iniziato a scalare a causa dell’elevato traffico, si è scoperto che si verificavano numerose transazioni di stato ogni secondo del flusso. Queste transazioni includevano un volume elevato di operazioni di lettura e scrittura su bucket S3, nonché comunicazioni tra AWS Lambda e bucket S3. Di conseguenza, il costo del servizio è diventato molto elevato.

I componenti principali di questo servizio erano:

Media Converters, che erano responsabili della suddivisione dei video e audio in frame e del loro caricamento nel bucket Amazon S3 e nei rilevatori di chiamate.

Drilevatori che erano responsabili del monitoraggio dei difetti nei frame, come problemi di sincronizzazione audio/video e problemi di blocco video. I rilevatori elaboravano le immagini scaricate in parallelo utilizzando AWS Lambda e caricavano i risultati su Amazon S3.

Un terzo componente che forniva l’orchestrazione che governava il flusso del servizio utilizzando AWS Step Functions.

L’uso di Step Functions ha garantito che i vari componenti del servizio funzionassero insieme in modo fluido ed efficiente, offrendo agli utenti un’esperienza di streaming fluida e ininterrotta.

Tuttavia, con l’aumento del traffico sul servizio, si è scoperto che si verificavano frequenti transazioni di stato per ogni secondo del flusso, con conseguente elevato volume di letture e scritture sui bucket S3, oltre alla comunicazione tra AWS Lambda e i bucket S3, il che risultava molto costoso.


Come detto l’intera architettura è stata realizzata utilizzando un’architettura serverless che impiega AWS Step Functions, AWS Lambda, Media Converters e Defect Detectors.

Con questo tipo di diagramma infrastrutturale, ogni componente del servizio è stato sviluppato e distribuito in modo indipendente. Mentre questa architettura ha consentito una maggiore flessibilità e scalabilità, ha anche introdotto complessità e sovraccarico nella gestione e distribuzione del servizio.

Il team ha quindi deciso di ristrutturare l’approccio e di utilizzare un unico processo per tutti i componenti, concentrandosi sui colli di bottiglia legati ai costi e alla scalabilità.

Di seguito è riportato lo schema che mostra l’architettura del sistema dopo la migrazione al monolite.

Come mostrato nel diagramma sopra, è possibile notare che tutti i componenti sono ora conservati in un unico processo ed è presente un solo bucket S3.

Anche nella nuova architettura i componenti sono gli stessi, compresi i convertitori multimediali, i rilevatori di difetti e l’orchestrazione, ma ora vengono eseguiti nella stessa istanza.

La nuova architettura consente un migliore utilizzo delle risorse. Combinando il servizio Media Conversion e Defect Detectors in un’unica istanza, il sistema può utilizzare le risorse in modo più efficiente, riducendo la necessità di risorse ridondanti e minimizzando lo spreco di risorse.

Ora, servizi come Defect Detectors possono essere aumentati o diminuiti in base al volume di contenuti audio e video e al traffico di utenti che Amazon Prime Video sperimenta, specialmente durante i periodi di picco di utilizzo. Con questo approccio, si ottengono risparmi sui costi e migliori prestazioni complessive del sistema.

Ora È importante notare che la decisione di passare a un’architettura a istanza singola era specifica del servizio di monitoraggio audio-video e potrebbe non essere applicabile ad altri componenti del servizio di streaming di Amazon Prime Video.

Conclusione Architettura Amazon Prime Video:
La migrazione del servizio di monitoraggio audio-video da Microservices a Monolith ha rappresentato un cambiamento significativo nell’architettura di Amazon Prime Video. La nuova architettura utilizza servizi AWS come ECS e Amazon EC2 per scalabilità e flessibilità, il che ha contribuito a migliorare l’efficienza operativa e a ridurre i costi.

Sebbene i microservizi siano attualmente molto popolari, il ritorno di Amazon Prime Video a un’architettura monolitica ha scatenato discussioni nel settore e dimostra che non esiste una soluzione valida per tutti nello sviluppo software.

Pertanto, è molto importante valutare attentamente i compromessi tra architetture monolitiche e microservizi per ciascun componente di un sistema, per determinare l’architettura più appropriata.

(fonte) (fonte)

Innovaformazione promuove la cultura del cloud e dei sistemi a microservices in maniera consapevole fra le aziende IT. Se volete apprendere le competenze in ambito Cloud Computing trovate sul nostro sito l’offerta formativa specializzata in particolare su AWS.

Se volete invece esplorare altri articoli del nostro blog visionate la sezione apposita QUI.

INFO: info@innovaformazione.net – tel. 3471012275 (Dario Carrassi)

Ti potrebbe interessare

Articoli correlati