AWS
Lambda
Serverless
Cloud
Arquitetura
Functions as a Service

Sin servidor con AWS Lambda: guía práctica para aplicaciones escalables

Sin servidor con AWS Lambda: guía práctica para aplicaciones escalables

Serverless no es sólo una palabra de moda, es un modelo de ejecución que permite centrarse exclusivamente en la lógica de negocio, dejando la infraestructura en manos de la nube. En este artículo, recorreremos todo el ciclo de vida de una aplicación AWS Lambda, desde la escritura de funciones hasta la optimización de costos.

¿Por qué elegir la tecnología sin servidor?

  • Escalado automático, Cada invocación recibe su propio contenedor, sin necesidad de aprovisionar servidores.
  • Costo por uso, solo pagas por el tiempo de ejecución (milisegundos) y la cantidad de invocaciones.
  • Velocidad de entrega, implementaciones rápidas, sin administrar clusters ni VM.

Estructura del proyecto

La organización de un servicio sin servidor es deliberadamente sencilla. En la raíz están serverless.yml, que concentra la configuración del Serverless Framework, y package.json. El código de función Lambda se encuentra en src/, normalmente en handler.js, mientras que las pruebas correspondientes están aisladas en tests/, como handler.test.js. Esta separación mantiene visibles la función, su configuración y su verificación una al lado de la otra.

Implementación paso a paso

1. Configuración del marco sin servidor

service: minha-funcao provider: name: aws runtime: nodejs20.x region: us-east-1 memorySize: 128 timeout: 10 functions: hello: handler: src/handler.hello events: - http: path: hello method: get cors: true plugins: - serverless-offline

2. Escribiendo la función Lambda

// src/handler.js exports.hello = async (event) => { const name = event.queryStringParameters?.name || 'Mundo'; return { statusCode: 200, body: JSON.stringify({ message: `Olá, ${name}!` }), headers: { 'Content-Type': 'application/json' } }; };

3. Pruebas unitarias con Jest

// tests/handler.test.js const { hello } = require('../src/handler'); test('retorna saudação padrão', async () => { const event = { queryStringParameters: {} }; const result = await hello(event); expect(JSON.parse(result.body)).toEqual({ message: 'Olá, Mundo!' }); });

4. Implementación local con serverless offline

npm install npx serverless offline start

Accede a http://localhost:3000/dev/hello?name=Matheus y mira la respuesta.

5. Implementar en AWS

npx serverless deploy

El comando crea la función Lambda, API Gateway y los permisos necesarios.

Optimización de costos

  • Elección de memoria: la memoria y la CPU son proporcionales. Pruebe diferentes tamaños y mida la latencia.
  • Uso de capas: comparte dependencias entre funciones para reducir el tamaño del paquete.
  • Simultaneidad aprovisionada: para lograr una latencia reducida, habilite la simultaneidad aprovisionada en funciones críticas.
  • Monitoreo: utilice las métricas de CloudWatch (Duration, Invocations, Errors) para identificar funciones infrautilizadas.

##Buenas Prácticas de Seguridad

  • Principio de privilegio mínimo: establece políticas mínimas de IAM para cada rol.
  • Variables de entorno cifradas, utilice kms para secretos confidenciales.
  • Validación de entrada, nunca confíes en los datos del cliente; validar esquemas con ajv o similar.

Lista de verificación de implementación sin servidor

  • Configurar serverless.yml con proveedor, tiempo de ejecución y región.
  • [] Función de controlador de escritura con manejo de errores.
  • Implementar pruebas unitarias.
  • Pruebe localmente con serverless offline.
  • [] Implementar en AWS y validar el punto final.
  • Configurar monitorización y alarmas.
  • Revisar las políticas de IAM.
  • [] Optimizar la memoria y la concurrencia aprovisionada.

Conclusión

La tecnología sin servidor permite a los equipos ofrecer funcionalidad rápidamente, lo que reduce la carga operativa. Si sigue esta guía, tendrá una base sólida para crear API, procesar eventos y crear canalizaciones de datos sin administrar servidores.


¿Alguna vez ha utilizado AWS Lambda? ¡Comparta sus consejos de optimización en los comentarios!

Lea también