1. Libros y videos
  2. Arquitectura AWS
  3. Servicios de computación en AWS
Extrait - Arquitectura AWS Diseñe infraestructuras cloud robustas, seguras y evolutivas
Extractos del libro
Arquitectura AWS Diseñe infraestructuras cloud robustas, seguras y evolutivas Volver a la página de compra del libro

Servicios de computación en AWS

Introducción

Detrás de cualquier proyecto en la nube, la cuestión de la computación -es decir, la forma en que se ejecuta el código y se asignan los recursos informáticos- sigue siendo fundamental.

Tanto si es desarrollador, arquitecto o simplemente tiene curiosidad por las tecnologías de AWS, la elección de la solución de computación adecuada influye en el rendimiento, la fiabilidad e incluso en el coste de su aplicación.

En este capítulo, exploramos los principales servicios de computación que ofrece AWS: EC2, ECS, EKS y Lambda. Cada una de estas opciones tiene su propia lógica de uso: por un lado, máquinas virtuales configurables (EC2); por otro, un entorno "sin servidor" en el que no hay que ocuparse de la gestión de los servidores (Lambda). Entre estos dos extremos se encuentran los contenedores gestionados a través de ECS u orquestados mediante Kubernetes (EKS), que ofrecen un equilibrio interesante para la implementación de microservicios portables y escalables.

Comenzaremos con una visión general y, a continuación, profundizaremos en Amazon EC2 y sus buenas prácticas. A continuación, analizaremos el escalado mediante Autoscaling y los equilibradores de carga. Veremos cómo elegir la solución de contenedores adecuada entre ECS, EKS y Fargate y descubriremos el universo "serverless"...

Presentación de las opciones de computación (EC2, ECS, EKS, Lambda)

1. Una breve historia de la computación en AWS

Lanzado al público en 2006, Amazon EC2 (Elastic Compute Cloud) se convirtió rápidamente en el "escaparate" de la nube, permitiendo alquilar potencia de cálculo por horas, que hoy en día se factura por segundos para la mayoría de las instancias de Linux (con un mínimo de 60 segundos), mientras que Windows y algunas distribuciones comerciales siguen facturándose por horas. Esta flexibilidad supuso una ruptura con la compra y la gestión de servidores físicos tradicionales.

Las necesidades han ido evolucionando progresivamente hacia una mayor abstracción, especialmente a través de los contenedores Docker. AWS respondió introduciendo Amazon ECS (Elastic Container Service) y, posteriormente, un servicio gestionado de Kubernetes, Amazon EKS (Elastic Kubernetes Service). Más tarde, apareció el servicio AWS Lambda para permitir la ejecución de código sin necesidad de gestionar servidores, según un modelo "serverless".

Estos cuatro pilares de la computación se pueden resumir de la siguiente manera: 

  • EC2 proporciona máquinas virtuales (VM) que ofrecen un control total.

  • ECS implementa contenedores Docker gestionados por AWS.

  • EKS orquesta contenedores de Kubernetes, pero en AWS.

  • Lambda...

Amazon EC2: funcionamiento y buenas prácticas

EC2 en pocas palabras

Amazon EC2 (Elastic Compute Cloud) permite implementar y configurar máquinas virtuales (instancias) en la nube de AWS. Cada instancia corresponde a unos recursos seleccionados (vCPU, RAM, almacenamiento, ancho de banda de red), que se pueden adaptar entre numerosas categorías (T, M, C, R, G, P, etc.). La facturación se realiza en función del uso y es posible cambiar el tamaño, detener o iniciar las instancias a voluntad.

Históricamente, EC2 es uno de los servicios estrella de AWS, ya que ofrece la posibilidad de hacer de todo en una instancia, a cambio de asumir la carga relacionada con el sistema operativo (parches, seguridad, escalabilidad).

1. Funcionamiento

Para crear una instancia, se selecciona una AMI (Amazon Machine Image) que define el sistema operativo y los paquetes iniciales. A continuación, se elige el tipo de instancia (t2.micro, m5.large, etc.), los parámetros de red (VPC, subred, IP), así como las opciones de seguridad (grupo de seguridad, claves SSH, contraseñas). Tras el lanzamiento, se puede iniciar sesión y configurar libremente la instancia.

images/cap3_pag3.png

Pantalla de creación de una instancia EC2 en AWS

Volúmenes EBS

Por defecto, se suele utilizar un volumen EBS (Elastic Block Store) como disco principal. Se trata de un almacenamiento persistente y cifrable cuyo tamaño y rendimiento varían según los tipos: gp3 (uso general), io2 (uso intensivo) o st1/sc1 (HDD más económico)....

Contenedores: elegir entre ECS, EKS y Fargate

El auge de los contenedores

Docker ha cambiado radicalmente la forma de desplegar aplicaciones. Al agrupar el código, las dependencias y la configuración en una imagen, se garantiza un despliegue idéntico en todos los entornos Docker. Esto simplifica el ciclo de desarrollo y fomenta la portabilidad.

images/cap3_pag5.png

Comparación entre máquinas virtuales y contenedores

En el modelo de máquina virtual, cada aplicación se ejecuta en su propio sistema operativo, a través de un hipervisor, lo que consume más recursos.

