Distribuire i carichi di lavoro batch cloud nativi utilizzando Oracle Cloud Infrastructure Batch Service
Introduzione
Le applicazioni moderne si affidano molto all'elaborazione in background per gestire attività come la trasformazione dei dati, la generazione di report, l'elaborazione dei media e le simulazioni su larga scala. Questi carichi di lavoro sono spesso ad alta intensità di calcolo, vengono eseguiti in modo asincrono e possono variare in modo significativo in termini di scala e frequenza. La gestione di tali carichi di lavoro utilizzando approcci tradizionali può essere complessa, richiedendo ai team di eseguire il provisioning dell'infrastruttura, creare sistemi di pianificazione e gestire il ridimensionamento manualmente.
Oracle Cloud Infrastructure (OCI) Batch Service è progettato per semplificare questo processo. Fornisce un modo completamente gestito per eseguire carichi di lavoro batch su larga scala, consentendoti di concentrarti sulla definizione dei tuoi lavori mentre la piattaforma gestisce l'esecuzione e la gestione delle risorse.
In questa esercitazione esploreremo il funzionamento di OCI Batch, la sua architettura e il modo in cui può essere utilizzato in modo efficace in scenari reali.
Quale problema risolve il batch OCI?
L'esecuzione di carichi di lavoro batch comporta tradizionalmente più livelli di complessità. I team spesso devono eseguire il provisioning delle risorse di computazione in anticipo, implementare i propri meccanismi di pianificazione del lavoro e creare una logica per gestire nuovi tentativi, errori e scalabilità. Anche quando si utilizzano piattaforme come Kubernetes, è necessario un impegno significativo per configurare e mantenere l'ambiente. Ciò aumenta il sovraccarico operativo e rallenta lo sviluppo.
OCI Batch risolve queste sfide fornendo un servizio unificato che gestisce il ciclo di vita dei carichi di lavoro batch. Elimina la necessità di creare scheduler personalizzati o gestire l'infrastruttura, consentendo ai team di eseguire job su larga scala in modo più efficiente e con meno sforzo operativo.
Panoramica del servizio batch OCI
Il batch OCI funge da servizio centralizzato per la gestione e l'esecuzione dei carichi di lavoro batch. Quando un job viene sottomesso, viene inserito in una coda ed elaborato in base alle decisioni di schedulazione e alla disponibilità delle risorse. Il servizio valuta i requisiti dei job ed esegue dinamicamente il provisioning della capacità di computazione per eseguire i task. Ogni attività viene eseguita in un ambiente containerizzato, garantendo coerenza e isolamento. Una volta completata l'esecuzione, gli output vengono memorizzati e i log vengono generati per il monitoraggio e la risoluzione dei problemi.
Questo approccio fornisce un flusso di lavoro semplificato in cui la sottomissione, la pianificazione, l'esecuzione e l'osservabilità dei job vengono gestite all'interno di un singolo servizio gestito.
Approfondimento sull'architettura
L'architettura di Batch OCI segue un chiaro flusso dalla sottomissione dei job all'esecuzione e all'output, come mostrato nel diagramma.

