Características de AWS Batch

¿Por qué AWS Batch?

Con AWS Batch, solo empaqueta el código de sus trabajos por lotes, especifica sus dependencias y envía el trabajo por lotes mediante la Consola de administración, las CLI o los SDK de AWS. Una vez que especifique los parámetros de ejecución y las dependencias del trabajo, AWS Batch facilita la integración con una amplia gama de motores de flujo de trabajo informático 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 eficaz y dinámica los recursos informáticos de Amazon Elastic Container Service (ECS), Amazon Elastic Kubernetes Service (EKS) y AWS Fargate, con la opción de utilizar instancias bajo demanda o instancia de spot en función de los requisitos del trabajo. AWS Batch proporciona colas de trabajos y definiciones de entornos informáticos predeterminados para que pueda comenzar a trabajar con rapidez.

Definiciones de trabajo

Los trabajos con varios contenedores son una característica que facilita y acelera la ejecución de simulaciones a escala al probar sistemas complejos, como los que se utilizan en vehículos autónomos y robótica. Con la capacidad de ejecutar trabajos con varios contenedores, se beneficia de las capacidades avanzadas de escalado, programación y optimización de costos de AWS Batch, sin necesidad de reconstruir todo el sistema en un contenedor monolítico complejo. En su lugar, puede usar varios contenedores modulares más pequeños, cada uno de los cuales represente diferentes componentes del sistema como un entorno virtual en 3D, sensores de percepción robótica o un sidecar de registro de datos. Los trabajos con varios contenedores aceleran los tiempos de desarrollo al reducir los pasos de preparación del trabajo y eliminan la necesidad de crear herramientas internas adicionales. La ejecución de trabajos de simulación con varios contenedores también simplifica el desarrollo de software (Dev) y las operaciones de TI (Ops) al definir la responsabilidad de los componentes para que los diferentes equipos puedan encontrar y corregir errores en el componente de su equipo sin distraerse con los componentes del otro equipo.

AWS Batch admite los trabajos paralelos de varios nodos para que pueda ejecutar trabajos individuales que abarcan varias instancias de EC2. Con esta característica, puede utilizar AWS Batch para ejecutar cargas de trabajo de manera eficiente como aplicaciones de computación 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 donde puede ejecutar aplicaciones que requieren altos niveles de comunicación entre nodos a escala en AWS.

Con AWS Batch puede 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 ejecutan los trabajos. AWS Batch ejecuta sus trabajos como aplicaciones en contenedores en Amazon ECS.  También puede definir dependencias entre diferentes trabajos. Por ejemplo, su trabajo por lotes se puede componer de tres fases 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.

Integraciones

AWS Batch se puede integrar a motores de flujo de trabajo comerciales y de código abierto como Pegasus WMS, Luigi, Nextflow, Metaflow, Apache Airflow y AWS Step Functions, de modo que puede usar lenguajes de flujo de trabajo conocidos para modelar sus canalizaciones de computación por lotes.

AWS Batch ahora admite plantillas de lanzamiento de EC2, por lo que puede crear plantillas personalizadas para sus recursos informáticos mientras Batch escala las instancias para cumplir con sus requisitos. Puede especificar la plantilla de lanzamiento de EC2 para agregar volúmenes de almacenamiento, seleccionar interfaces de red o configurar permisos, entre otras funciones. 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.

 

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 métricas para los trabajos en ejecución, pendientes y completados. Los registros de sus trabajos (por ejemplo, STDERR y STDOUT) están disponibles en la consola y también se escriben en los Registros de Amazon CloudWatch.

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.

Entornos informáticos

AWS Batch puede ejecutar sus trabajos por lotes en los clústeres de Amazon EKS existentes. Usted especifica los requisitos de vCPU, memoria y GPU que necesitan sus contenedores y, a continuación, los envía a una cola conectada a un entorno informático habilitado para clústeres de EKS. AWS Batch administra tanto el escalado de los nodos de Kubernetes como la colocación de los pods en sus nodos. Además, AWS Batch administra las colas, el seguimiento de dependencias, los reintentos de trabajos, la priorización y el envío de pods, y ofrece soporte para las instancia de spot y bajo demanda de Amazon Elastic Compute Cloud (EC2). AWS Batch también se integra a su clúster de EKS en un espacio de nombres distinto, por lo que no tiene que preocuparse de que los trabajos por lotes interfieran en sus procesos actuales. Por último, AWS Batch administra la capacidad por usted, lo que incluye mantener un grupo activo de nodos, limitar la capacidad a una cantidad determinada de vCPU, escalar nodos y ejecutar trabajos en un solo clúster o en varios clústeres.

AWS Batch con recursos de Fargate le ofrece una arquitectura completamente sin servidor 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 de EC2.

Si actualmente es usuario de AWS Batch, Fargate permite una capa adicional de separación de las instancias de EC2. No es necesario administrar ni aplicar parches a las imágenes de máquina de Amazon (AMI). Cuando envía los trabajos compatibles con Fargate a Batch, no tiene que preocuparse por mantener dos servicios diferentes si tiene algunas cargas de trabajo que se ejecutan en Amazon EC2 y otras que se ejecutan en Fargate.

AWS proporciona un programador basado en la nube completo con una cola administrada y la capacidad de especificar prioridades, reintentos de trabajo, dependencias, tiempos de espera y más. AWS Batch administra 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.

Programación

Con AWS Batch puede 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 ejecutarlos. 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 (por ejemplo, optimizado para la memoria en comparación con optimizado para CPU), siempre y cuando los trabajos no tengan dependencias pendientes.

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. A continuación, AWS Batch escala verticalmente las instancias apropiadas 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 acceder a ellos.

Escalado

A la hora de utilizar Fargate o AWS Fargate con AWS Batch, solo debe establecer algunos conceptos en Batch (un entorno informático, 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 administrar ningún componente de la infraestructura informática.

Para los que prefieren instancias de EC2, AWS Batch proporciona entornos informáticos administrados 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 administrados 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 (por ejemplo, volúmenes EBS de mayor tamaño o un sistema operativo distinto) para sus instancias de EC2 de las proporcionadas por los entornos informáticos administrados. Solo 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 de EC2 que aprovisione.

Con AWS Batch, puede elegir tres métodos de asignación de recursos informáticos. Estas estrategias le permiten tener en cuenta el rendimiento y el precio a la hora de decidir cómo debe escalar AWS Batch las instancias para usted.

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 llega a los límites del servicio de Amazon EC2, no se ejecutarán los 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.