Características de AWS Batch

Con AWS Batch, solo tiene que empaquetar el código de sus trabajos por lotes, especificar sus dependencias y enviar el trabajo por lotes mediante la consola de administración, las CLI o los SDK de AWS. AWS Batch permite especificar los parámetros de ejecución y las dependencias de los trabajos, y facilita la integración con una amplia gama de motores de flujo de trabajo de computación por lotes y lenguajes populares (por ejemplo, Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow y AWS Step Functions). AWS Batch aprovisiona y escala de manera eficiente y dinámica los recursos informáticos de Amazon ECS, Amazon EKS y AWS Fargate con la opción de aprovechar las instancias de spot en función de los requisitos de sus trabajos. AWS Batch proporciona definiciones de entornos informáticos y colas de trabajos predeterminadas que le permiten comenzar a trabajar con rapidez.

AWS Batch en Amazon Elastic Kubernetes Service (EKS)

AWS Batch en EKS administra tanto el escalado de los nodos de Kubernetes como la colocación de los pods en sus nodos. Lo hace a la vez que retiene la gestión y orquestación que ofrece Amazon EKS para otras cargas de trabajo y servicios. AWS Batch puede ejecutar trabajos como pods de Kubernetes de forma segura en sus clústeres de EKS existentes; todo lo que tiene que hacer es especificar los requisitos de vCPU, memoria y cualquier GPU que necesiten sus contenedores, y enviarlos a una cola adjunta a un entorno informático habilitado para el clúster de EKS. AWS Batch administra las colas, el seguimiento de dependencias, los reintentos, la prioridad y el envío de pods en una cola de trabajos. También gestiona el aprovisionamiento de recursos informáticos en su entorno EKS, tanto si utiliza recursos informáticos EC2 como EC2 Spot. Batch se integra con su clúster EKS en un espacio de nombres distinto, lo que significa que no tiene que preocuparse de que los trabajos de AWS Batch interfieran con sus procesos existentes. Batch gestiona la capacidad, lo que incluye la posibilidad de mantener un grupo de nodos en caliente, limitar la capacidad a una determinada cantidad de vCPU, escalar los nodos y ejecutar trabajos en muchos clústeres diferentes, o simplemente ejecutar todos sus trabajos en un único clúster. Batch admite pods independientes como unidad central de trabajo, pero también puede programar sus trabajos en conjunto, a través de conjuntos.

Aprovisionamiento y escalado de recursos informáticos dinámicos

A la hora de utilizar Fargate o Fargate Spot con Batch, solo debe establecer algunos conceptos en Batch (un CE, una cola de trabajos y una definición de trabajo), y contará con una cola, un programador y una arquitectura informática completos sin tener que gestionar ningún componente de la infraestructura informática.

Para los que prefieren instancias EC2, AWS Batch proporciona entornos informáticos gestionados que aprovisionan y escalan de manera dinámica recursos informáticos basados en los requisitos de volumen y recursos de sus trabajos enviados. Puede configurar los entornos informáticos gestionados de AWS Batch con requisitos como el tipo de instancias EC2, las configuraciones de subred de VPC, las vCPU mínimas/máximas/deseadas en todas las instancias y el monto que está dispuesto a pagar por las instancias de spot como un porcentaje del precio de las instancias bajo demanda.

De manera alternativa, puede aprovisionar y administrar sus propios recursos informáticos en los entornos informáticos no administrados de AWS Batch si necesita usar configuraciones diferentes (p. ej., volúmenes EBS de mayor tamaño o un sistema operativo distinto) para sus instancias EC2 de las proporcionadas por los entornos informáticos administrados de AWS Batch. Simplemente necesita aprovisionar instancias de EC2 que incluyan el agente de Amazon ECS y ejecutar versiones compatibles de Linux y Docker. Entonces AWS Batch ejecutará trabajos por lotes en las instancias EC2 que aprovisione.

AWS Batch con Fargate

AWS Batch con recursos informáticos de Fargate le permite contar con una arquitectura completamente sin servidores para sus trabajos por lotes. Con Fargate, cada trabajo recibe la cantidad exacta de CPU y memoria que requiere (dentro de los SKU de Fargate permitidos), por lo que no se desperdicia tiempo de recursos ni se debe esperar a los lanzamientos de la instancia EC2.

Si actualmente es usuario de Batch, Fargate permite una capa adicional de separación de EC2. No hay necesidad de gestionar ni instalar parches para AMI. Cuando envía los trabajos compatibles con Fargate a Batch, no tiene que preocuparse por mantener dos servicios diferentes si tiene cargas de trabajo que se ejecutan en EC2 y otras que se ejecutan en Fargate.

AWS proporciona un programador nativo en la nube completo con una cola gestionada y la capacidad de especificar prioridades, reintentos, dependencias, tiempos de espera y más. Batch gestiona las presentaciones ante Fargate y el ciclo de vida de sus trabajos para que no tenga que hacerlo usted mismo.

Fargate también proporciona ventajas de seguridad que no requieren ningún refuerzo adicional (por ejemplo, cumplimiento de SOX o PCI) y aislamiento entre los recursos informáticos para cada trabajo.

Soporte para cargas de trabajo de HPC estrechamente acopladas

AWS Batch admite los trabajos paralelos de varios nodos, lo que le permite ejecutar trabajos individuales que abarcan varias instancias EC2. Esta característica le permite usar AWS Batch para ejecutar cargas de trabajo de forma fácil y eficiente, como aplicaciones de informática de alto rendimiento (HPC) a gran escala y estrechamente acopladas, o entrenamiento de modelos de GPU distribuidos. AWS Batch también admite Elastic Fabric Adapter, una interfaz de red que le permite ejecutar aplicaciones que requieren altos niveles de comunicación entre nodos a escala en AWS. 

