Pruebas y despliegue de tus APIs

Desarrollo de aplicaciones en AWS

Ricardo Sueiras

Principal Technologist

Infrastructure-as-Code para desarrolladores

 

iac

  • Las apps cloud native se despliegan con Infrastructure-as-Code (IaC).
  • Define recursos en la nube en archivos de configuración.
  • Evita la configuración manual en AWS Management Console (clickops).
Desarrollo de aplicaciones en AWS

AWS CloudFormation

 

cloudformation

  • El servicio IaC fundamental en AWS.
  • Define recursos de AWS con plantillas YAML o JSON.
Desarrollo de aplicaciones en AWS

AWS Cloud Development Kit (CDK)

 

cdk

  • CDK define IaC usando código.
  • Escribe en Python, TypeScript o Java en lugar de YAML o JSON.
  • Las apps se sintetizan a plantillas de CloudFormation al desplegar.
Desarrollo de aplicaciones en AWS

AWS Serverless Application Model (SAM)

  • Amplía CloudFormation.
  • Sintaxis simplificada para recursos serverless y APIs.
  • Actúa como capa de transformación.
  • Traduce la sintaxis de SAM a plantillas completas de CloudFormation.

 

sam

Desarrollo de aplicaciones en AWS

Funciones de SAM

  • Genera roles IAM de mínimo privilegio, con margen para afinar.
  • Define tu canal de despliegue como configuración.
  • Empaqueta y despliega con sam build y sam deploy.
  • Detecta errores de plantilla temprano con sam validate.
  • Emula Lambda en local con sam local start-lambda.
    • Proporciona un endpoint local persistente

 

sam features

Desarrollo de aplicaciones en AWS

Pruebas con SAM

  • Compila, invoca y prueba apps serverless en local antes de desplegar.
  • Prueba funciones Lambda e integraciones de API Gateway.
  • Invoca una función en local con sam local invoke.
    • Invocación de una sola vez
  • Emula API Gateway con sam local start-api.

 

testing with sam

Desarrollo de aplicaciones en AWS

Pruebas unitarias

 

unit tests

  • Usa SAM con pruebas unitarias para validar el comportamiento de Lambda.
  • Las pruebas locales aceleran los ciclos de desarrollo.
  • Úsalo con frameworks como pytest, JUnit o Jest.
Desarrollo de aplicaciones en AWS

Flujo de pruebas

 

test workflow

  • Genera eventos de prueba con sam local generate-event.
  • Produce archivos de eventos JSON.
  • Invoca en local con sam local invoke FunctionName -e event.json.
  • Añade aserciones del framework para verificar la respuesta antes de desplegar.
Desarrollo de aplicaciones en AWS

Mocking de servicios de AWS

 

mocking tests

  • Combina pruebas locales con librerías de mocking como moto.
  • Interactúa con servicios de AWS simulados, sin llamadas reales.
  • Mejora la velocidad de pruebas.
  • Reduce costes de prueba.
  • Valida escenarios de error como throttling o fallos.
Desarrollo de aplicaciones en AWS

Integración y despliegue continuos (CI/CD)

  • Las apps SAM se despliegan habitualmente con canalizaciones CI/CD.
  • Automatiza compilación, pruebas, empaquetado y despliegue.
  • AWS CodeCommit guarda código y plantillas SAM.
  • AWS CodeBuild ejecuta pruebas y sam build.
  • AWS CodePipeline orquesta el flujo.

 

cicd

Desarrollo de aplicaciones en AWS

Flujo de trabajo de CI/CD

  • Haz commit del código fuente y la plantilla SAM en un repo.
  • Ejecuta pruebas y validaciones automáticas.
  • Empaqueta la app con sam build.
  • Despliega recursos con sam deploy.
  • Supervisa tras el despliegue con CloudWatch.

 

workflow

Desarrollo de aplicaciones en AWS

Resolución de problemas en despliegues

  troubleshooting

  • La resolución de problemas es clave en operaciones.
  • Fallos comunes de despliegue:
  • Problemas de permisos IAM.
  • Plantillas SAM o CloudFormation no válidas.
  • Fallo al empaquetar Lambda o dependencias ausentes.
  • Configuraciones incorrectas de API Gateway.
Desarrollo de aplicaciones en AWS

Resolución de problemas en despliegues

  troubleshooting

  • Los despliegues de SAM se ejecutan sobre CloudFormation.
  • Ofrece eventos de pila y reversión automática.
  • Ayuda a identificar fallos de despliegue.
  • Revierte para restaurar el estado previo del entorno.
Desarrollo de aplicaciones en AWS

Resolución de problemas en despliegues

  troubleshooting

  • Resuelve problemas usando:
  • CloudWatch Logs.
  • Logs de ejecución de API Gateway.
  • Logs de Lambda.
  • Métricas de CloudWatch.
Desarrollo de aplicaciones en AWS

¡Vamos a practicar!

Desarrollo de aplicaciones en AWS

Preparing Video For Download...