Una guía de introducción a AWS Fargate

AWS Fargate es una tecnología que se puede utilizar con Amazon ECS y Amazon EKS. Le permite ejecutar contenedores sin administrar servidores o clústeres de instancias de Amazon EC2.

Fargate elimina la necesidad de configurar, escalar o aprovisionar clústeres de máquinas virtuales para ejecutar contenedores. No habrá necesidad de seleccionar tipos de servidores, programar el escalado de clústeres u optimizar el empaquetado de clústeres.

Podemos utilizar el tipo de lanzamiento de Fargate o un proveedor de capacidad de Fargate para ejecutar sus tareas y servicios de Amazon ECS. Para usar Fargate, puede empaquetar su aplicación en contenedores, especificar el sistema operativo, la CPU y los requisitos de memoria, configurar redes y políticas de IAM y ejecutarla.

No es necesario mantener una capacidad básica de CPU y RAM para alojar contenedores. Podemos decirle a AWS cuántos recursos necesita una tarea y dejar el resto de la tarea a AWS. Cada tarea de Fargate tiene su barrera de aislamiento, por lo que no comparte el núcleo subyacente, la CPU, la memoria o la interfaz de red elástica con otras tareas.

¿Cómo funciona Fargate?

Fargate funciona al permitirle implementar contenedores sin configurar ni administrar la infraestructura que los alojará. Le dice a Fargate qué imágenes de contenedor desea ejecutar y cuántos recursos de CPU y memoria desea asignar. Luego, Fargate aprovisiona automáticamente los servidores host. Cuando sus contenedores están en funcionamiento, solo paga por los recursos utilizados.

Fargate es un motor informático sin servidor, ya que elimina la necesidad de que los usuarios finales administren los servidores que alojan los contenedores. Para ser claros, los servidores todavía están allí; AWS simplemente los administra. Fargate no debe confundirse con AWS Lambda, otro servicio informático sin servidor que no se creó teniendo en cuenta los contenedores (aunque Lamba ahora admite la implementación de imágenes de contenedores).

¿Cómo ayuda Fargate?

AWS Fargate calcula la cantidad exacta de cómputo, memoria y otros recursos necesarios para sus tareas, por lo que no tiene que preocuparse por elegir tipos de instancias o escalar la capacidad del clúster.

Le permite pagar los recursos que necesita para operar sus contenedores a medida que se usan, evitando el sobreaprovisionamiento y pagando por servidores que no necesita.

Las tareas de Fargate (pods) se ejecutan en sus propios kernels, lo que da como resultado un entorno informático seguro y aislado con cargas de trabajo aisladas y mayor seguridad.

Permite que los equipos diseñen y ejecuten aplicaciones utilizando contenedores ECS o EKS sin tener que lidiar con actividades de administración de infraestructura que consumen mucho tiempo, como escalar y asegurar servidores o parchear sistemas operativos.

Con conexiones integradas con otros servicios de AWS como Amazon CloudWatch Container Insights, AWS Fargate ofrece un alto nivel de observabilidad. También puede utilizar varias tecnologías de terceros para recopilar registros y métricas.

También podemos utilizar de manera eficiente la amplia gama de servicios de AWS cuando usamos contenedores con Fargate.

Fargate lanzará y escalará constantemente los recursos informáticos para adaptarse a los requisitos del contenedor, lo que evitará el aprovisionamiento excesivo y garantizará que no pague por los recursos que no utiliza. También puede calcular una estrategia de ahorro, la opción Fargate Spot puede ahorrarle hasta un 70 % de los costos ordinarios, pero solo es óptima para aplicaciones interrumpibles.

Componentes de Fargate

Clústeres

Una agrupación lógica de tareas o servicios es un clúster de Amazon ECS. Los clústeres se pueden utilizar para aislar sus aplicaciones. Cuando usa Fargate para realizar sus tareas, administra los recursos de su clúster.

Definiciones de tareas

Una definición de tarea es un archivo de texto que describe al menos uno de los contenedores de su aplicación. Es un archivo JSON. Se puede utilizar para describir hasta diez contenedores a la vez. La definición de tareas de su aplicación sirve como modelo. Especifica los numerosos parámetros de su aplicación.

