Arquitectura de Software - Serverless

La arquitectura Serverless propone delegar completamente la gestión de servidores al proveedor de nube (como AWS, Azure o Google Cloud). Vos escribís funciones, ellos se encargan de todo lo demás: infraestructura, escalado, balanceo de carga, etc.

¿Cómo funciona?

Cuando un evento ocurre (por ejemplo, una solicitud HTTP), se ejecuta una función previamente definida. Estas funciones viven en la nube y se ejecutan sólo cuando se necesitan. No hay servidores que mantener encendidos todo el tiempo.

Ventajas

  • No pagás por tiempo ocioso: sólo cuando se ejecuta tu código.
  • Escalado automático según demanda.
  • Despreocupación total por el mantenimiento de servidores.
  • Ideal para apps con carga variable o poco tráfico continuo.

Desventajas

  • Mayor dificultad para depurar o monitorear.
  • Latencia inicial (cold start) en algunas plataformas.
  • Limitaciones en tiempo de ejecución o recursos asignados.
  • Dependencia fuerte del proveedor (vendor lock-in).

Ejemplo cotidiano

Imaginá que tenés una cafetería, y solo abrís la cocina cuando llega un cliente. No tenés empleados todo el día, solo contratás cocineros por pedido. Así funciona Serverless: código que se ejecuta bajo demanda.

Ejemplo técnico (modelo Serverless)

Imaginá una aplicación que permite a los usuarios registrarse para recibir alertas cuando un producto vuelve a estar en stock. Con arquitectura Serverless, no hay un servidor constantemente ejecutándose. En cambio:

  • Cuando un usuario envía el formulario, se dispara una función que guarda el correo en una base de datos.
  • Cuando el producto vuelve a estar en stock, otra función se activa automáticamente y envía correos a todos los usuarios interesados.
  • Todo esto ocurre "bajo demanda", sin tener un backend corriendo 24/7.

Estas funciones viven "en la nube", y solo se ejecutan cuando algo ocurre (un evento). Por ejemplo, un usuario interactúa con la app, o se actualiza una base de datos. No necesitás pensar en servidores, ni escalar, ni pagar por tiempo ocioso.

Modelo Monolítico

Fragmento de código conceptual

// Función que se ejecuta cuando un usuario se registra
function registrarInteresado(evento) {
  const email = evento.body.email;
  guardarEnBaseDeDatos(email);
  return { statusCode: 200, body: 'Registro exitoso' };
}

// Función que se ejecuta cuando un producto vuelve al stock
function notificarUsuarios(producto) {
  const lista = obtenerEmailsInteresados(producto.id);
  lista.forEach(email => enviarCorreo(email, producto.nombre));
}

Esta función podría responder a una URL como https://midominio.com/saludo?nombre=Juan. Se ejecuta solo cuando llega una petición y no consume recursos el resto del tiempo.

¿Cuándo conviene usarlo?

Es ideal para tareas breves, automatizaciones, APIs ligeras, backends para apps móviles, procesamiento de eventos, bots, y MVPs que deben escalar rápido sin mantener infraestructura compleja.

Conclusión

Serverless no significa "sin backend", sino "sin servidores gestionados por vos". Es una gran opción para muchos escenarios modernos, pero no reemplaza todos los modelos. Elegí con criterio según tus necesidades.