Recursos do AWS Batch

Com o AWS Batch, basta empacotar o código dos trabalhos em lote, especificar suas dependências e enviar o trabalho em lote usando o Console de Gerenciamento da AWS, as CLIs ou os SDKs. O AWS Batch permite que você especifique parâmetros de execução e dependências de trabalho, além de facilitar a integração com uma ampla variedade de linguagens e mecanismos conhecidos de fluxo de trabalho de computação em lote (como Pegasus WMS, Luigi Nextflow, Metaflow, Apache Airflow e AWS Step Functions). O AWS Batch provisiona e escala de forma dinâmica e eficiente os recursos de computação do Amazon ECS, Amazon EKS e AWS Fargate com uma opção para usar instâncias Spot com base nos requisitos dos trabalhos. O AWS Batch disponibiliza definições padrão para filas de trabalho e ambiente de computação que permitem que você comece a usar o serviço rapidamente.

AWS Batch no Amazon Elastic Kubernetes Service (EKS)

O AWS Batch no EKS gerencia tanto a escalabilidade dos nós de Kubernetes, quanto o posicionamento dos pods em nós. Ele faz isso retendo o gerenciamento e a orquestração que o Amazon EKS oferece para outros workloads e serviços. O AWS Batch executa trabalhos como pods do Kubernet com segurança nos clusters do EKS existentes. Você só precisa especificar a vCPU, a memória e qualquer outros requisitos de GPU que os contêineres necessitem, e enviá-los à uma fila anexada ao ambiente de computação habilitado pelo cluster do EKS. O AWS Batch gerencia a fila, o monitoramento de dependências, a repetição de tentativas, as prioridades e o envio de pods em uma fila de trabalhos. Ele também gerencia o provisionamento de recursos de computação no ambiente do EKS, independentemente de você usar os recursos de computação EC2 ou EC2 Spot. O Batch se integra ao cluster EKS em um namespace distinto, para que você não precise se preocupar com a interferência dos trabalhos do AWS Batch nos processos existentes. O Batch gerencia a capacidade para você, incluindo a manutenção de um grupo de nós ativo, a limitação da capacidade para um certo número de vCPUs, além de escalar os nós e executar trabalhos em vários clusters diferentes, ou simplesmente executar todos os trabalhos em um único cluster. O Batch é compatível com pods independentes como a unidade principal do trabalho, mas pode também agendar os trabalhos em agregações, por meio de arrays.

Provisionamento e escalabilidade dinâmicos de recursos computacionais

Ao usar o Fargate ou Fargate Spot com o Batch, basta definir alguns conceitos no Batch (um Compute Environment [CE – Ambiente de computação], fila de trabalhos e definição de trabalho) e você terá uma arquitetura completa de fila, programador e computação sem precisar gerenciar nenhuma parte da infraestrutura de computação.

Para quem deseja usar instâncias do EC2, o AWS Batch fornece ambientes gerenciados de computação que provisionam e dimensionam dinamicamente os recursos computacionais com base nos requisitos de volume e recursos dos trabalhos enviados. É possível configurar seus ambientes gerenciados de computação do AWS Batch com requisitos, como tipos de instâncias do EC2, configuração de sub-rede do VPC, os valores mín./máx./desejado de vCPUs entre todas as instâncias e o valor que você está disposto a pagar por instâncias spot como um percentual do preço de instâncias sob demanda.

Como opção, é possível provisionar e gerenciar seus próprios recursos computacionais dentro dos ambientes computacionais não gerenciados do AWS Batch caso seja necessário usar configurações diferentes (ex.: volumes do EBS maiores ou um sistema operacional diferente) para instâncias EC2 do que as disponibilizadas pelos ambientes computacionais gerenciados do AWS Batch. Só é necessário provisionar instâncias EC2 que incluam o agente do Amazon ECS e executem versões compatíveis do Linux e do Docker. Em seguida, o AWS Batch executará trabalhos em lote nas instâncias do EC2 provisionadas.

AWS Batch com Fargate

O uso do AWS Batch com os recursos do Fargate permite que você tenha uma arquitetura totalmente sem servidor para seus trabalhos em lote. Com o Fargate, cada trabalho recebe a quantidade exata de CPU e memória solicitada (conforme os SKU permitidos do Fargate), para que não haja desperdício de tempo de recursos ou a necessidade de aguardar inicializações de instâncias do EC2.

Se já for um usuário do Batch, o Fargate proporciona uma camada adicional de separação do EC2. Não é necessário gerenciar ou aplicar patch em AMIs. Ao enviar para o Batch seus trabalhos compatíveis com o Fargate, não é necessário se preocupar em manter dois serviços diferentes se você tiver cargas de trabalho executadas no EC2 e outras no Fargate.

A AWS fornece um programador nativo da nuvem e completo com uma fila gerenciada e a capacidade de especificar prioridades, novas tentativas, dependências, tempos limites e mais. O Batch gerencia o envio para o Fargate e o ciclo de vida dos seus trabalhos, isentando você de fazer isso.

O Fargate também fornece benefícios de segurança sem nenhum esforço adicional (p. ex., conformidade com SOX, PCI) e isolamento entre recursos de computação para cada trabalho.

Suporte para cargas de trabalho de HPC altamente acopladas

O AWS Batch oferece suporte a trabalhos de vários nós em paralelo, o que permite executar trabalhos únicos que abrangem várias instâncias do EC2. Esse recurso permite usar o AWS Batch para executar com facilidade e eficiência cargas de trabalho, como aplicativos de Computação de Alta Performance (HPC) em escala maior totalmente acoplados e treinamento do modelo de GPU distribuída. O AWS Batch oferece suporte também a Elastic Fabric Adapter, uma interface de rede que permite executar aplicativos que exigem altos níveis de comunicação entre nós em escala na AWS. 

