Elaborare i media mediante la gestione serverless del lavoro e la computazione effimera

L'elaborazione di file multimediali di grandi dimensioni può essere un'operazione che richiede molte risorse e forme di computazione di grandi dimensioni per un'elaborazione tempestiva ed efficiente. Negli scenari in cui le richieste di elaborazione dei supporti possono essere ad hoc e su richiesta, l'uscita delle istanze inattive durante l'attesa di un nuovo lavoro non è conveniente.

Utilizzando le funzionalità serverless di Oracle Cloud Infrastructure (OCI), incluse le funzioni OCI e OCI NoSQL, possiamo creare rapidamente un sistema di gestione per l'elaborazione dei contenuti multimediali utilizzando i lavoratori OCI Compute effimeri.

Architettura

Questa architettura di riferimento mostra come elaborare i supporti digitali utilizzando le istanze di computazione OCI. Ci vuole un file (un "asset multimediale"), che esegue un'operazione a uso intensivo di computazione (ad esempio, la transcodifica ffmpeg o un'altra funzione di elaborazione) e indirizza il risultato a un bucket di output in cui un'attività successiva può essere configurata e utilizzata.

Nell'ambito della creazione del job, viene avviata un'istanza del lavoratore per elaborare l'oggetto caricato. Il lavoratore elabora quindi il job leggendo il video dal bucket di storage degli oggetti di origine, eseguendo la transcodifica del video e caricando la nuova versione nello storage degli oggetti di destinazione per l'utilizzo. Al completamento del caricamento nel bucket di storage degli oggetti di destinazione, l'istanza del lavoratore si arresta.

La gestione dei job viene eseguita dalle funzioni OCI e lo stato del job viene memorizzato in una tabella NoSQL OCI. Un'istanza del lavoratore di computazione viene avviata per ogni mansione utilizzando una capacità preventiva. Se non è disponibile alcuna capacità preventiva, il lavoratore viene avviato utilizzando la capacità su richiesta. Viene eseguito un controllo dello stato regolare per verificare che non vengano elaborati processi a causa di quote o limiti raggiunti. La gestione di tutti i job viene registrata a livello centrale e i lavoratori inviano notifiche per i job che non possono essere elaborati.

Il diagramma riportato di seguito illustra questa architettura di riferimento.

Segue la descrizione di proc_med_arch.png
Descrizione dell'immagine proc_med_arch.png

proc_med_arch-oracle.zip

Questa architettura prevede le seguenti risorse OCI:
  • Area

    Un'area geografica di Oracle Cloud Infrastructure è una localizzazione che contiene uno o più data center, denominati domini di disponibilità. Le regioni sono indipendenti da altre regioni e le grandi distanze possono separarle (tra paesi o addirittura continenti).

  • Memorizzazione degli oggetti

    Oracle Cloud Infrastructure Object Storage è una piattaforma di storage su scala Internet ad alte prestazioni che offre durabilità dei dati affidabile ed efficiente in termini di costi. Il servizio di storage degli oggetti può memorizzare una quantità illimitata di dati non strutturati di qualsiasi tipo di contenuto, inclusi i dati analitici e i contenuti avanzati, ad esempio immagini e video.

    I bucket di storage degli oggetti vengono utilizzati come posizione per l'origine (origine) e i supporti elaborati (destinazione).

  • Istanze di computazione convertibili

    Le istanze convertibili si comportano allo stesso modo delle istanze di computazione regolari, ma la capacità viene recuperata quando è necessaria altrove e le istanze vengono terminate. Se i carichi di lavoro sono tolleranti agli errori e sono in grado di resistere alle interruzioni, le istanze anticipabili possono ridurre i costi. Ad esempio, puoi utilizzare istanze anticipabili per ottimizzare i costi dei carichi di lavoro che possono tollerare le interruzioni, ad esempio i test che possono essere arrestati e ripresi in seguito.

    I lavoratori della computazione effimera vengono prima tentati di essere avviati utilizzando le istanze anticipabili.

  • Funzioni

    Oracle Functions è una piattaforma completamente gestita, multitenant, altamente scalabile, su richiesta, Functions-as-a-Service. È alimentato dal motore open source Fn Project. Le funzioni consentono di distribuire il codice e di chiamarlo direttamente o attivarlo in risposta agli eventi. Oracle Functions utilizza i container Docker ospitati in Oracle Cloud Infrastructure Registry.

    Le funzioni Oracle Functions scritte con Python vengono utilizzate per creare e monitorare l'elaborazione dei supporti.

  • NoSQL

    Un servizio di database NoSQL che offre provisioning basato su throughput e storage su richiesta che supporta tipi di dati in formato JSON, tabella e valore chiave, il tutto con garanzie di transazione flessibili.

    Un database NoSQL viene utilizzato per tenere traccia dello stato di ciascun job di elaborazione. Le funzioni di gestione dei job e i lavoratori di computazione effimera utilizzano la tabella NoSQL per comunicare in modo asincrono durante il flusso di lavoro di elaborazione dei supporti.

  • Log

    Il servizio Oracle Cloud Infrastructure Logging è un singolo pannello di controllo altamente scalabile e completamente gestito per tutti i log della tua tenancy. La registrazione fornisce l'accesso ai log dalle risorse di Oracle Cloud Infrastructure. Questi log includono informazioni di diagnostica critiche che descrivono in che modo le risorse vengono eseguite e a cui si accede.

    Un gruppo di log viene utilizzato come posizione centralizzata per i messaggi relativi alla gestione dei job. Gli eventi di creazione del job, lo stato di avvio del lavoratore, l'esenzione del lavoratore e l'elaborazione della coda per i nuovi tentativi di job sono tutti registrati.

  • Controlli stato

    Il servizio Oracle Cloud Infrastructure Health Checks offre agli utenti il monitoraggio esterno ad alta frequenza per determinare la disponibilità e le prestazioni di qualsiasi servizio che interagisce con il pubblico, inclusi i siti Web ospitati, gli endpoint API o i load balancer che si trovano all'esterno. Grazie ai controlli dello stato, gli utenti possono assicurarsi di essere immediatamente consapevoli di eventuali problemi di disponibilità che interessano i propri clienti.

    I controlli dello stato vengono utilizzati in collegamento con un gateway API per controllare periodicamente i job in coda o interrotti che possono essere recuperati.

