Despliegue de Aplicaciones Serverless con AWS y Node/Python

Clase 18 de 21Curso de Introducción a DevOps

Resumen

¿Qué es serverless y cómo se maneja?

¡Hola entusiasta del desarrollo! Si te has preguntado cómo serían las aplicaciones sin la carga de administrar servidores, bienvenido al emocionante mundo de serverless. Aunque el nombre sugiere la ausencia de servidores, en realidad, sí existen. La diferencia radica en que, como desarrollador o empresa, no tienes que gestionarlos. Es la plataforma Cloud la que se encarga de todo esto, permitiéndote centrarte en lo que realmente importa: tu aplicación.

¿Cómo crear un Padline para aplicaciones serverless?

Para implementar aplicaciones serverless, utilizamos un Padline y otros componentes como CodeBuild y Bitbucket, junto con permisos de AWS y un Bucket S3. Estos son utilizados para gestionar los despliegues. Pero para el caso de serverless, añadimos un ingrediente especial a la mezcla: el framework Serverless, diseñado para trabajar con AWS.

Este framework se asemeja a Terraform, solo que está diseñado específicamente para servicios serverless, como las funciones Lambda. Veamos cómo puedes implementar todo esto en unos simples pasos.

¿Cómo se estructura el archivo Serverless?

Cuando desarrollas aplicaciones serverless, un archivo clave es serverless.yaml. Este archivo funciona como la espina dorsal que define todo, desde la infraestructura hasta las funciones a deployar. Si el equipo de infraestructura de tu organización lo gestiona, solo necesitas saber los comandos básicos para lanzar las aplicaciones.

# code snippet for serverless.yaml
service: my-awesome-service

provider:
  name: aws
  runtime: nodejs14.x

functions:
  hello:
    handler: handler.hello

¿Cómo integrar Node.js y Python en serverless?

El framework Serverless permite trabajar con múltiples lenguajes, en este caso Node.js y Python. Ambos lenguajes mantienen una estructura similar en sus archivos buildspec.

Para Node:

phases:
  install:
    runtime-versions:
      nodejs: 14
    commands:
      - npm install
      - npm install -g serverless
  build:
    commands:
      - sls deploy

Para Python, además de las etapas estándar de instalación y despliegue, necesitas instalar un plugin adicional:

phases:
  install:
    runtime-versions:
      python: 3.8
    commands:
      - pip install serverless
      - pip install serverless-plugin
  build:
    commands:
      - sls deploy

Notarás que los comandos principales para desplegar son similares, lo que facilita el manejo de distintos lenguajes en un entorno serverless.

¿Cómo desplegar la infraestructura con Terraform?

Terraform se utiliza para definir y aprovisionar infraestructura de forma eficiente. En el caso de serverless, la infraestructura se despliega automáticamente al implementar el código.

El flujo de trabajo:

  1. Descarga y desploiega código en la infraestructura serverless.
  2. Verifica las funciones Lambda a través de la consola de AWS.

Al usar Terraform, el proceso es bastante manual:

  • Copiar y modificar los archivos de configuración.
  • Hacer commit de los cambios usando git.
  • Empujar los cambios al repositorio.
  • Monitorizar el progreso en la consola de AWS.
git add .
git commit -m "Deploy serverless application"
git push origin master

Consejos para implementar serverless exitosamente

  • Familiarízate con archivos .yaml, ya que son cruciales para definir funciones y servicios.
  • Ser flexible con el lenguaje: Node.js y Python son populares, pero serverless puede adaptarse a diversas necesidades lingüísticas.
  • Nota la importancia de los plugins y frameworks: Estos no solo simplifican los despliegues, sino que optimizan el tiempo de desarrollo y respuesta.

Experimenta por ti mismo la integración de Serverless en AWS. Desplegar tus propias aplicaciones se convierte en una experiencia educativa invaluable, y siguiendo esta guía, estarás bien encaminado para hacerlo sin dificultad. ¡Sigue avanzando y explora todas las posibilidades que el desarrollo serverless tiene para ofrecer!