Despliegue de Aplicaciones Serverless con AWS y Node/Python

Clase 18 de 21Curso de Introducción a DevOps

Resumen

Desplegar aplicaciones sin preocuparte por servidores suena ideal, y con las herramientas correctas es totalmente posible. Aquí se explica paso a paso cómo construir pipelines de despliegue para aplicaciones Serverless usando CodePipeline, CodeBuild, Terraform y el framework Serverless, tanto para Node como para Python.

¿Qué significa Serverless y por qué importa para tus despliegues?

El término Serverless puede resultar confuso porque literalmente significa "sin servidor", pero los servidores sí existen [01:00]. La diferencia clave es que tú, como desarrollador o empresa, no administras esos servidores. No te preocupas por la memoria, el procesador o si el servidor se cae. Todo eso queda en manos de la plataforma cloud donde consumes los servicios.

Para construir un pipeline que despliegue aplicaciones Serverless se utilizan los mismos componentes vistos anteriormente: CodePipeline, CodeBuild, BitBucket y permisos de Amazon, junto con un bucket de S3 [01:34]. Sin embargo, se agrega un elemento fundamental: el framework Serverless.

Este framework es compatible con AWS y permite crear infraestructura de forma similar a Terraform, pero está especializado en servicios Serverless como AWS Lambda [02:05]. Lambda funciona como un procesador de funciones, algo así como un backend muy pequeño que no requiere servidor. El flujo es sencillo:

  • Se crea la infraestructura con el framework Serverless.
  • Se compila la aplicación.
  • Se coloca el código dentro de esa infraestructura.

¿Cómo se estructura el pipeline de Node con Serverless?

Al recibir los repositorios del equipo de desarrollo, lo primero que destaca es el archivo serverless.yaml presente en cada proyecto [03:01]. Este archivo define la infraestructura como código, indicando qué recursos crear en AWS. Por ejemplo, en el caso de Node el runtime especifica Node, mientras que en Python indica Python. Cada proyecto necesita un nombre diferente para evitar conflictos al desplegarlos simultáneamente.

Dentro de Terraform, la configuración del pipeline de Node es prácticamente idéntica al pipeline de frontend que se construyó en clases anteriores [04:22]:

  • Se define un nombre y un rol.
  • Se configura cómo se levanta CodeBuild.
  • Se apunta al BuildSpec correspondiente.

El archivo BuildSpec de Node contiene solo dos comandos esenciales [05:07]:

  • npm install para instalar el framework Serverless con una versión específica.
  • serverless deploy para ejecutar el despliegue.

La conexión con el repositorio en BitBucket se realiza mediante CodeStar, apuntando al repositorio llamado serverless-node y a la rama master [05:55]. Una vez configurado, se ejecutan los comandos de Git habituales: git add, git commit y git push origin master.

¿Cómo verificar que el despliegue de Lambda fue exitoso?

Después de que el pipeline completa sus tres pasos, se debe ir a la sección de funciones Lambda en la consola de AWS [07:16]. El nombre del recurso está definido en el archivo serverless.yaml, en este caso algo como AWS Node Nuevo. Al buscar ese nombre y revisar el código desplegado, se compara directamente con el archivo handler del repositorio para confirmar que el contenido es idéntico [08:12].

¿Qué cambia al desplegar Serverless con Python?

La estructura del proyecto Python es bastante diferente a la de Node [08:43]. Incluye un archivo app.py que funciona como un pequeño servidor web con respuestas definidas. Sin embargo, la configuración del pipeline en Terraform es casi la misma: solo cambian el nombre, el BuildSpec a utilizar y el repositorio de destino.

El BuildSpec de Python tiene un comando adicional [09:32]: la instalación de un plugin que el framework Serverless necesita para trabajar con Python. Aunque el comando de despliegue sigue siendo serverless deploy, cada lenguaje tiene sus particularidades que requieren adaptaciones mínimas.

¿Por qué el lenguaje no importa tanto como el proceso?

A lo largo del curso se han desplegado cuatro tipos de recursos: infraestructura, un frontend en Angular, una aplicación Serverless en Node y otra en Python [10:19]. La lección principal es que no importa tanto el lenguaje, sino la metodología de despliegue. Los archivos de Terraform están disponibles en los recursos para replicar todo el proceso en tu propia cuenta de AWS.

Si estás dentro de la capa gratuita, el costo será mínimo. Fuera de ella, el máximo estimado ronda los cinco dólares [10:51]. Con estos archivos ya puedes lanzar tus propios pipelines y experimentar con despliegues automatizados. ¿Qué lenguaje vas a desplegar primero?