Il processo viene avviato quando un utente sottomette un job utilizzando la console, l'interfaccia CLI o l'API OCI. Questa richiesta è associata a un Batch Context, che funge da livello di configurazione di base. Il contesto definisce impostazioni chiave quali il networking, le flotte di calcolo e il log, garantendo che tutti i job vengano eseguiti in un ambiente coerente.
I job vengono quindi organizzati in Job Pools, che fornisce il raggruppamento logico e consente di controllare il funzionamento della pianificazione. Ciò è particolarmente utile quando si gestiscono carichi di lavoro tra team o ambienti diversi, in quanto consente l'assegnazione delle priorità e l'isolamento. Ogni job sottomesso rappresenta un'unità di lavoro completa e può includere uno o più task. I task sono le unità eseguibili più piccole ed eseguiti utilizzando un ambiente task definito. Ciò consente di suddividere i job in parti più piccole che possono essere eseguite in modo indipendente o in sequenza, a seconda delle dipendenze definite.
Una volta sottomessi, i job vengono inseriti in un file Queue, in cui attendono la disponibilità delle risorse. Lo scheduler valuta continuamente la coda e seleziona i job in base alla priorità e alla capacità. Ciò garantisce che i carichi di lavoro vengano elaborati in modo efficiente senza sovraccaricare il sistema.
Per eseguire questi task, OCI Batch utilizza Compute Fleets, che rappresentano la capacità di computazione di base. Il provisioning di queste flotte viene eseguito in modo dinamico in base alla domanda del carico di lavoro. Man mano che vengono sottomessi più posti di lavoro, viene allocata capacità aggiuntiva; quando la domanda diminuisce, le risorse vengono ridimensionate. Ciò garantisce un utilizzo efficiente senza richiedere interventi manuali.
Dopo l'esecuzione, i risultati vengono memorizzati in OCI storage services e i log e le metriche vengono acquisiti per ottenere visibilità. Fornisce una vista completa dell'esecuzione dei job e delle prestazioni del sistema.
Perché questa architettura è importante
Un punto di forza di OCI Batch risiede nella separazione tra sottomissione ed esecuzione dei job. Invece di eseguire immediatamente ogni job, il sistema utilizza code e logica di pianificazione per gestire i carichi di lavoro in modo efficiente. Questa progettazione consente a OCI Batch di gestire improvvisi picchi di domanda senza richiedere l'infrastruttura di cui è stato eseguito il provisioning. Garantisce inoltre che i job con priorità più elevata possano essere eseguiti per primi, migliorando la prevedibilità negli ambienti condivisi.
Grazie alla gestione dinamica dell'allocazione delle risorse e al controllo dell'esecuzione attraverso le code, il servizio offre un equilibrio tra prestazioni, scalabilità ed efficienza dei costi.
Componenti di base del batch OCI
OCI Batch si basa su un set di componenti di base che lavorano insieme per fornire funzionalità di elaborazione batch.
- Il contesto batch definisce l'ambiente per i carichi di lavoro, tra cui la rete, le flotte di calcolo e le configurazioni di log. Garantisce la coerenza tra tutti i lavori.
- I job pool vengono utilizzati per raggruppare i job correlati e gestire il comportamento di pianificazione. Aiuta a organizzare i carichi di lavoro e a controllare le priorità in ambienti multi-team.
- Un Job rappresenta un flusso di lavoro completo e può essere costituito da più task. Definisce cosa deve essere eseguito e in che modo i task sono correlati.
- I task sono le unità di esecuzione più piccole. Ogni attività viene eseguita all'interno di un contenitore ed esegue un'operazione specifica. Le attività possono essere eseguite in parallelo o seguire dipendenze, abilitando flussi di lavoro semplici e complessi.
- I profili task definiscono la modalità di esecuzione dei task specificando i requisiti delle risorse, ad esempio CPU, memoria, immagini dei contenitori e variabili di ambiente. Ciò consente di ottimizzare i carichi di lavoro in base alle loro esigenze.
Esempio sul mondo reale: pipeline di elaborazione video
Considerare uno scenario in cui migliaia di video devono essere elaborati. Ad esempio, la conversione di formati, la generazione di miniature o l'applicazione di filtri.
Utilizzando OCI Batch, ogni video può essere trattato come un task separato all'interno di un job. Queste attività possono essere eseguite in parallelo su più risorse di computazione, riducendo in modo significativo i tempi di elaborazione totali. Man mano che la domanda del carico di lavoro aumenta, OCI Batch esegue automaticamente il provisioning di capacità di computazione aggiuntiva per gestire i task. Una volta completata l'elaborazione, i risultati vengono memorizzati e i log vengono generati per il monitoraggio. Questo pattern può essere applicato a molti altri casi d'uso, tra cui pipeline di dati, carichi di lavoro di machine learning e simulazioni di progettazione.
Prerequisiti
Seguire Esempi di criteri IAM per consentire al servizio batch OCI l'accesso ai servizi OCI necessari.
Sarà inoltre necessario scaricare l'interfaccia CLI OCI se si desidera utilizzarla per creare job.
Task 1. Crea contesto di batch
Il contesto batch è il livello di configurazione di livello superiore per i carichi di lavoro batch. Include networking, flotte, abilitazioni, impostazioni di priorità mansione e configurazione della registrazione.
Per creare un contesto batch, andare al servizio batch e selezionare Contesti batch, quindi selezionare Crea contesto batch. Compilare i dettagli riportati di seguito in base all'ambiente.
- Nome
- Compartimento
- Descrizione
- VCN
- Subnet
- Flotta
- Abilitazioni (facoltativo)
- Configurazione priorità job (facoltativo)
-
Configurazione log

Task 2. Crea pool di job
Un pool di job è semplicemente un contenitore logico per i job. Quando si esegue un job, verrà selezionato un pool di job in cui crearlo. Per creare un pool di job, sono necessarie solo le configurazioni seguenti.
- Nome
- Descrizione
-
Compartimento

Task 3. Crea profilo task
Un profilo task è una configurazione riutilizzabile che definisce le risorse di computazione minime necessarie per task quali 1 OCPU e 16 GB di memoria. È possibile creare più profili, ciascuno corrispondente a un fabbisogno di risorse diverso. Per creare un profilo task, sono necessarie le configurazioni riportate di seguito.
- Nome
- Descrizione
- Numero minimo di OCPU: è possibile impostare questo valore su 1 per questo esempio
-
Memoria minima in GB - È possibile impostare questa opzione su 8 per questo esempio

Task 4. Imposta ambiente locale e immagini contenitore push
-
Estrarre il codice da GitHub e spostarlo nella directory corretta.
git clone https://github.com/oracle-devrel/technology-engineering.git cd technology-engineering/app-dev/developer-tools-and-lowcode/batch/video-transcoding/ -
Creare un repository in OCI Container Registry (OCIR).

-
Spingere l'immagine del contenitore a OCIR. Il percorso dell'immagine deve corrispondere all'area, allo spazio di nomi della tenancy, al nome del repository e alla tag immagine, ovvero
iad.ocir.io/<tenancy-namespace>/convert_mp4_to_avi:latestdocker build -t <image>:<tag> . docker push <image>:<tag>
-
Crea bucket di storage degli oggetti per i video di input e output.