Inoltre, l'architettura presenta i seguenti componenti non direttamente indicati in precedenza:
  • Rete cloud virtuale (VCN) e subnet

    Una VCN è una rete personalizzabile e definita dal software impostata dall'utente in un'area Oracle Cloud Infrastructure. Come le reti di data center tradizionali, le VCN offrono il controllo completo sull'ambiente di rete. Una VCN può avere più blocchi CIDR non sovrapposti che è possibile modificare dopo aver creato la VCN. È possibile segmentare una VCN in subnet, che può essere definita in un'area o in un dominio di disponibilità. Ogni subnet è costituita da un intervallo contiguo di indirizzi che non si sovrappongono con le altre subnet nella VCN. Puoi modificare la dimensione di una subnet dopo la creazione. Una subnet può essere pubblica o privata.

  • Criterio IAM

    Oracle Cloud Infrastructure Identity and Access Management (IAM) ti consente di controllare l'accesso alle tue risorse cloud. Un criterio è un documento che specifica chi può accedere alle risorse e come. L'accesso viene concesso a livello di gruppo e compartimento, ovvero è possibile scrivere un criterio che consenta a un gruppo un tipo specifico di accesso all'interno di un compartimento specifico o alla tenancy stessa. Se si concede a un gruppo l'accesso alla tenancy, il gruppo ottiene automaticamente lo stesso tipo di accesso a tutti i compartimenti all'interno della tenancy.

  • Eventi

    Oracle Cloud Infrastructure Events consente di creare automazione in base ai cambiamenti di stato delle risorse in tutta la tua tenancy. Utilizzare Eventi per consentire ai team di sviluppo di rispondere automaticamente quando una risorsa ne modifica lo stato.

  • Notifiche

    Il servizio Oracle Cloud Infrastructure Notifications trasmette i messaggi ai componenti distribuiti attraverso un pattern di pubblicazione/sottoscrizione, offrendo messaggi sicuri, altamente affidabili, a bassa latenza e duraturi per le applicazioni ospitate su Oracle Cloud Infrastructure ed esternamente. Utilizzare Notifiche per ricevere notifiche quando le regole evento vengono attivate o gli allarmi vengono violati oppure per pubblicare direttamente un messaggio.

  • Immagine personalizzata

    Oracle Cloud Infrastructure utilizza le immagini per avviare le istanze. Specificare l'immagine da utilizzare quando si avvia un'istanza. Puoi creare un'immagine personalizzata del disco di avvio di un'istanza Bare Metal e usarla per avviare altre istanze. Le istanze avviate dall'immagine includono le personalizzazioni, la configurazione e il software installati durante la creazione dell'immagine.

  • Gateway API

    Il servizio Oracle API Gateway consente di pubblicare le API con endpoint privati accessibili dalla rete e che, se necessario, possono essere esposte alla rete Internet pubblica. Gli endpoint supportano la convalida dell'API, la trasformazione di richieste e risposte, CORS, l'autenticazione e l'autorizzazione e la limitazione delle richieste.

Suggerimenti

