Funciones Serverless vs. Microservicios: ¿cuál elegir?

Actualizado: agosto de 2026

Una función serverless es una unidad única de deploy de lógica de backend; un microservicio es un servicio completo operado de forma independiente. Esa sola frase es la comparación entera en miniatura — todo lo demás (carga de ops, curvas de costo, cold starts, estado) se desprende de cuál es la unidad de deploy: una función que le entregas a una plataforma, o un servicio que operas tú mismo.

Puntos clave

PreguntaRespuesta
La diferencia centralUnidad de deploy: una operación (función) vs. una capacidad propia (servicio)
Quién lo operaFunciones: la plataforma. Microservicios: tu equipo, por servicio
Costo ociosoLas funciones escalan a cero; una flota de servicios factura todo el día
El impuesto de las funcionesCold starts, límites de tiempo de ejecución, ausencia de estado
El impuesto de los serviciosPipelines, orquestación, monitoreo, guardias — multiplicados por servicio

La unidad de deploy, en código

Este es el deployable completo de una operación de checkout — una función, sin repositorio por servicio, sin imagen de contenedor, sin pipeline:

// JavaScript / Node.js — the function is the whole deployable
// cloud/main.js — runs on the platform; there is no service to operate
Parse.Cloud.define('checkout', async (request) => {
  const cart = await new Parse.Query('Cart').get(request.params.cartId, {
    sessionToken: request.user.getSessionToken(),
  });
  // …price the cart, reserve stock, write the order…
  return { orderId: cart.id, status: 'confirmed' };
});

// Any client calls it by name — no gateway, container, or pipeline
const result = await Parse.Cloud.run('checkout', { cartId });

El equivalente en microservicio de ese snippet es un repositorio: un servidor HTTP, un build de contenedor, manifiestos de deploy, service discovery, health checks, un dashboard y una rotación de guardias — antes de la primera línea de lógica de checkout.

Funciones serverless vs. microservicios propios

DimensiónFunciones serverlessMicroservicios propios
Unidad de deployUna funciónUn servicio (proceso + API + datos)
Infraestructura que operasNinguna — gestionada por la plataformaContenedores, orquestación y red por servicio
EscaladoAutomático, por invocación, hasta ceroLo configuras tú; la capacidad corre incluso ociosa
EstadoStateless por contrato; el estado vive en la base de datosPuede mantener estado en memoria (a un precio)
Perfil de latenciaLas llamadas warm son rápidas; las instancias ociosas pagan un cold startConsistente — el proceso siempre está arriba
RuntimeProvisto por la plataforma (típicamente un runtime JavaScript gestionado)Cualquier cosa que puedas contenedorizar
Trabajo de larga duraciónCortado por los límites de tiempo de ejecuciónIlimitado
Forma del equipoSolo ingenieros de productoExige capacidad de plataforma/DevOps
Curva de costoPor ejecución; imbatible con picos, se cruza con carga sostenidaPlana; eficiente con volumen alto y constante

La literatura de microservicios es explícita: los beneficios de la arquitectura se compran con una madurez operativa seria — deploy automatizado, monitoreo sofisticado, diseño para el fallo. Las funciones tercerizan exactamente esa cuenta a la plataforma, y por eso el análisis de serverless de Mike Roberts encuadra el FaaS como cambiar control por radicalmente menos ops. Ninguno de los dos intercambios es gratis; la pregunta es qué impuesto puede pagar tu equipo.

Qué le pasa realmente a una request

Camino de una request por una función serverless versus una flota de microservicios propiosEn el modelo de funciones, un cliente llama a un endpoint gestionado y la plataforma corre la función contra la base de datos gestionada, escalando instancias automáticamente. En el modelo de microservicios, el cliente pasa por un API gateway hasta uno de varios servicios operados por el equipo, cada uno con su propio deploy de contenedor y su propio almacén de datos.

Modelo de microservicios — operado por el equipo

Cliente

API gateway

Servicio de carrito

Servicio de pedidos

BD del carrito

BD de pedidos

Modelo de funciones — operado por la plataforma

Cliente

Endpoint gestionado

checkout()

Base de datos gestionada

En el modelo de funciones, un cliente llama a un endpoint gestionado y la plataforma corre la función contra la base de datos gestionada, escalando instancias automáticamente. En el modelo de microservicios, el cliente pasa por un API gateway hasta uno de varios servicios operados por el equipo, cada uno con su propio deploy de contenedor y su propio almacén de datos.