-
Carica file video nello storage degli oggetti
Task 5. Crea ambiente di task
Un ambiente task è la configurazione runtime per i task. Per impostare un ambiente di task, è necessario:
- Nome
- Descrizione
- Contesto di sicurezza:
- ID utente: imposta su 1
- ID gruppo: imposta su 1
- ID gruppo file system: impostarlo su 1
-
Directory di lavoro: Impostare questo a /video

Task 6. Sottometti job
Esistono vari modi per sottomettere un job al servizio batch. Per questa esercitazione, utilizzeremo l'interfaccia CLI OCI.
- Creare un file denominato
video_conversion_job.json - Copiare e incollare quanto segue in
video_conversion_job.json{ "batchJobPoolId": "JOB_POOL_OCID", "compartmentId": "COMPARTMENT_ID", "description": "Task to convert video from MP4 to AVI format", "displayName": "convert_video", "maxWaitSeconds": 0, "tasks": [ { "batchJobPoolId": "JOB_POOL_OCID", "compartmentId": "COMPARTMENT_ID", "description": "Task to convert video from MP4 to AVI format", "displayName": "convert_video", "maxWaitSeconds": 0, "tasks": [ { "batchTaskEnvironmentId": "TASK_ENVIRONMENT_OCID", "batchTaskProfileId": "TASK_PROFILE_OCID", "description": "Task to convert video from MP4 to AVI format", "environmentVariables": [ { "name": "INPUT_BUCKET", "value": "input_bucket" }, { "name": "INPUT_OBJECT", "value": "input.mp4" }, { "name": "OCI_BUCKET", "value": "output_bucket" }, { "name": "OUTPUT_FILENAME", "value": "output.avi" }, { "name": "OCI_NAMESPACE", "value": "TENANCY_NAMESPACE" }, { "name": "OCI_REGION", "value": "REGION" } ], "fleetAssignmentPolicy": { "type": "BEST_FIT" }, "name": "convert_video", "type": "COMPUTE" } ], "waitForState": [ "ACCEPTED" ], "waitIntervalSeconds": 0Sostituire quanto segue in base all'ambiente in uso:
- ID POOL_JOB
- COMPARTMENT_ID
- TASK_AMBIENTE_OCID
- TASK_PROFILE_OCID
- SPAZIO DI NOMI DELLA TENANCY
- REGION
-
Eseguire il comando riportato di seguito:
oci batch batch-job create --from-json file://video_conversion_job.jsonIl completamento del job richiederà fino a 10 minuti. Osservare il job in OCI Console per vedere in quale fase si trova.
Task 7. Convalida risultati
- Nella console OCI, andare allo storage degli oggetti.
- Trova il bucket di output e verifica se è presente un video transcodificato.
Differenze tra batch OCI e approcci tradizionali
Le soluzioni di elaborazione batch tradizionali spesso richiedono la gestione dell'infrastruttura, la configurazione degli scheduler e la gestione manuale del ridimensionamento. Ciò aumenta la complessità e il sovraccarico operativo. Tuttavia, il batch OCI elimina queste sfide fornendo un ambiente gestito in cui la pianificazione, l'esecuzione e il provisioning delle risorse vengono gestiti automaticamente. Ciò semplifica l'esecuzione di carichi di lavoro su larga scala senza una profonda esperienza nell'infrastruttura.
Procedure consigliate
Per utilizzare il batch OCI in modo efficace, i carichi di lavoro devono essere progettati tenendo presente la scalabilità. La suddivisione di job di grandi dimensioni in task più piccoli consente una migliore esecuzione parallela e prestazioni migliori. È inoltre importante definire profili di task appropriati in modo che le risorse vengano allocate in modo efficiente. La registrazione e il monitoraggio corretti devono essere abilitati per garantire visibilità sull'esecuzione dei job. L'uso di pool di job e priorità consente di garantire che i carichi di lavoro critici vengano eseguiti in tempo, soprattutto negli ambienti condivisi.
Conclusione
Il servizio Batch OCI offre un modo semplificato e scalabile per eseguire carichi di lavoro batch nel cloud. Gestire l'orchestrazione dei lavori, la pianificazione e il provisioning della computazione all'interno di un singolo servizio riduce la complessità operativa e migliora l'efficienza. Per le organizzazioni che si occupano di carichi di lavoro su larga scala e a uso intensivo di computazione, OCI Batch offre una soluzione affidabile e flessibile che consente ai team di concentrarsi sulla consegna dei risultati piuttosto che sulla gestione dell'infrastruttura.
Collegamenti correlati
- OCI Batch Service - Managed Compute Orchestration Engine per carichi di lavoro cloud nativi
- Servizio batch OCI
Conferme
- Autori: Payal Sharma (Senior Cloud Architect), Matthew McDaniel (Staff Cloud Engineer)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Deploy Cloud Native Batch Workloads Using Oracle Cloud Infrastructure Batch Service
G56471-01