Lambda

AWS Lambda: ¿Son Funciones o Microservicios?

 

Introducción

El dilema que muchos equipos enfrentan al diseñar arquitecturas serverless: ¿cuánta granularidad es suficiente? En este post exploramos por qué las funciones Lambda no deberían confundirse con «funciones» en el sentido de programación, sino tratarse como microservicios.

El Problema: Sobre-Fragmentación

Escenario típico: necesitas crear un sistema para gestionar pedidos/ventas con una arquitectura serverless (API Gateway + Lambda). La pregunta crítica es:

¿cuántas funciones Lambda necesitas?

Si este mismo sistema se implementara en Kubernetes, ¿cuántos microservicios crearías? La respuesta debería ser la misma independientemente de la plataforma.

Antipatrón: Una Lambda por Endpoint

Problema de este enfoque:

  • Acoplamiento fuerte con API Gateway: cada Lambda debe conocer la estructura exacta del payload
  • Proliferación descontrolada: decenas de funciones para un solo dominio
  • Complejidad operacional: pipelines de CI/CD más complejos, más difícil de mantener
  • Código duplicado: lógica compartida repetida entre múltiples Lambdas

 

Ventajas (que no compensan)

  • Cold start potencialmente menor por función específica
  • Escalado independiente por operación
  • Cambios muy localizados

 

Enfoque Recomendado: Lambda por Dominio

 

Principios clave:

  1. Una Lambda por bounded context/dominio, no por endpoint
  2. API Gateway como router inteligente: transforma y estandariza el payload
  3. La Lambda maneja el routing interno: determina qué operación ejecutar según el request

Beneficios:

  • Alineación con principios de microservicios
  • Menos complejidad operacional
  • Código compartido más fácil de mantener
  • Mejor cohesión del dominio de negocio

Consideraciones técnicas:

  • Usa VTL (Velocity Template Language) o transformaciones en API Gateway
  • Implementa un router interno en la Lambda (ej: basado en httpMethod y resource)
  • Mantén las Lambdas enfocadas en un dominio específico

¿Cuándo dividir en múltiples Lambdas?

Divide cuando:

  • Dominios diferentes: Ventas vs. Inventario vs. Usuarios
  • Requisitos de escalado muy distintos: operaciones de lectura masiva vs. escrituras poco frecuentes
  • Límites de Lambda: tiempo de ejecución o memoria insuficientes
  • Equipos diferentes: cada equipo gestiona su dominio

Conclusión

Las funciones Lambda son un modelo de despliegue para microservicios, no una razón para sobre-fragmentar tu arquitectura. Aplica los mismos principios de diseño que usarías en cualquier arquitectura de microservicios.

En el próximo post: Implementación práctica con código real, patrones de routing, y configuración de API Gateway.

Referencias

https://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

0
Would love your thoughts, please comment.x
()
x