Caratteristiche di AWS Batch

AWS Batch permette di creare pacchetti di codice per i processi batch, specificarne le dipendenze e inoltrare tali processi tramite la Console di gestione AWS, le interfacce a riga di comando e i kit SDK. Con Batch AWS puoi specificare parametri di esecuzione e dipendenze di processi, facilitando l'integrazione con un'ampia gamma di motori di flusso di lavoro e linguaggi di elaborazione batch comuni (ad esempio Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow e AWS Step Functions). Batch AWS effettua il provisioning e scala risorse di calcolo di Amazon ECS, Amazon EKS e AWS Fargate in modo efficiente e dinamico, con la possibilità di utilizzare istanze spot in base ai requisiti dei processi in corso. Batch AWS fornisce code di processi predefinite e definizioni dell'ambiente di elaborazione con cui iniziare a lavorare rapidamente.

Batch AWS su Amazon Elastic Kubernetes Service (EKS)

Batch AWS su EKS gestisce sia il dimensionamento dei nodi Kubernetes, sia la collocazione di pod all'interno dei nodi. Esegue queste operazioni mantenendo la gestione e l'orchestrazione che Amazon EKS offre per altri carichi di lavoro e servizi. Batch AWS può eseguire processi come pod Kubernetes in modo sicuro nei cluster EKS esistenti: è sufficiente specificare la vCPU, la memoria ed eventuali requisiti GPU necessaria per i container, inviare le informazioni a una coda collegata a un ambiente di calcolo con abilitazione a cluster EKS. Batch AWS gestisce l'accodamento, il tracciamento delle dipendenze, i nuovi tentativi, le priorità e l'invio di pod in una coda di processi. Gestisce anche il provisioning delle risorse di calcolo nell'ambiente EKS, che tu stia utilizzando risorse di calcolo EC2 o EC2 Spot. Batch integra il cluster EKS in uno spazio dei nomi diverso, il che significa che non devi preoccuparti che i processi di Batch AWS interferiscano con i processi esistenti. Batch gestisce la capacità al posto tuo, compresa l'abilità di mantenere un warm pool di nodi, limita la capacità a una certa quantità di vCPU, scala i nodi ed esegue processi in molti cluster diversi, o esegue semplicemente tutti i processi in un singolo cluster. Batch supporta pod indipendenti come unità di base del lavoro, ma può anche programmare i processi in forma aggregata tramite array.

Provisioning e dimensionamento dinamici delle risorse di calcolo

Quando utilizzi Fargate o Fargate Spot con Batch, devi configurare in Batch solo pochi concetti (CE, coda processi e definizione di processo) per avere una coda, un sistema di pianificazione e un'architettura di calcolo completi senza dover gestire una singola parte dell'infrastruttura di calcolo.

Se si desiderano istanze EC2, AWS Batch fornisce ambienti di elaborazione gestiti che effettuano il provisioning e ricalibrano automaticamente le risorse di calcolo in base ai volumi e ai requisiti dei lavori inoltrati. Puoi configurare gli ambienti di elaborazione gestiti di AWS Batch con requisiti come il tipo di istanze EC2, le configurazioni della sottorete VPC, il numero minimo/massimo/desiderato di vCPU in tutte le istanze e l'importo che sei disposto a pagare per le istanze Spot in percentuale del prezzo dell'istanza on demand.

In alternativa, è possibile effettuare il provisioning e gestire le risorse di elaborazione all'interno di ambienti di elaborazione non gestiti di AWS Batch quando è necessario utilizzare configurazioni di istanze EC2 diverse da quelle fornite dagli ambienti di elaborazione gestiti, ad esempio volumi EBS di dimensioni maggiori oppure sistemi operativi differenti. È sufficiente effettuare il provisioning di istanze EC2 che includano l'agente di Amazon ECS ed eseguano versioni supportate di Linux e Docker. AWS Batch eseguirà processi batch sulle istanze EC2 assegnate.

AWS Batch con Fargate

AWS Batch con risorse Fargate consente di avere un'architettura completamente serverless per i processi batch in corso. Con Fargate, ogni processo riceve l'esatta quantità di CPU e memoria richieste (entro gli SKU di Fargate consentiti), in modo che non vi sia alcuno spreco di tempo di risorse o la necessità di attendere l'avvio di un'istanza EC2.

Agli utenti correnti di Batch, Fargate consente un livello di separazione da EC2 aggiuntivo. Non esiste alcuna necessità di gestire o aggiornare le AMI. Quando invii a Batch processi compatibili con Fargate, non devi preoccuparti di gestire due servizi diversi, se alcuni carichi di lavoro vengono eseguiti su EC2 e altri su Fargate.

AWS fornisce un sistema di pianificazione completo nativo per il cloud con una coda gestita e la capacità di specificare priorità, nuovi tentativi, dipendenze, timeout e altro ancora. Batch gestisce l'invio a Fargate e il ciclo di vita dei processi automaticamente.

Fargate offre anche vantaggi in termini di sicurezza che non richiedono alcuno sforzo aggiuntivo (ad esempio, conformità SOX, PCI) e isolamento tra le risorse di calcolo per ogni processo.

Supporto per carichi di lavoro HPC strettamente accoppiati

AWS Batch supporta processi paralleli a più nodi; ciò consente di eseguire processi singoli che si possono estendere a più istanze EC2. Questa funzione consente di utilizzare AWS Batch per eseguire in modo semplice ed efficiente i carichi di lavoro come le applicazioni High Performance Computing (HPC) su larga scala e strettamente interdipendenti o i training del modello GPU distribuito. AWS Batch supporta inoltre Elastic Fabric Adapter, un'interfaccia di rete che consente di eseguire applicazioni che richiedono elevati livelli di comunicazione tra nodi su larga scala su AWS. 