Utilizzare i suggerimenti riportati di seguito come punto di partenza durante l'elaborazione dei supporti mediante la gestione dei job serverless e i lavoratori di calcolo effimeri. I requisiti potrebbero essere diversi dall'architettura descritta in questa sezione.
  • VCN

    Quando crei una VCN, determina il numero di blocchi CIDR necessari e la dimensione di ogni blocco in base al numero di risorse che intendi collegare alle subnet nella VCN. Utilizzare i blocchi CIDR che si trovano all'interno dello spazio di indirizzi IP privati standard.

    Selezionare i blocchi CIDR che non si sovrappongono a qualsiasi altra rete (in Oracle Cloud Infrastructure, il data center on premise o un altro provider cloud) a cui si intende impostare connessioni private.

    Durante la progettazione delle subnet, prendi in considerazione i requisiti di flusso del traffico e sicurezza. Associare tutte le risorse all'interno di un livello o ruolo specifico alla stessa subnet, che può fungere da limite di sicurezza.

  • Sicurezza

    Utilizza Oracle Cloud Guard per monitorare e gestire in modo proattivo la sicurezza delle tue risorse in Oracle Cloud Infrastructure. Cloud Guard utilizza ricette del rilevatore che è possibile definire per esaminare le risorse per i punti deboli della sicurezza e per monitorare operatori e utenti per le attività a rischio. Quando viene rilevata una configurazione errata o un'attività non sicura, Cloud Guard consiglia azioni correttive e supporta l'esecuzione di tali azioni in base alle ricette dei rispondenti che è possibile definire.

    Per le risorse che richiedono la massima sicurezza, Oracle consiglia di utilizzare le zone di sicurezza. Una zona di sicurezza è un compartimento associato a una ricetta definita da Oracle di criteri di sicurezza basati sulle migliori prassi. Ad esempio, le risorse in una zona di sicurezza non devono essere accessibili dalla rete Internet pubblica e devono essere cifrate utilizzando chiavi gestite dal cliente. Quando crei e aggiorna le risorse in una zona di sicurezza, Oracle Cloud Infrastructure convalida le operazioni rispetto ai criteri nella ricetta della zona di sicurezza e nega le operazioni che violano qualsiasi criterio.

  • Mantenimento tracciamento job

    OCI NoSQL consente di impostare Time-to-Live (TTL) nelle righe della tabella. Utilizzare TTL per impostare il periodo di conservazione del job appropriato per il tipo di elaborazione in esecuzione.

  • Controlli stato

    I controlli dello stato OCI sono basati sul tempo, impostare l'intervallo appropriato per il tipo di elaborazione in corso.

  • Lavoratori effimeri

    I lavoratori devono essere avviati da immagini personalizzate progettate in modo specifico per il tipo di elaborazione media necessaria. Le istanze devono avviare automaticamente l'elaborazione una volta eseguita e non consentire la creazione di connessioni esterne.

Considerazioni

Quando si distribuisce questa architettura di riferimento, tenere presenti i punti riportati di seguito.

  • Log OCI

    La registrazione si integra con molti servizi OCI ed è utilizzata per il semplice log dall'interno di una funzione OCI.

  • OCI Application Performance Monitoring

    È possibile utilizzare OCI Application Performance Monitoring se sono necessarie funzioni quali il tracciamento distribuito per l'interazione di funzioni complesse.

  • Tracciamento job

    OCI NoSQL è un metodo leggero per tenere traccia dello stato dei job. I servizi di database più avanzati possono essere sostituiti quando sono necessarie funzioni aggiuntive.

  • Computazione selezionabile

    I lavoratori effimeri vengono lanciati utilizzando la capacità di preclusione. La capacità riproducibile costa il 50% in meno rispetto alla capacità su richiesta in tutte le aree, ma non tutte le forme di computazione sono supportate.

Distribuzione

Il codice Terraform per questa architettura di riferimento è disponibile come stack di esempio in Oracle Cloud Infrastructure Resource Manager. È inoltre possibile scaricare il codice da GitHub e personalizzarlo in base alle proprie esigenze specifiche.

  • Distribuire utilizzando lo stack di esempio in Oracle Cloud Infrastructure Resource Manager:
    1. Fare clic su Distribuire in Oracle Cloud.

      Se non si è ancora collegati, immettere la tenancy e le credenziali utente.

    2. Selezionare l'area in cui distribuire lo stack.
    3. Seguire i prompt visualizzati e le istruzioni per creare lo stack.
    4. Dopo aver creato lo stack, fare clic su Azioni Terraform e selezionare Piano.
    5. Attendere il completamento del processo e rivedere il piano.

      Per apportare modifiche, tornare alla pagina Dettagli stack, fare clic su Modifica stack e apportare le modifiche necessarie. Quindi eseguire di nuovo l'azione Piano.

    6. Se non sono necessarie ulteriori modifiche, tornare alla pagina Dettagli stack, fare clic su Azioni Terraform e selezionare Applica.
  • Distribuzione mediante il codice Terraform in GitHub:
    1. Andare a GitHub.
    2. Duplicare o scaricare il repository nel computer locale.
    3. Seguire le istruzioni riportate nel documento README.

Visualizza altro

Scopri di più sull'elaborazione dei media utilizzando la gestione dei job serverless e i lavoratori della computazione effimera.

Esaminare le risorse aggiuntive riportate di seguito.

Riconoscimenti

  • Authors: Lawrence Gabriel, Sathya Mohankalyan