Entornos informáticos en AWS Batch: Cómo configurar
Cuando necesite ejecutar modelos de capacitación y análisis complejos con trabajos por lotes a escala, AWS Batching puede ser una buena solución. AWS proporciona un servicio especial para realizar un gran número de operaciones informáticas de forma eficaz y sin sobrecarga de gestión. Esta publicación del blog trata sobre la arquitectura de AWS Batch y los principios de configuración para el procesamiento por lotes.
¿Qué es AWS Batch?
AWS Batch es un servicio en la nube proporcionado por Amazon Web Services (AWS) diseñado para permitir a desarrolladores, ingenieros y científicos ejecutar de manera sencilla y eficaz miles de trabajos de informática por lotes en la nube de AWS. La computación por lotes es una forma de procesar grandes volúmenes de datos dividiendo el trabajo en unidades más pequeñas que pueden procesarse simultáneamente.
AWS Batch simplifica el proceso de implementación, administración y escalado de trabajos de informática por lotes. Aprovisiona automáticamente los recursos informáticos y optimiza su asignación para ofrecer un alto rendimiento a bajo coste. Con AWS Batch, no es necesario instalar ni administrar software de informática por lotes ni clústeres de servidores que tradicionalmente se encargan de estas tareas, lo que facilita la ejecución de trabajos informáticos complejos a escala.
AWS Batch proporciona las siguientes características clave:
- Asignación dinámica de recursos. AWS Batch aprovisiona recursos dinámicamente, incluida la cantidad y el tipo óptimos de recursos informáticos (instancias optimizadas para CPU o memoria) en función del volumen y los requisitos de recursos específicos de los trabajos por lotes enviados.
- Entornosinformáticosgestionados . Puede especificar los recursos informáticos para sus trabajos y AWS Batch administrará la infraestructura subyacente, aumentando o reduciendo la escala según sea necesario para ejecutar los trabajos de la manera más eficiente posible.
- Programación del trabajo. AWS Batch pone en cola los trabajos y planifica y programa su ejecución en función de los recursos informáticos disponibles y la prioridad de los trabajos por lotes. Garantiza que los trabajos de mayor prioridad se completen primero y gestiona las dependencias de ejecución entre trabajos, si las hay.
- Soporte para contenedores. AWS Batch está integrado con Amazon Elastic Container Service (ECS) y es compatible con Docker, lo que le permite empaquetar sus trabajos en contenedores. Esto garantiza que sus entornos informáticos estén aislados y sean coherentes, lo que los hace más seguros y fáciles de gestionar.
- Integración con los servicios de AWS. AWS Batch se puede integrar fácilmente con otros servicios de AWS como Amazon S3, Amazon DynamoDB, Amazon RDS, AWS Lambda, etc., lo que le permite crear arquitecturas de procesamiento por lotes complejas y escalables.
Componentes de AWS Batch
Para comprender mejor el servicio AWS Batch, es importante saber qué componentes principales se utilizan. Los principales componentes de AWS Batch son:
- Definiciones del puesto. Son plantillas que describen cómo deben ejecutarse los trabajos. Una definición de trabajo especifica varias configuraciones relacionadas con el trabajo, como la imagen Docker a utilizar, las vCPUs y requisitos de memoria, el comando a ejecutar, variables de entorno, una estrategia de reintento y volúmenes de datos, entre otras configuraciones. Puede crear varias definiciones de tareas para los distintos tipos de tareas que desee ejecutar.
- Colas de trabajo. Las colas de trabajos son el lugar donde residen los trabajos hasta que se programan para ejecutarse en entornos informáticos. Puede tener varias colas de trabajos para distintos niveles de prioridad (por ejemplo, alta, media, baja) o distintos tipos de trabajos. Los trabajos de la cola se programan en función de su prioridad y del orden de asignación del entorno informático a la cola de trabajos.
- Entornosinformáticos. Los entornos informáticos por lotes de AWS son conjuntos de recursos informáticos que se utilizan para ejecutar trabajos por lotes. Los entornos informáticos pueden ser gestionados y no gestionados.
- Empleos. Los trabajos son las unidades individuales de trabajo que se envían a AWS Batch. Cada trabajo ejecuta una imagen de contenedor Docker, y puede especificar las vCPU, la memoria y otros requisitos para cada trabajo. Los trabajos pueden ser dependientes, lo que significa que un trabajo puede depender de la finalización con éxito de otro u otros trabajos antes de ejecutarse.
- Programación. La programación por lotes de AWS es el proceso que determina cómo se asignan los trabajos a los recursos informáticos. El programador evalúa la cola de trabajos, la prioridad y la disponibilidad de recursos informáticos para ejecutar los trabajos de forma eficiente. AWS Batch scheduler puede optimizar tanto la utilización de los recursos informáticos como el tiempo de finalización del trabajo.
- Funciones lambda (opcionalmente). Aunque no es un componente principal, AWS Lambda se puede utilizar junto con AWS Batch para diversos fines, como la activación de trabajos en respuesta a eventos, el procesamiento de resultados de trabajos o la modificación dinámica de colas de trabajos o entornos informáticos.
Entender los entornos informáticos
Los entornos informáticos de AWS Batch representan la infraestructura informática que ejecuta sus trabajos por lotes. Son esencialmente los entornos donde residen sus recursos informáticos. Puede considerar un entorno informático como un conjunto de recursos informáticos dentro de AWS Batch que el servicio administra y escala para ejecutar los trabajos por lotes enviados. Estos entornos pueden configurarse con tipos específicos de recursos informáticos, definidos por tipos de instancia, u optimizados para tareas informáticas concretas.
Existen dos tipos de entornos informáticos en AWS Batch:
1. Entornosinformáticos gestionados
En este tipo de configuración, AWS administra el entorno informático en su nombre. AWS Batch administra automáticamente el escalado y el aprovisionamiento de los recursos informáticos en función de los requisitos del trabajo. Sólo necesita especificar los tipos de instancia deseados (o rango), las vCPUs mínimas, deseadas y máximas, y otros detalles como la estrategia de asignación. AWS Batch administrará el resto de las tareas, incluida la decisión de aumentar o reducir la escala en función de la carga de trabajo, ajustando automáticamente la cantidad de recursos informáticos en función de la carga de trabajo sin intervención manual.
Este entorno admite dos tipos de instancias: Instancias bajo demanda e instancias puntuales, con la opción de combinarlas para optimizar costes y aumentar la capacidad.
Las ventajas de los entornos informáticos gestionados son:
- Escala automática. AWS Batch puede escalar automáticamente los recursos hacia arriba o hacia abajo en función de los requisitos de la cola de trabajos, lo que ayuda a optimizar los costes y la utilización de los recursos.
- Fácil configuración. Se necesita menos configuración por su parte, ya que AWS administra la infraestructura subyacente, incluidas las instancias y las políticas de escalado.
- Coste-eficacia. Puede aprovechar las Spot Instances enentornosinformáticos gestionados para ahorrar costes en sus trabajos por lotes.
2. Entornos informáticos no gestionados
En un entorno informático no gestionado, usted gestiona sus propios recursos informáticos. Esto significa que usted controla la configuración y el escalado del clúster de instancias EC2 o Spot Instances que ejecutarán sus trabajos por lotes. Esta opción permite un control más detallado del entorno informático, pero requiere un mayor esfuerzo de configuración y gestión por su parte. Es adecuado para situaciones en las que hay configuraciones específicas, AMI (imágenes de máquina de Amazon) personalizadas o necesidades de recursos especializados.
Los atributos clave de los entornos informáticos son:
- Tipos de recursos informáticos. Puede especificar el tipo de instancias que utilizará su entorno. Esto puede ser óptimo (donde AWS Batch selecciona el tipo de recurso automáticamente), tipos de instancia específicos o una combinación que se ajuste a los requisitos de su trabajo.
- Políticas de ampliación. En los entornos administrados, AWS Batch escala dinámicamente los recursos informáticos hacia arriba o hacia abajo en función de los patrones de envío y finalización de trabajos, lo que garantiza una rentabilidad y un rendimiento óptimos.
- Soporte de plantillas de lanzamiento. Puede especificar plantillas de lanzamiento de EC2 para sus entornos informáticos, lo que permite la personalización de instancias EC2 en entornos informáticos gestionados.
- Integración puntual. AWS Batch admite el uso de instancias de subasta de EC2 en entornos informáticos administrados y no administrados, lo que ofrece un ahorro de costos para cargas de trabajo flexibles.
Las ventajas de este tipo de entorno informático son:
- Control total. Usted tiene el control total del entorno informático, incluidos los tipos de instancias y las configuraciones detalladas.
- Personalización. Esto es ideal para requisitos específicos que no puede satisfacer el entorno informático gestionado, ya que permite una mayor flexibilidad en cuanto a tipos de instancias, configuraciones y estrategias de escalado.
- Integración con la infraestructura existente. Si ya tiene entornos configurados o requisitos particulares de seguridad, conformidad o uso de instancias reservadas, un entorno no gestionado podría ser la opción adecuada.
Casos de uso de AWS Batch
AWS Batch puede utilizarse en una amplia gama de escenarios. A continuación se enumeran los casos de uso más comunes en los que AWS Batch proporciona eficiencia y escalabilidad, mostrando su versatilidad en diferentes sectores y aplicaciones.
- Procesamiento y análisis de datos a gran escala. Las organizaciones que trabajan con grandes cantidades de datos, como las de los campos de la genómica, el análisis financiero o la modelización medioambiental, pueden utilizar AWS Batch para procesar grandes conjuntos de datos. El servicio puede gestionar eficazmente los recursos informáticos necesarios para analizar grandes volúmenes de datos en paralelo, reduciendo significativamente el tiempo necesario para procesar y analizar los datos, de horas o días a minutos.
- Formación e inferencia de modelos de aprendizaje automático. Los científicos de datos y los ingenieros de ML pueden emplear AWS Batch para entrenar modelos de aprendizaje automático en grandes conjuntos de datos. AWS Batch puede escalar dinámicamente los recursos informáticos para satisfacer las demandas de diversos trabajos de capacitación, desde el ajuste de modelos a pequeña escala hasta la capacitación de modelos de aprendizaje profundo a gran escala en numerosas GPU. Asimismo, puede gestionar tareas de inferencia por lotes, procesando grandes lotes de solicitudes de inferencia de forma eficiente.
- Tratamiento de imágenes o vídeo. Las empresas de medios de comunicación, los proveedores de contenidos o incluso las instituciones de investigación científica necesitan a menudo procesar grandes colecciones de imágenes o vídeos, ya sea para su renderización, transcodificación o análisis (por ejemplo, análisis de imágenes de satélite para la vigilancia del medio ambiente). AWS Batch puede escalarse para acomodar el procesamiento de miles de archivos simultáneamente, lo que acelera significativamente el flujo de trabajo.
- Cargas de trabajo de simulación y modelización. Para las industrias dedicadas a las simulaciones (farmacéutica, automovilística, aeroespacial, etc.), en las que pueden necesitarse miles de simulaciones para modelar fenómenos físicos complejos o para probar diversos escenarios, AWS Batch permite la ejecución eficiente de estas tareas informáticas intensivas. Garantiza que cada simulación disponga de los recursos informáticos necesarios, lo que puede reducir el tiempo de obtención de resultados de semanas a días u horas.
- Modelización del riesgo financiero. Las instituciones financieras pueden utilizar AWS Batch para ejecutar modelos de riesgo complejos en grandes conjuntos de datos. Al escalar dinámicamente los recursos informáticos, AWS Batch garantiza que las evaluaciones de riesgos, que necesitan analizar grandes cantidades de datos financieros históricos, puedan completarse rápidamente, lo que ayuda a tomar decisiones con rapidez.
- Canalización de pruebas y creación de software. Los equipos de desarrollo de software pueden utilizar AWS Batch para automatizar sus canalizaciones de creación y pruebas. Para proyectos con grandes conjuntos de pruebas o que requieren compilaciones en varias plataformas, AWS Batch puede reducir significativamente los tiempos de finalización mediante la ejecución de pruebas en paralelo y el escalado para satisfacer los picos de demanda.
Guía de instalación paso a paso
Exploremos cómo configurar un trabajo por lotes de AWS, un entorno informático y otros componentes necesarios.
Pasos de preparación
Prepare los roles de AWS que se utilizarán para los trabajos por lotes de AWS:
- Vaya a la consola IAM. Abra la consola de administración de AWS, busque el servicio IAM y ábralo.
- Crear AWSBatchServiceRole:
- En el panel de control de IAM, seleccione Roles y, a continuación, haga clic en Crear rol.
- Seleccione un servicio de AWS como entidad de confianza, seleccione Lote y, a continuación, haga clic en Siguiente: Permisos.
- Adjuntar la política AWSBatchServiceRole. Si no lo ves, búscalo en la barra de búsqueda.
- Haga clic en Siguiente, asigne un nombre a la función (por ejemplo, AWSBatchServiceRole) y créela.
- Crear rol de instancia EC2:
- Repita el proceso de creación de roles, pero esta vez seleccione EC2 como entidad de confianza.
- Adjunte la política AmazonEC2ContainerServiceforEC2Role o cualquier otra política necesaria para su caso de uso.
- Asigne un nombre al rol (por ejemplo, ecsInstanceRole) y créelo.
Acceso a AWS Batch
Escribe batch en el campo de búsqueda de servicios de AWS y haz clic en AWS Batch cuando se muestre este elemento.
Ahora debería abrirse la página del panel de control de AWS Batch.
Creación de un entorno informático
Los entornos informáticos contienen las instancias de contenedor de Amazon ECS en las que se ejecutarán sus trabajos.
Haz clic enEntornos informáticos en la página del panel de control de AWS Batch y, a continuación, pulsa Crear para crear un nuevo entorno informático.
Se abre el asistente Crear entorno informático .
- Configuración delentornoinformático.
- Seleccione una plataforma informática, por ejemplo, Amazon Elastic Compute Cloud (Amazon EC2).
- Elija entre Gestionado y No Gestionado. Los entornos administrados son administrados por AWS, mientras que los entornos no administrados son administrados por usted.
- Rellene el formulario según sus necesidades. Introduzca un nombre para su entorno informático(env01test en este ejemplo). Especifique las funciones creadas en el paso de preparación cuando sea necesario. Alternativamente, puede crear un nuevo rol en esta pantalla si no lo ha creado previamente. Hay consejos útiles para cada campo que le ayudarán a establecer el valor óptimo.
- Configuración de la instancia. Establezca los parámetros vCPU (unidad central de procesamiento virtual) necesarios. Seleccione el tipo de instancia. Puede seleccionar Instancias puntuales o Instancias a petición. Tenga en cuenta que si el parámetro Minimum vCPUs se establece en 0, los recursos de AWS no se desperdiciarán cuando no haya trabajo que realizar (este es el valor recomendado).
- Red. Puedes dejar la configuración por defecto. Si necesita personalizar la configuración de la red, puede seleccionar ID y subredes de VPC existentes o crear otras nuevas.
- Revisión. Compruebe la configuración y guarde su entorno informático. Pulse Crear entorno informático.
Creación de una cola de trabajos
Las colas de trabajos se utilizan para almacenar trabajos: los trabajos residen en una cola de trabajos única. Las colas de trabajos están asociadas a entornos informáticos.
- Crear una cola de trabajos. En el panel de AWS Batch, haga clic en Colas de trabajos y, a continuación, en Crear.
- Seleccione el tipo de orquestación, como Amazon EC2 (Fargate y EKS son otras opciones disponibles).
- Introduzca un nombre para su cola de trabajos y una prioridad (los números más altos tienen mayor prioridad, 1 es el valor por defecto) en la sección de configuración de la cola de trabajos.
- Vincule su cola de trabajos al entorno informático creado en el paso anterior (env01test).
- Haga clic en Crear para finalizar la cola de trabajos.
Creación de una definición de puesto
Las definiciones de trabajo definen cómo se ejecutarán los trabajos. Incluyen la imagen Docker a utilizar, vCPUs, requisitos de memoria y más. Los parámetros de definición del trabajo se pueden anular al ejecutar un trabajo.
Vaya a Job definitions en el panel de control de AWS Batch y haga clic en Create.
- Configuración de la definición del trabajo. Especifique si el trabajo se ejecutará en Amazon EC2, Fargate o Elastic Kubernetes Service. Definir un nombre de definición de trabajo.
- Configure las propiedades del contenedor, incluyendo la imagen, vCPUs, memoria, comando (si existe) y variables de entorno.
- En el rol de ejecución, especifique un rol IAM que tenga los permisos para extraer la imagen Docker y registrar en CloudWatch, si es necesario.
- Pulse Siguiente en cada pantalla para continuar.
- Configuración del contenedor. Seleccione la sintaxis del comando (bash o JSON). Introduzca el comando necesario en el campo de comandos utilizando la sintaxis especificada. Puede seleccionar la configuración del entorno, como el número de vCPU y memoria, y añadir variables de entorno.
- Linux y configuración de registro. Puede configurar Linux y los ajustes de registro, incluida la información de usuario, la configuración del sistema de archivos, la configuración de registro, etc.
- Revisión de la definición del puesto. Comprueba tu configuración. Puede revisar la configuración de la definición del trabajo y copiar el texto de configuración (script). Haga clic en Crear definición de trabajo.
Enviar un trabajo
Ahora que todo está configurado, puede enviar un trabajo, que es una unidad de trabajo ejecutada por AWS Batch.
- Vaya a la sección Empleos y haga clic en Enviar nuevo empleo.
- Establezca la configuración del trabajo. Introduzca un nombre de trabajo. Elija una definición de tarea y una cola de tareas que haya creado anteriormente. Configure otros parámetros adicionales si es necesario.
- Configurar anulaciones de trabajo (opcional).
- Revise la configuración de la tarea y pulse Crear tarea al final.
El trabajo debería activarse en unos segundos y estar en estado de ejecución.
Gestión de entornos informáticos
Puedes monitorizar el progreso del trabajo de AWS Batch en el AWS Batch Dashboard en la sección Jobs(Jobs > Select a job > Details). AWS Batch le permite ver registros en tiempo real, el estado del trabajo y cualquier salida que genere el trabajo.
Puede utilizar las siguientes herramientas de AWS para monitorizar y administrar entornos informáticos:
- Amazon CloudWatch. Utilice esta herramienta para supervisar las métricas y los registros de sus trabajos por lotes y entornos informáticos. Es crucial para comprender el rendimiento de la ejecución del trabajo y depurar problemas.
- AWS CloudTrail. Registre y monitorice las llamadas API a AWS Batch y otros servicios de AWS. Esto ayuda a auditar y rastrear los cambios en los entornos informáticos.
- Explorador de costes de AWS. Utilícelo para supervisar y gestionar los costes asociados a sus entornos informáticos, ayudándole a identificar oportunidades de optimización.
Utilice las prácticas recomendadas para la supervisión:
- Revise periódicamente las métricas y los logs de AWS Batch en CloudWatch para identificar cuellos de botella en el desempeño o recursos infrautilizados.
- Optimice continuamente las definiciones de los trabajos y los entornos informáticos basándose en los datos de rendimiento.
- Considere el uso de AWS Lambda en combinación con AWS Batch para el procesamiento por lotes basado en eventos.
- Manténgase informado sobre las últimas características de AWS y las prácticas recomendadas para AWS Batch y los servicios relacionados.
La administración y optimización de los entornos informáticos en AWS Batch son procesos continuos que implican la monitorización del desempeño, el control de los costos y el ajuste de las estrategias en función de los requisitos cambiantes y las nuevas capacidades de AWS.
Conclusión
AWS Batch es adecuado para una amplia variedad de aplicaciones, desde el procesamiento y la renderización de datos hasta la capacitación de modelos de aprendizaje automático y el modelado financiero. Se trata de un servicio de AWS totalmente administrado. La capacidad de gestionar trabajos por lotes complejos y de alta carga computacional sin necesidad de administrar la infraestructura subyacente convierte a AWS Batch en una potente herramienta para organizaciones que desean utilizar la nube para necesidades informáticas de alto rendimiento. No olvide configurar una copia de seguridad de sus instancias de Amazon EC2 para proteger los datos. NAKIVO Backup & Replication puede ayudarle a proteger eficazmente los datos de EC2.