Definizioni di processo granulari e modellizzazione di dipendenze di processi semplificata

AWS Batch permette di specificare i requisiti delle risorse, ad esempio vCPU e memoria, ruoli AWS Identity and Access Management (IAM), punti di montaggio del volume, proprietà dei container e variabili di ambiente per definire le modalità di esecuzione dei processi. AWS Batch esegue i processi come applicazioni in container in esecuzione su Amazon ECS. Batch consente inoltre di definire dipendenze tra diversi processi. Ad esempio, un processo batch può essere composto da tre diverse fasi di elaborazione con esigenze di risorse diverse. Mediante le dipendenze, è possibile creare tre processi consecutivi e interdipendenti che richiedono risorse differenti.

Pianificazione di processi basata su priorità

AWS Batch permette di impostare più code con diversi livelli di priorità. I processi in batch vengono inseriti nelle code finché le risorse di calcolo necessarie non sono disponibili. La funzione di pianificazione di AWS Batch stima quando, dove e come eseguire i processi inoltrati a una coda in base ai requisiti di ciascun processo. Questa funzione valuta la priorità di ciascuna coda ed esegue i processi in ordine di priorità su risorse di calcolo ottimali (ad esempio memoria o CPU ottimizzata), ammesso che non prevedano dipendenze in attesa.

Supporto per la pianificazione GPU

La pianificazione della GPU permette di specificare il numero e il tipo di acceleratori che le attività richiedono come variabili di input per la definizione dei processi in AWS Batch. AWS Batch ridimensiona le istanze adatte ai tuoi lavori in base al numero richiesto di GPU e isola gli acceleratori in base alle esigenze di ciascun lavoro, affinché solo i container corretti possano accedervi.

AWS Batch può essere integrato con linguaggi e motori di flusso di lavoro commerciali e open source quali Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow e AWS Step Functions, permettendo di utilizzare linguaggi di flusso di lavoro familiari per modellare le pipeline di elaborazione batch.

Integrazione con i modelli di lancio EC2

AWS Batch supporta ora modelli di lancio EC2 che consentono di creare modelli personalizzati per le risorse di calcolo nonché di abilitare batch per ricalibrare le istanze in base ai requisiti stabiliti. Tra le diverse funzionalità offerte, vi sono la possibilità di specificare il modello di lancio EC2 per aggiungere volumi di storage e interfacce di rete o la configurazione di autorizzazioni. I modelli di lancio EC2 riducono il numero di passaggi necessari per configurare gli ambienti batch tramite l'acquisizione di parametri di lancio all'interno di una risorsa.

Strategie di allocazione flessibili

AWS Batch consente ai clienti di scegliere tre metodi per allocare le risorse di calcolo. Tali strategie consentono ai clienti di tenere conto sia del throughput che del prezzo quando decidono come AWS Batch dovrebbe scalare le istanze per conto loro.

Migliore adattamento: AWS Batch seleziona un tipo di istanza che si adatta meglio alle esigenze dei processi, dando priorità al tipo di istanza più economico. Se non sono disponibili ulteriori istanze del tipo di istanza selezionato, AWS Batch attenderà la disponibilità delle istanze aggiuntive. Se non sono disponibili sufficienti istanze o se l'utente sta raggiungendo i limiti del servizio Amazon EC2, non verranno eseguiti lavori aggiuntivi prima che vengano completati i lavori attualmente in esecuzione. Questa strategia di allocazione mantiene i costi più bassi ma può limitare il dimensionamento.

Migliore adattamento progressivo: AWS Batch selezionerà altri tipi di istanza sufficientemente grandi da soddisfare i requisiti dei processi in coda, dando priorità ai tipi di istanza con un costo inferiore per unità vCPU. Se non sono disponibili ulteriori istanze dei tipi di istanza precedentemente selezionati, AWS Batch selezionerà nuovi tipi di istanza.

Capacità spot ottimizzata: AWS Batch selezionerà uno o più tipi di istanza sufficientemente grandi da soddisfare i requisiti dei processi in coda, dando priorità ai tipi di istanza che hanno meno probabilità di essere interrotti. Questa strategia di allocazione è disponibile solo per le risorse di calcolo dell'istanza Spot.

Registrazione di log e monitoraggio integrati

I parametri operativi chiave dei processi in batch di AWS Batch sono disponibili nella Console di gestione AWS. È possibile consultare i parametri relativi a capacità di elaborazione e a processi in esecuzione, in attesa e completati. I log dei processi (ad esempio STDERR e STDOUT) sono disponibili nella Console di gestione AWS e vengono anche memorizzati tramite Amazon CloudWatch Logs.

Controllo granulare degli accessi

AWS Batch usa IAM per controllare e monitorare le risorse AWS a cui i processi possono accedere, ad esempio le tabelle Amazon DynamoDB. Tramite IAM, puoi anche definire le policy per singoli utenti nell'organizzazione. Ad esempio, gli amministratori potranno avere autorizzazioni di accesso complete a qualsiasi operazione API di AWS Batch, gli sviluppatori avranno autorizzazioni limitate alla configurazione degli ambienti di elaborazione e alla registrazione dei processi, mentre gli utenti finali potranno solamente inoltrare ed eliminare processi.

Ulteriori informazioni sui prezzi di AWS Batch

Visita la pagina dei prezzi
Ti senti pronto?
Inizia a usare AWS Batch
Hai altre domande?
Contattaci