Definiciones de trabajos detalladas y modelado de dependencias de trabajos sencillo

AWS Batch le permite especificar requisitos de recursos, como la vCPU y la memoria, funciones de AWS Identity and Access Management (IAM), puntos de montaje de volúmenes, propiedades de contenedores y variables de entorno, para definir cómo se van a ejecutar los trabajos. AWS Batch ejecuta sus trabajos como aplicaciones en contenedores que se ejecutan en Amazon ECS. Batch también le permite definir dependencias entre distintos trabajos. Por ejemplo, su trabajo por lotes se puede componer de tres fases distintas de procesamiento con diferentes necesidades de recursos. Con las dependencias, puede crear tres trabajos con diferentes requisitos de recursos, de manera que cada trabajo sucesivo dependa del trabajo anterior.

Programación de trabajos basada en prioridades

AWS Batch le permite configurar varias colas con distintos niveles de prioridad. Los trabajos por lotes se almacenan en las colas hasta que se disponga de recursos informáticos para ejecutar el trabajo. El programador de AWS Batch evalúa cuándo, dónde y cómo ejecutar trabajos enviados a una cola en función de los requisitos de recursos de cada trabajo. El programador evalúa la prioridad de cada cola y ejecuta trabajos por orden de prioridad en recursos informáticos óptimos (p. ej., optimizados para memoria o para CPU), siempre y cuando los trabajos no tengan dependencias pendientes.

Compatibilidad con programación de GPU

La programación de GPU permite especificar el número y el tipo de aceleradores que necesitan los trabajos como variables de entrada de definición de trabajos en AWS Batch. AWS Batch ajustará el número de instancias apropiado para sus trabajos en función de la cantidad de GPU requeridas y aislará los aceleradores de acuerdo con las necesidades de cada trabajo, de manera que solo los contenedores correspondientes puedan obtener acceso a ellos.

AWS Batch se puede integrar con lenguajes y motores de flujo de trabajo de código abierto y comerciales, como Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow y AWS Step Functions, lo que le permite utilizar lenguajes de flujo de trabajo conocidos para modelar sus canalizaciones de informática por lotes.

Integración con plantillas de lanzamiento de EC2

La nueva compatibilidad de AWS Batch con las plantillas de lanzamiento de EC2 le permite crear plantillas personalizadas para sus recursos informáticos y posibilita a Batch ajustar la escala de las instancias con dichos requisitos. Puede especificar una plantilla de lanzamiento de EC2 para agregar volúmenes de almacenamiento, especificar interfaces de red o configurar permisos, entre otras capacidades. Las plantillas de lanzamiento de EC2 reducen el número de pasos necesarios para configurar entornos de Batch mediante el registro de parámetros de lanzamiento en un recurso.

Estrategias de asignación flexible

AWS Batch permite a los clientes elegir entre tres métodos de asignación de recursos informáticos. Estas estrategias permiten a los clientes gestionar el rendimiento y el precio cuando decidan cómo debe escalar instancias AWS Batch por ellos.

Ajuste óptimo: AWS Batch selecciona el tipo de instancia que mejor se adapte a los trabajos dando preferencia al tipo de instancia de menor costo. Si no hay instancias adicionales disponibles del tipo de instancia seleccionada, AWS Batch esperará a que estén disponibles. Si no hay suficientes instancias disponibles, o si el usuario llega a los límites del servicio de Amazon EC2, no se ejecutarán trabajos adicionales hasta que finalicen aquellos que se estén ejecutando en ese momento. Esta estrategia de asignación permite que el costo se mantenga en un nivel bajo, aunque puede limitar el escalado.

Ajuste óptimo progresivo: AWS Batch seleccionará tipos de instancia adicionales lo suficientemente grandes como para cumplir los requisitos de los trabajos en la cola, dando preferencia a los tipos de instancia con un costo por unidad vCPU inferior. Si no hay instancias adicionales del tipo que se seleccionó previamente, AWS Batch seleccionará nuevos tipos de instancias.

Capacidad de spot optimizada: AWS Batch seleccionará una o más instancias adicionales lo suficientemente grandes como para cumplir los requisitos de los trabajos en la cola, dando preferencia a aquellos tipos de instancia con menor probabilidad de ser interrumpidas. Esta estrategia de asignación solo está disponible para recursos informáticos de instancias de spot.

Monitoreo y registro integrados

AWS Batch muestra métricas operativas clave para sus trabajos por lotes en la consola de administración de AWS. Puede ver métricas relacionadas con la capacidad informática, así como los trabajos en ejecución, pendientes y completados. Hay disponibles registros de sus trabajos (p. ej., STDERR y STDOUT) en la consola de administración de AWS, que también se escriben en Amazon CloudWatch Logs.

Control de acceso preciso

AWS Batch usa IAM para controlar y monitorear los recursos de AWS a los que sus trabajos pueden acceder, como tablas de Amazon DynamoDB. A través de IAM, también puede definir políticas para distintos usuarios en su organización. Por ejemplo, se puede conceder permiso pleno a los administradores para acceder a cualquier operación de la API de AWS Batch, permisos limitados a los desarrolladores para configurar entornos informáticos y registrar trabajos, y permisos restringidos a los usuarios finales para que solo puedan enviar y eliminar trabajos.

Más información sobre los precios de AWS Batch

Visite la página de precios
¿Listo para crear?
Introducción a AWS Batch
¿Tiene más preguntas?
Contacte con nosotros