En el modelo de contenedores, varias aplicaciones comparten el mismo sistema operativo a través de un motor de contenedores (como Docker), lo que las hace más ligeras, más rápidas de iniciar y más eficientes en cuanto al consumo.

Amazon ECS

Amazon ECS (Elastic Container Service) es un orquestador de contenedores "propios" ofrecido por AWS. Es más sencillo de manejar que Kubernetes. La arquitectura de ECS se basa en definiciones de tareas (task definitions), en las que se especifica la imagen de Docker, los requisitos de memoria y CPU y, posteriormente, se ejecutan estas tareas en un clúster de ECS.

Existen dos modos de ejecución:

  • ECS en EC2, donde se gestiona un clúster de instancias que actúan como hosts para los contenedores.

  • ECS en Fargate, donde ya no hay que gestionar ningún...

AWS Lambda y la arquitectura sin servidor: ejecutar código serverless

La esencia del “serverless”

"Serverless" no significa que no haya servidores, sino que ya no tiene que ocuparse de ellos. Con AWS Lambda, simplemente se escriben funciones (Node.js, Python, Java, Go, etc.), que se suben a AWS y se activan bien manualmente, bien a través de un evento (por ejemplo, la subida de un archivo a S3).

Principios básicos

Una función Lambda es un paquete de código (archivo zip o imagen de Docker) y una configuración (memoria, tiempo máximo de ejecución, variables de entorno). Su ejecución se activa al recibir un evento (adición de un objeto en S3, llamada a API Gateway, mensaje de SQS, etc.). El servicio Lambda gestiona automáticamente la concurrencia y se escala sin intervención manual, con una facturación por milisegundo de ejecución.

Ventajas y limitaciones

La facilidad de uso es uno de sus puntos fuertes, ya que no hay que gestionar máquinas ni parches. El escalado es instantáneo y la facturación, extremadamente precisa. Sin embargo, presenta algunas limitaciones: una duración máxima de ejecución de 15 minutos, un modelo sin estado (stateless) y el riesgo de "arranque en frío" (cold start) en algunos entornos de ejecución.

Ejemplo

En un sitio web en el que los usuarios suben imágenes...

Comparativa entre EC2, ECS, EKS y Lambda: ¿qué servicio se adapta mejor a cada necesidad?

Ahora que hemos detallado estos servicios, es posible combinarlos en una arquitectura más amplia. Por ejemplo, un backend se puede ejecutar en ECS/EKS, las tareas por lotes en instancias Spot de EC2 y las funciones Lambda pueden gestionar eventos específicos.

Modelo

EC2: IaaS

ECS: CaaS de AWS

EKS: Kubernetes gestionado

Lambda: FaaS

Gestión Servidores/SO

Usted gestiona el sistema

En ECS-EC2, gestiona los nodos. En Fargate, no

En EKS-EC2, gestion, a los nodos. En Fargate, no

Sin gestión de servidores

Escalabilidad

Auto scaling group

Programador de ECS + Autoescalado

Kubernetes (HPA, Autoscaler de clúster)

Automático (concurrencia elástica)

Complejidad de la implementación

Bastante baja (servidores "clásicos")

Media (definición de tareas, clúster)

Elevada (curva de aprendizaje de Kubernetes)

Baja a media (empaquetado y desencadenantes)

Casos de uso

Aplicaciones monolíticas, HPC, bases de datos, necesidad de control sobre el sistema operativo

Microservicios Docker, procesamiento por lotes, escenarios sencillos sin K8s

Microservicios complejos, multicloud, clústeres grandes

Funciones basadas en eventos, tareas puntuales

Costes

Instancias de pago continuo

Coste de las instancias (EC2) o del uso (Fargate)

Gastos del plano de control + nodos EC2 o Fargate

Pago por llamada...

Conclusión del capítulo

Los servicios de computación de AWS ofrecen una diversidad que se adapta a una amplia gama de necesidades y competencias. EC2 es la solución más versátil y tradicional y el Autoscaling & Load Balancing son complementos casi imprescindibles. Los contenedores, desplegados en ECS o EKS (con o sin Fargate), desempeñan un papel fundamental en la informática moderna. Por último, AWS Lambda promete un modelo serverless en el que todo se ejecuta bajo demanda, con una facturación muy detallada.

Estos son algunos puntos clave que hay que tener en cuenta:

  • El escalado se ve facilitado por los mecanismos de autoscaling.

  • Es importante no descuidar nunca la seguridad (Security Groups, IAM, patching).

  • Los costes, muy variables, deben supervisarse constantemente para mantenerlos bajo control.

  • Los contenedores ECS/EKS constituyen un paso intermedio natural entre la gestión de servidores EC2 y el modelo "full serverless" de Lambda.

  • El enfoque "serverless", aunque presenta algunas limitaciones, permite centrarse en el código y minimizar el mantenimiento.

  • La mayoría de las organizaciones comienzan con EC2 para una migración rápida y, a continuación, evolucionan hacia microservicios en contenedores a través de ECS o EKS, antes de integrar componentes sin servidor (Lambda, SQS, EventBridge). No existe una opción universal; todo...