¿Vas a iniciar un nuevo proyecto o tal vez estás a punto de desarrollar nuevas funcionalidades? Antes de emprender cualquier acción, vale la pena informarse lo mejor posible sobre las distintas herramientas externas que pueden serle útiles.
Dos servicios básicos y probablemente los más populares de AWS son EC2 y S3. En pocas palabras: con EC2 puedes configurar tu proyecto y mostrarlo al mundo, mientras que S3 se utiliza para almacenar los datos de cualquier tipo. Sin embargo, en este artículo me gustaría echar un vistazo a otras herramientas de AWS más o menos populares que normalmente utilizamos aquí, en Codest.
Cloudfront
Es una herramienta especialmente creada para una entrega muy rápida de recursos a muchos usuarios. Y muchos no significa cientos o miles sino millones de peticiones para un solo recurso. Por ejemplo, usted quiere permitir colocar su gráfico, css, html o javascript en cualquier página. También quieres tener un impacto total en el contenido que el recurso proporciona - necesitas cambiar algo y quieres que este cambio ocurra en todas las páginas con tu archivo. Y aquí entra AWS Cloudfront, con todas sus capacidades, que hará que el usuario final reciba tu recurso lo antes posible.
Cloudfront también ofrece una serie de estadísticas. Por ejemplo - páginas, que más se han solicitado, dispositivos, la solicitud de recurso se han hecho con, estados http, etc.
Por supuesto, esta herramienta es bastante cara, pero cuantas más peticiones al cloudfront se hagan, menos pagará por el servicio. Por lo tanto, usted debe considerar esta solución en caso de que desee colocar el recurso en los sitios web con tráfico muy grande o incluso enorme.
Lote
En pocas palabras, se trata de un servicio que permite ejecutar un gran número de trabajos directamente en AWS. Todo lo que tienes que preparar es un script de ejecución y una imagen docker, mientras que AWS Batch hará el resto. Batch creará instancias en EC2 de forma dinámica, asignará un lugar adecuado para los trabajos y los lanzará al mismo tiempo. No tienes que preocuparte de que tu instancia EC2 se quede sin espacio o memoria, o que tengas que pensar constantemente cuándo y cómo se puede iniciar el trabajo. Para la comunicación entre el script en la imagen docker y tu servicio puedes simplemente crear la API y listo. Si quieres utilizar Batch también debes preparar tu repositorio docker en el servicio Amazon Elastic Container Registry (ECR).
También merece la pena mencionar otro servicio que se beneficia de los contenedores Docker. Se llama Elastic Container Service (ECS). Su principal diferencia con respecto a Batch es que usted mismo tiene que configurar y escalar la instancia EC2, mientras que Batch hace todo el trabajo por usted. Los costes de Batch dependen de las instancias EC2 que se permita utilizar, ya que, en este caso, sólo se paga por las instancias en ejecución.
Lambda
AWS Batch realiza el trabajo lanzando imágenes Docker, mientras que el siguiente servicio, AWS Lambda, permite ejecutar el script directamente. No es necesario configurar ningún servidor, los código se ejecuta virtualmente, y lo que es aún mejor, también puede devolver algún valor de la forma que desee.
¿Cuándo se puede utilizar? Supongamos que queremos hacer algunos cálculos en nuestra web basados en parámetros del navegador, y puede que, además, estos cálculos requieran algunas consultas extra a otros lugares de la web. En este caso, todo lo que necesitas hacer es crear un endpoint en Lambda, añadir tu script y usar este endpoint en la web. Es realmente sencillo.
Los costes de Lambda sólo se contabilizan cuando el script se está ejecutando, cuando el endpoint no se utiliza, no pagas nada.
SNS
Simple Notification Service, como su nombre indica, es una herramienta especialmente desarrollada para enviar notificaciones. Se puede utilizar fácilmente para la comunicación entre varios servicios de AWS. Por ejemplo, tienes un grupo de microservicios y quieres que uno de ellos dirija a los demás - iniciar algunos de ellos o ejecutar algunas acciones. En este caso concreto, puedes enviar una notificación desde el servicio principal y gestionar la recepción de mensajes en otro de los microservicios que prefieras. Por cierto, también vale la pena mencionar Amazon Simple Queue Service (SQS), que puede crear una conexión muy interesante junto con SNS.
En el caso de SNS (así como de SQS), sólo se paga por las solicitudes ejecutadas: envío de mensajes a SNS, envío de mensajes de SNS a otros servicios y otras solicitudes adicionales del conjunto de API de SNS.
RDS
Amazon Relational Database Service no es más que una base de datos externa. Con este servicio, AWS permite configurar, utilizar y escalar fácilmente una base de datos relacional. Por ejemplo, si esperas que tu base de datos tenga un tamaño considerable y crezca más y más cada día, y planeas realizar regularmente operaciones más o menos complejas con ella, por ejemplo, procesar y copiar datos a otra base de datos, merece la pena considerar esta solución. Los motores de bases de datos disponibles son PostgreSQL, MySQL y MariaDB.
Es fácil adivinar que los costes de RDS están relacionados con el tamaño de la base de datos y su uso, por lo que es difícil decir si va a ser muy caro o no.
Resumen
AWS cambia constantemente, ya sea para mejorar los servicios existentes o para crear algo nuevo. No solo es preferible mantenerse al día de sus innovaciones tecnológicas, sino también conocer lo ya existente.
Enlaces útiles