Definições de trabalhos granulares e modelagem simples de dependências de trabalhos

O AWS Batch permite especificar requisitos de recursos específicos, como vCPU e memória, funções do AWS Identity and Access Management (IAM), pontos de montagem de volume, propriedades de contêiner e variáveis de ambiente para definir como os trabalhos devem ser executados. O AWS Batch executa trabalhos como se fossem aplicativos contidos em execução no Amazon ECS. O Batch permite definir dependências entre trabalhos diferentes. Por exemplo, o trabalho em lote pode ser composto por três estágios diferentes de processamento com necessidades de recursos diferentes. Com as dependências, é possível criar três trabalhos com requisitos de recursos diferentes em que cada trabalho sucessivo dependa do trabalho anterior.

Programação de trabalhos com base em prioridade

O AWS Batch permite configurar várias filas com níveis diferentes de prioridade. Os trabalhos em lote são armazenados nas filas até que os recursos computacionais estejam disponíveis para executar o trabalho. O programador do AWS Batch avalia quando, onde e como executar trabalhos que foram enviados para uma fila com base nos requisitos de recursos de cada trabalho. O programador avalia a prioridade de cada fila e executa trabalhos na ordem de prioridades usando os melhores recursos computacionais (por exemplo: memória versus CPU otimizada), contanto que esses trabalhos não tenham dependências pendentes.

Suporte à programação de GPU

A programação de GPU permite que você especifique o número e o tipo de aceleradores necessários para seus trabalhos como variáveis de entrada de definição de tarefa no AWS Batch. O AWS Batch ampliará a escala das instâncias de modo adequado para os seus trabalhos com base no número necessário de GPUs e isolará os aceleradores de acordo com as necessidades de cada trabalho para que somente os contêineres adequados possam acessá-los.

O AWS Batch pode ser integrado a mecanismos e linguagens de fluxo de trabalho comerciais e de código aberto, como Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow e AWS Step Functions, o que permite o uso de linguagens conhecidas de fluxo de trabalho para modelar pipelines de computação em lotes.

Integração com modelos de execução do EC2

Agora, o AWS Batch oferece suporte a modelos de execução do EC2, o que permite criar modelos personalizados para os recursos computacionais e habilitar o Batch a escalar instâncias com esses requisitos. Você pode especificar o modelo de execução do EC2 para adicionar volumes de armazenamento, definir interfaces de rede ou configurar permissões, entre outros recursos. Os modelos de execução do EC2 reduzem o número de etapas necessárias para configurar ambientes do Batch por meio da captura dos parâmetros de execução em um mesmo recurso.

Estratégias de alocação flexíveis

O AWS Batch permite que os clientes escolham três métodos para alocar recursos de computação. Essas estratégias permitem que os clientes considerem o rendimento e o preço ao decidir como o AWS Batch deve escalar as instâncias em seu nome.

Melhor opção: o AWS Batch seleciona um tipo de instância que é a melhor opção para as necessidades dos trabalhos com uma preferência pelo tipo de instância de menor custo. Se instâncias adicionais do tipo de instância selecionado não estiverem disponíveis, o AWS Batch aguardará que as instâncias adicionais estejam disponíveis. Se não houver instâncias suficientes disponíveis ou se o usuário estiver atingindo os service limits do Amazon EC2, trabalhos adicionais não serão executados até que os trabalhos em execução no momento estejam concluídos. Essa estratégia de alocação mantém os custos baixos, mas pode limitar a escalabilidade.

Melhor opção progressiva: o AWS Batch selecionará tipos de instância adicionais que são suficientemente grandes para atender aos requisitos dos trabalhos na fila, com uma preferência pelos tipos de instâncias com menor custo por vCPU unitário. Se instâncias adicionais dos tipos selecionados anteriormente não estiverem disponíveis, o AWS Batch selecionará novos tipos de instâncias.

Capacidade de spot otimizada: o AWS Batch selecionará um ou mais tipos de instâncias que são suficientemente grandes para atender aos requisitos dos trabalhos na fila, com uma preferência pelos tipos de instâncias com menor propensão de serem interrompidos. Essa estratégia de alocação só está disponível para recursos de computação de instâncias spot.

Monitoramento e registro em logs integrados

O AWS Batch exibe métricas operacionais essenciais para seus trabalhos em lote no Console de Gerenciamento da AWS. É possível ver métricas relacionadas à capacidade computacional, como também aos trabalhos em execução, pendentes e concluídos. Os logs dos trabalhos (ex.: STDERR e STDOUT) estão disponíveis no Console de Gerenciamento da AWS e também estão gravados no Amazon CloudWatch Logs.

Controle de acesso minucioso

O AWS Batch usa o IAM para controlar e monitorar os recursos da AWS que seus trabalhos podem acessar, como as tabelas do Amazon DynamoDB. Por meio do IAM, também é possível definir políticas para usuários diferentes na sua organização. Por exemplo, administradores podem receber permissões de acesso total para qualquer operação de API do AWS Batch, desenvolvedores podem ter permissões limitadas relacionadas à configuração de ambientes computacionais e ao registro de trabalhos e os usuários finais podem ficar restritos às permissões necessárias para enviar e excluir trabalhos.

Saiba mais sobre a definição de preço do AWS Batch

Acesse a página de definição de preço
Pronto para criar?
Comece a usar o AWS Batch
Mais dúvidas?
Entre em contato conosco