Fíjate en lo que la mitad de abajo agrega y la de arriba no puede expresar: llamadas de servicio a servicio, almacenes de datos por servicio y un gateway — la superficie de coordinación donde realmente vive la complejidad de los microservicios. Las transacciones distribuidas, los reintentos y los fallos parciales entre los servicios de carrito y de pedidos son código tuyo; en el modelo de funciones, el mismo workflow suele ser una función y una base de datos, y las piezas orientadas a eventos (triggers, jobs programados) cuelgan de la plataforma y no de colas que tú operas.

Cuándo las funciones reemplazan una flota de microservicios — y cuándo no pueden

La observación honesta detrás del patrón BaaS: la mayoría de los microservicios de un producto típico son delgados. Validan entrada, aplican una regla, leen o escriben una base de datos y llaman a un vecino — el caparazón operativo alrededor de esa lógica es el 90% de su peso. Las funciones en la nube dentro de un BaaS borran el caparazón: la base de datos, la autenticación, el almacenamiento de archivos y las APIs son servicios de la plataforma, así que cada “servicio” colapsa en un puñado de funciones y triggers. Los equipos de una a diez personas que entregan productos de CRUD-más-lógica rara vez necesitan más.

El techo es igual de honesto. Las funciones no pueden hospedar un modelo de recomendaciones que necesita hardware especializado, un transcodificador de video que corre una hora, un motor de fan-out de WebSocket con tuning a medida, ni un componente cuyo throughput sostenido convierte el precio por invocación en la opción cara. Cuando un componente cruza esas líneas, extráelo como un servicio de verdad y deja que interopere con las funciones — extraer un hot spot comprobado es una migración mucho más barata que descomponer una flota especulativa construida demasiado pronto, la misma lección que el argumento monolith-first enseña un nivel más arriba.

Casos de uso comunes

  • Funciones: backends de API y mobile. Lógica con forma de request sobre una base de datos gestionada — el caso dominante, y el que las plataformas BaaS empaquetan de punta a punta.
  • Funciones: triggers y pegamento. Validar al guardar, redimensionar al subir, sincronizar con una API de terceros, correr jobs nocturnos — reacciones cortas que harían pasar vergüenza a un servicio dedicado.
  • Funciones: tráfico con picos o desconocido. Lanzamientos, campañas, MVPs — escalar a cero absorbe tanto el pico como el silencio.
  • Microservicios: componentes pesados y sostenidos. Búsqueda, feeds, motores de precios — carga estable donde la capacidad siempre activa es más barata y ajustable.
  • Microservicios: runtimes especiales. Lenguajes fuera del estándar, dependencias nativas, GPUs, procesos de larga duración.
  • El híbrido. Funciones para la superficie de API y los eventos; uno o dos servicios extraídos para los componentes cuyos números lo exigen.

¿Deberías construir funciones o microservicios? Matriz de decisión

Tu situaciónInclínate por
Equipo pequeño, la lógica del producto es sobre todo CRUD + reglasFunciones en un BaaS — la flota agrega costo, no capacidad
El tráfico tiene picos, es bajo o impredecibleFunciones — escalar a cero es el argumento completo
Un componente corre de minutos a horas por jobMicroservicio (o un sistema de background jobs) — los timeouts descartan las funciones
Throughput alto y sostenido en una ruta calienteMicroservicio — la capacidad de tarifa plana gana la curva de costo
Presupuesto estricto de latencia de cola en cada requestMicroservicio — sin varianza de cold start
Runtime personalizado, dependencias nativas, hardware especialMicroservicio — las plataformas corren lo que corren
No tienes capacidad de ops dedicadaFunciones — el impuesto de la flota llega, lo hayas presupuestado o no
Un hot spot dentro de un producto con forma de funcionesHíbrido — extrae ese único servicio, mantén el resto como funciones

Limitaciones y trade-offs

  • Funciones: los límites de ejecución son paredes duras. El trabajo largo debe mudarse a sistemas de jobs o a servicios — ninguna astucia estira un timeout con elegancia.
  • Funciones: cold starts y cadenas. Raros por invocación, pero las arquitecturas de función-llama-función los apilan; mantén las rutas calientes poco profundas.
  • Funciones: acoplamiento a la plataforma. El runtime y sus APIs son de la plataforma — una base open-source que puedes auto-hospedar es la cobertura práctica contra el lock-in.
  • Microservicios: la cuenta de ops es por servicio. Pipelines, monitoreo, contratos versionados y guardias se multiplican con la flota; subestimarlo es el modo clásico de fallar.
  • Microservicios: los problemas de sistemas distribuidos llegan el primer día. Las particiones de red, los fallos parciales y la consistencia entre servicios son constantes arquitectónicas, no casos borde.
  • Ambos: el estado se externaliza de todos modos. Las funciones lo obligan; los servicios bien operados lo eligen. Es la base de datos, no el cómputo, la que termina guardando la verdad en ambos diseños.

