Opciones para desplegar una aplicación web en Amazon AWS
26 Nov 2020La nube de Amazon (AWS) proporciona diversos servicios para poder desplegar en ella una aplicación web. Comentaremos las distintas formas de hacerlo, yendo desde la más flexible y potente a la más autogestionada o serverless. Estas serán las opciones:
AWS Lightsail
Esta primera opción es el equivalente de Amazon a los VPS (Servidor Privado Virtual) tradicionales. Como cualquier VPS proporcionado por la mayoría de proveedores, las tareas de administración del mismo se dejan en manos del cliente. Amazon lo único que proporciona es una máquina virtual preconfigurada con almacenamiento SSD, memoria RAM, gestión de DNS y una dirección IP estática.
Cuando se crea una máquina con Lightsail, se puede elegir entre diversas plantillas de aplicaciones y sistemas operativos, entre los que se encuentran los siguientes:
- S.O.: Amazon Linux, Ubuntu, CentOS, Windows Server,…
- Aplicaciones: WordPress, Magento, Drupal, Ghost, Plesk, cPanel y WHM,…
- Pilas: Node.js, GitLab, LAMP, MEAN, Nginx, Django,…
Precio
Para servidores Linux o Unix, la tarifa más económica es de 3,5 USD/mes (512 MB RAM, 1 vCPU, 20 GB SSD, 1 TB Transferencia).
Para servidores Windows, la tarifa más económica es de 8 USD/mes (512 MB RAM, 1 vCPU, 30 GB SSD, 1 TB Transferencia).
AWS EC2
Este servicio, denominado Elastic Compute Cloud, es similar a AWS Lightsail, aunque en este caso las instancias (así se llaman estos VPS en EC2) se instalarán dentro de una VPC (Virtual Private Cloud), habilitando así toda la flexibilidad y seguridad que proporcionan las redes internas de AWS.
EC2 también dispone de la posibilidad de usar Auto Escalado, creando y administrando automáticamente grupos de instancias que permitirán el balanceo de carga entre los servidores. De esta forma se consigue una mejor tolerancia a fallos, una mejor disponibilidad y una administración de la infraestructura más sencilla, pues dinámicamente se aumentará o disminuirá el número de instancias en ejecución conforme se vaya necesitando.
De la misma forma que con AWS Lightsail, al crear una instancia se podrá elegir entre las diferentes plantillas de aplicaciones y sistemas operativos proporcionados por Amazon.
Precio
El precio final a pagar por una instancia EC2 depende de muchas variables. La principal a tener en cuenta es el tipo de contrato de la instancia:
- Bajo demanda. Para aplicaciones sin interrupciones. Pago por consumo/hora.
- Instancia de spot. Para aplicaciones que se ejecutan en tramos horarios o puntualmente.
- Savings Plans. Pago por adelantado de 1 ó 3 años.
- Instancias reservadas. Para aplicaciones con estado constante. Pago por adelantado de 1 ó 3 años.
En un contrato bajo demanda se contemplará las siguientes variables: S.O., transferencia de datos, direcciones IP elásticas, Elastic Load Balancing (balanceo de carga), Auto Escalado, CloudWatch (registro de eventos).
Para servidores Linux o Unix (512 MB RAM, 2 vCPU, 30 GB EBS) la tarifa más económica es de 3,3 USD/mes con contrato bajo demanda. La misma configuración con Saving Plan es de 2,5 USD/mes.
La capa gratuita de AWS proporciona una instancia de EC2 durante un año. Esta instancia debe ser de tipo t2.micro, con 1 GB de memoria y 1 CPU virtual.
AWS ECS con lanzamiento EC2
Elastic Container Service es el servicio proporcionado por AWS para alojar contenedores Docker. Utilizando esta opción, Amazon te permite iniciar o detener aplicaciones basadas en contenedores usando llamadas de su API o con AWS CLI, por lo que es ideal para construir arquitecturas de aplicaciones basadas en el modelo de microservicios.
A diferencia de AWS Fargate, esta opción permite que los contenedores utilicen volúmenes Docker.
Como contrapartida, la configuración de este lanzamiento será más compleja que en el modo Fargate, pues se deberá crear la Network que comunique los contenedores con Internet. Para conseguirlo se tendrá que usar una NAT gateway, servicio que conlleva gastos.
Precio
La tarifa más económica es de 2,7 USD/mes (0,25 vCPU, 0,5 GB). Podría conllevar gastos por la NAT gateway.
AWS Fargate
Este tipo de despliegue se considera el más serverless para contenedores Docker, pues el usuario no se tiene que preocupar de la configuración o escalado de los servicios utilizados internamente.
Como solución a la imposibilidad de utilizar volúmenes Docker en esta opción, se deberá usar bind mount como almacenamiento persistente de los contenedores. Fargate también proporciona almacenamiento efímero como almacenamiento no persistente.
Otra alternativa a los volúmenes es utilizar AWS EFS (Elastic File System) en las instancias de contenedor. Para ello habrá que configurar antes el cluster siguiendo estas instrucciones.
Precio
La tarifa más económica es de 9 USD/mes (0,25 vCPU, 0,5 GB).
AWS Lambda
Este servicio es el más cercano a la filosofía serverless en la nube de Amazon. Con él se permite ejecutar código sin aprovisionar ni administrar servidores, ejecutando este código sólo cuando es necesario, y escalando de manera automática.
Entre las diversas aplicaciones que tienen las funciones Lambda se encuentra la de dar respuesta a llamadas HTTP, operando así como backend de una aplicación web.
Para desplegar una aplicación web con AWS Lambda es necesario haberla desarrollado teniendo en cuenta las características y limitaciones de este servicio. Por ejemplo se deberá usar un repositorio para servir los ficheros necesarios, o utilizar un servicio de base de datos independiente de Lambda.
Las funciones Lambda se pueden escribir y ejecutar con diferentes entornos de programación, como Javascript (Node.js), Python, Ruby, Java, Go, C# ó PowerShell.
Precio
El precio de este servicio es muy variable, pues se factura en base al número de solicitudes y a la duración (tiempo necesario para ejecutar el código).
La capa de uso gratuita incluye un millón de solicitudes gratuitas al mes y 400.000 GB/segundos de tiempo de cómputo al mes.
Comentarios