Por ejemplo, puede usarlo para definir los parámetros del sistema operativo, los contenedores que se usarán, los puertos que se abrirán para su aplicación y los volúmenes de datos que se usarán con los contenedores en la tarea. Los requisitos de su aplicación determinan los parámetros particulares disponibles para la definición de tareas.

Tareas

Una tarea es una instanciación a nivel de clúster de una definición de tarea. Una vez que haya creado una definición de tarea para su aplicación en Amazon ECS, puede elegir la cantidad de tareas que se ejecutarán en su clúster. Podemos ejecutar una tarea como parte de un servicio o como un proceso separado.

Servicios

En un clúster de Amazon ECS, puede utilizar un servicio de Amazon ECS para ejecutar y mantener la cantidad deseada de tareas simultáneamente. El programador de servicios de Amazon ECS ejecuta otra instancia en función de la definición de su tarea si alguna de sus tareas falla o se detiene por cualquier motivo. Hace esto para reemplazarlo y mantener el número de tareas en el servicio en el nivel correcto.

Sistema operativo y arquitectura de la CPU

Los sistemas operativos compatibles con Fargate son Amazon Linux 2, Windows Server 2019 Full y Windows Server 2019 Core.

ARM y X86_64 son las dos arquitecturas disponibles para la definición de tareas de Amazon ECS. Si usa contenedores de Windows, debe tener una arquitectura de CPU X86_64. Por el contrario, si usa contenedores de Linux, puede usar la arquitectura ARM64 para sus aplicaciones basadas en ARM y la arquitectura de CPU X86_64.

ECS con instancias EC2 vs. ECS con AWS Fargate

En el modelo de instancia EC2, los contenedores se implementan en las instancias EC2 (VM) del clúster. ECS los administra junto con las tareas que forman parte de la definición de la tarea.

Ventajas 👍

  • El tipo de instancia EC2 utilizada aquí está completamente bajo su control.
  • Puede usar instancias puntuales que reducen los costos hasta en un 90%.

Contras 👎

  • Hay que cuidar los parches de seguridad y la seguridad de red de las instancias; además, usted es responsable de su escalabilidad en el clúster.

En el modelo Fargate, ya no necesita preocuparse por las instancias o servidores EC2. Seleccione la configuración de CPU y memoria requerida, y Fargate implementará sus contenedores.

Ventajas 👍

  • No tienes que administrar ningún servidor.
  • AWS es responsable de la disponibilidad y la escalabilidad, pero sigue siendo una buena práctica seleccionar la memoria y la CPU correctas; de lo contrario, nuestra aplicación podría estar en riesgo de no estar disponible.
  • Si decide usar Fargate Spot, puede obtener hasta un 70% de descuento en el precio de Fargate.

Contras 👎

  • ECS con AWS Fargate admite solo un modo de red -awsvpc-. Como resultado, esto limita su control sobre la capa de red.

EKS sin Fargate vs. EKS con Fargate

En EKS sin el modelo Fargate, debe decidir con anticipación qué tamaño debe tener el clúster. Siempre puede cambiar los nodos manualmente más tarde, pero es problemático en comparación con especificar el tamaño ideal desde el principio.

Ventajas 👍

  • Este modelo le brinda más control de varias maneras, ya que puede especificar variables de configuración como HostNetwork y HostPort.
  • Fargate no es compatible con todas las regiones, por lo que prefiere usar EKS sin Fargate si desea que su contenedor esté disponible en más regiones.

Contras 👎

  • EKS sin Fargate es un poco difícil de usar.

En EKS con el modelo Fargate, no tiene que especificar el tamaño de los clústeres de antemano.

Ventajas 👍

  • EKS con Fargate es más seguro porque se ejecutan dentro de máquinas virtuales dedicadas. El hecho de que no admita el modo privilegiado es una característica de seguridad.
  • Es más barato a largo plazo.

Contras 👎

  • Le da menos control de varias maneras

Conclusión

Fargate es una herramienta extremadamente poderosa y madura. Le ahorra costos, tiempo y mucho esfuerzo al hacer toda la administración de la infraestructura por usted. Fargate es especialmente beneficioso si es nuevo en los contenedores y simplemente desea concentrarse en crear su aplicación en lugar de mantenerla.