Funciones serverless y microservicios en Back4app

Back4app es una plataforma open-source de Backend as a Service (BaaS) que combina base de datos gestionada, APIs REST y GraphQL generadas automáticamente, autenticación, almacenamiento de archivos y funciones serverless con Cloud Code. Es el lado de las funciones de esta comparación entregado completo: Cloud Code corre funciones con nombre como la checkout de arriba, más triggers de base de datos y jobs programados, junto a todo lo que una flota de microservicios existe para proveer — así la flota que la mayoría de los productos habría construido se convierte en funciones sobre servicios gestionados. Y como la base es open source y auto-hospedable, la ruta de extracción sigue abierta: cuando un componente supera el modelo de funciones, puede graduarse como servicio dedicado sin abandonar la plataforma que lo rodea.

Preguntas frecuentes

¿Una función serverless es un microservicio?

No exactamente — la granularidad difiere en un orden de magnitud. Un microservicio es dueño de una capacidad de negocio: su propio proceso, su base de datos, su pipeline de deploy y su superficie de API. Una función es dueña de una operación. Un solo microservicio típicamente se descompone en varias funciones, y es la plataforma, no tu equipo, la que aporta el proceso, el escalado y el runtime alrededor de cada una.

¿Las funciones serverless pueden reemplazar a los microservicios?

Para muchos productos, sí — sobre todo cuando los servicios harían poco más que envolver una base de datos con validación y un workflow ligero. Las funciones en un BaaS heredan la base de datos, la autenticación y las APIs, dejando solo la lógica de negocio genuina por escribir. Las excepciones son reales: trabajo de larga duración, runtimes personalizados, throughput pesado y sostenido y pisos estrictos de latencia siguen favoreciendo a un servicio operado por ti.

¿Qué sale más barato: funciones o microservicios?

Con volumen bajo o con picos, las funciones — pagas por ejecución y el costo ocioso es cero, mientras que una flota de microservicios factura contenedores todo el día, más el tiempo de ingeniería para operarlos. Con volumen pesado y sostenido, las curvas se cruzan: la capacidad siempre activa se vuelve más barata por request. Incluye el salario de ops en la comparación; suele dominar la línea de infraestructura.

¿Los cold starts hacen a las funciones más lentas que los microservicios?

Solo en la fracción de invocaciones que cae en una instancia ociosa — típicamente de milisegundos a alrededor de un segundo, frente a la latencia consistente de un servicio siempre warm. El tráfico constante mantiene warm las instancias de las funciones, y las funciones encadenadas son el caso a vigilar, porque cada salto puede sumar su propio cold start. Para presupuestos estrictos de latencia de cola, un servicio siempre activo todavía gana.

¿Cuándo ganan claramente los microservicios propios?

Trabajo largo o stateful que supera los timeouts de las funciones, runtimes personalizados o dependencias de sistema que la plataforma no ofrece, hardware especializado, throughput alto y sostenido donde la capacidad siempre activa sale más barata, y equipos que necesitan control total de la red y de la topología de deploy. Si varios de esos puntos aplican a un componente, ese componente quiere ser un servicio.

¿Las funciones serverless pueden mantener estado?

No entre invocaciones — cada llamada a una función parte de cero, y cualquier cosa que valga la pena guardar debe vivir en la base de datos o en un caché. Los microservicios pueden mantener estado en memoria, al precio de complicar el escalado y el failover. En la práctica, ambas arquitecturas convergen en la misma disciplina: externaliza el estado, trata el cómputo como desechable.

¿Se pueden combinar funciones y microservicios?

Sí, y los sistemas maduros normalmente lo hacen. La división pragmática: las funciones se encargan de la lógica de API request/response, los triggers de base de datos, los jobs programados y el pegamento entre eventos; los servicios dedicados se encargan de los pocos componentes con carga pesada y constante o con necesidades especiales de runtime. Empezar con funciones y extraer un servicio cuando los números lo exijan es más barato que la migración inversa.

Términos relacionados

Compara con

Lecturas recomendadas

¿Listo para construir tu backend?

Empieza tu proyecto en Back4app en minutos — base de datos, autenticación, APIs y Cloud Code incluidos. Sin tarjeta de crédito.

Escrito y revisado por Back4app Engineering, Back4app Engineering · Publicado el 2026-08-27