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
kmspara secretos confidenciales. - Validación de entrada, nunca confíes en los datos del cliente; validar esquemas con
ajvo similar.
Lista de verificación de implementación sin servidor
- Configurar
serverless.ymlcon 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
- Escalabilidad de la aplicación: Guía técnica completa
- Desarrollando aplicaciones sin servidor con AWS Lambda y Cloudflare Workers en 2025
- Arquitectura de software escalable: cómo construir sistemas que crezcan
- Arquitectura de software escalable: mejores prácticas para el escalado
- Arquitectura de software escalable: mejores prácticas para empresas emergentes
- Arquitectura de software escalable: mejores prácticas para equipos pequeños
