Node vs Bun vs Deno: las pruebas de múltiples rutas superan a los gráficos de RPS individual
Un concurso multi-ruta entre Node.js, Bun y Deno: el rendimiento bruto es real, pero la familiaridad con las operaciones, los permisos, la memoria y las rutas limitadas por la base de datos determinan la arquitectura.
Fuentes: I Rebuilt the Same API on Node.js, Bun, and Deno. The Surprising Difference Wasn’t Throughput
El benchmark importante tiene más de una ruta
Los gráficos simples de RPS HTTP hicieron parecer que una carrera ya había terminado: Bun muy por delante, Deno en segundo lugar, Node atrás. Las decisiones arquitectónicas requieren algo más que una sola ruta sintética.
export async function handle(request: Request): Promise<Response> {
const url = new URL(request.url);
if (url.pathname === "/health") {
return Response.json({ status: "ok" });
}
if (url.pathname.startsWith("/v1/accounts/")) {
const account = await accounts.find(url.pathname.split("/").pop()!);
if (!account) {
return Response.json({ error: "not_found" }, { status: 404 });
}
return Response.json(account);
}
return Response.json({ error: "not_found" }, { status: 404 });
}
// Bun
Bun.serve({ fetch: handle, port: 3000 });
// Deno
Deno.serve({ port: 3000 }, handle);
deno serve \
--allow-net=0.0.0.0:3000,postgres.internal,redis.internal \
--allow-env=DATABASE_URL,REDIS_URL,OTEL_EXPORTER_OTLP_ENDPOINT \
--allow-read=./config \
main.ts
El rendimiento bruto era real, pero dejó de determinar la arquitectura
El rendimiento es importante en los puntos críticos de las curvas de costos. La mayoría de las APIs empresariales se ven limitadas por bases de datos, autenticación e operaciones de entrada/salida mucho antes de alcanzar los límites de RPS en tiempo de ejecución.
Node fue el entorno de ejecución menos interesante, lo cual era un cumplido
La atracción del ecosistema de Node, la familiaridad con sus operaciones y su proceso de despliegue predecible siguen haciendo que sea la plataforma por defecto. Ser aburrido es una ventaja cuando el tiempo de respuesta está limitado.
Bun fue el más rápido cuando se le permitió ser Bun
Bun brilla gracias a sus propias APIs y herramientas. Forzar rutas de compatibilidad con Node erosionan su ventaja; evalúe honestamente las suposiciones propias de Bun.
Deno integró los permisos y la telemetría en el diseño de las aplicaciones
El modelo de permisos y la biblioteca estándar de Deno incorporan la seguridad y la capacidad de observación directamente en el funcionamiento del sistema, no solo como consideraciones adicionales en el middleware.
La memoria fue donde los resultados se volvieron ambiguos
La asignación de memoria, la recolección de basura y el uso de memoria en tiempo real con cargas reales eran más importantes que el número máximo de solicitudes por segundo. Aquellos que pierden en cuanto a memoria también pierden en costos dentro de los contenedores.
La simplicidad operativa depende de lo que ya se posee
Si la organización ya utiliza Node en Kubernetes con paneles de control avanzados, cambiar a otro entorno de ejecución supone una carga adicional para todos. En proyectos nuevos o con enfoque en entornos periféricos, Bun y Deno merecen pruebas comparativas con pruebas de rendimiento multi-ruta: APIs JSON, datos multipart, WebSocket y controladores vinculados a bases de datos.
Cierre
Reconstruya la misma API en diferentes entornos de ejecución para conocer las compensaciones que implica, y no para determinar un ganador definitivo basándose únicamente en una prueba de sobrecarga HTTP. Elija el entorno que se adapte a sus operaciones, permisos y al cuello de botella real que tenga.
Publique el conjunto de pruebas de rendimiento junto con las conclusiones del artículo. Las capturas de pantalla de RPS que no sean reproducibles no deben influir en la estrategia de la plataforma.
Incluya en la evaluación el tiempo de inicio inicial y las capacidades de interacción por línea de comandos para funciones en el edge, además del RPS en estado estable.
Haga un seguimiento de las limitaciones de compatibilidad: complementos nativos, importaciones de Node y bibliotecas de pruebas que asumen la existencia de variables globales en Node.
Para cada entorno de ejecución, documente el modelo del proceso de producción (clústeres, supervisores, aislamiento) que realmente utilizará.
Calcule el costo en días-hombre de los ingenieros; una mejora de 4 veces en RPS que requiera reescribir los mecanismos de autenticación y los procesos CI no constituye un rendimiento gratuito.
Mantenga un canario de compatibilidad que ejecute las veinte rutas más importantes en cada entorno de ejecución todas las noches si realmente opera desde múltiples ubicaciones.
Publique el conjunto de pruebas de rendimiento junto con las conclusiones del artículo. Las capturas de pantalla de RPS que no se pueden reproducir no deben influir en la estrategia de la plataforma.
Incluya los tiempos de inicio en frío y las capacidades de CLI DX en la evaluación de funciones/edge, no solo el RPS en estado estable.
Haga un seguimiento de los problemas de compatibilidad: complementos nativos, importaciones de Node y bibliotecas de pruebas que asumen la existencia de variables globales en Node.
Para cada entorno de ejecución, documente el modelo del proceso de producción (cluster, supervisor, aislamiento) que realmente utilizará.
Calcule el costo en días-hombre de ingeniería; una mejora del RPS 4 veces mayor que requiera reescribir las funciones de autenticación y los procesos CI no constituye un rendimiento gratuito.
Mantenga un canario de compatibilidad que ejecute las veinte rutas más importantes en cada entorno de ejecución todas las noches si realmente opera desde múltiples ubicaciones.
Publica el conjunto de pruebas de rendimiento junto con las conclusiones del artículo. Las capturas de pantalla de RPS que no son reproducibles no deben influir en la estrategia de la plataforma.
Incluye los valores de inicio en frío y las capacidades CLI DX en la hoja de puntuación para funciones/edge, no solo el RPS en estado estable.
Haz un seguimiento de los problemas de compatibilidad: complementos nativos, importaciones de node y bibliotecas de pruebas que asumen la existencia de variables globales en Node.
Para cada entorno de ejecución, documenta el modelo del proceso de producción (cluster, supervisor, aislamiento) que realmente se utilizará.
Calcula el costo en días-hombre de ingeniería; una mejora del RPS 4 veces mayor que requiera reescribir las funciones de autenticación y los procesos CI no representa un rendimiento gratuito.
Mantén un sistema de prueba de compatibilidad que ejecute las veinte rutas más utilizadas en cada entorno de ejecución todas las noches si realmente operas desde múltiples ubicaciones.
Publica el conjunto de pruebas de rendimiento junto con las conclusiones del artículo. Las capturas de pantalla de RPS que no son reproducibles no deben influir en la estrategia de la plataforma.
Incluya el tiempo de inicio en frío y la eficiencia de la CLI DX en la tabla de puntuación para funciones/edge, no solo el RPS en estado estable.
Haga un seguimiento de los factores que afectan la compatibilidad: complementos nativos, importaciones de node y bibliotecas de pruebas que dependen de variables globales de Node.
Para cada entorno de ejecución, documente el modelo del proceso de producción (cluster, supervisor, aislamiento) que realmente utilizará.
Calcule el costo en días-hombre de ingeniería; una mejora del RPS 4 veces mayor que requiera reescribir las funciones de autenticación y los procesos CI no constituye un mejor rendimiento gratuito.
Mantenga un sistema de prueba de compatibilidad que ejecute las veinte rutas más utilizadas en cada entorno de ejecución todas las noches si realmente opera en múltiples ubicaciones.
Publique el conjunto de pruebas de rendimiento junto con las conclusiones del artículo. Las capturas de pantalla de RPS que no se pueden reproducir no deben influir en la estrategia de la plataforma.
Incluya el tiempo de inicio en frío y la eficiencia de la CLI DX en la tabla de puntuación para funciones/edge, no solo el RPS en estado estable.
Herramientas de monitoreo de compatibilidad: complementos nativos, importaciones en Node y bibliotecas de pruebas que asumen la existencia de variables globales en Node.
Para cada entorno de ejecución, documente el modelo del proceso de producción (cluster, supervisor, aislamiento) que realmente utilizará.
Calcule el costo en días-hombre de ingeniería; una mejora de 4 veces en RPS que requiera reescribir las funciones de autenticación y los procesos CI no representa un rendimiento gratuito.
Mantenga una versión de prueba de compatibilidad que ejecute las veinte rutas más utilizadas en cada entorno de ejecución todas las noches si realmente opera en múltiples plataformas.
Publique el conjunto de pruebas de rendimiento junto con las conclusiones del artículo. Las capturas de pantalla de RPS que no se puedan reproducir no deben influir en la estrategia de la plataforma.
Incluya también el tiempo de inicio en frío y la experiencia de uso desde la línea de comandos en la evaluación, además del RPS en estado estable.
Herramientas de monitoreo de compatibilidad: complementos nativos, importaciones en Node y bibliotecas de pruebas que asumen la existencia de variables globales en Node.
Para cada entorno de ejecución, documente el modelo del proceso de producción (clúster, supervisor, aislamientos) que realmente implementará.
Calcule el costo en días-hombre de ingeniería; una mejora de 4× en RPS que requiera reescribir las funciones de autenticación y los procesos CI no representa un rendimiento gratuito.
Mantenga un canario de compatibilidad que ejecute las veinte rutas más utilizadas en cada entorno de ejecución todas las noches si realmente opera en múltiples ubicaciones.
Publique el conjunto de pruebas de rendimiento junto con las conclusiones del artículo. Las capturas de pantalla de RPS que no se pueden reproducir no deben influir en la estrategia de la plataforma.
Incluya los tiempos de inicio en frío y las capacidades de interfaz de línea de comandos para funciones/edge en la hoja de puntuación, además del RPS en estado estable.
Haga un seguimiento de los problemas de compatibilidad: complementos nativos, importaciones de node y bibliotecas de pruebas que asumen la existencia de variables globales en Node.
Para cada entorno de ejecución, documente el modelo del proceso de producción (clúster, supervisor, aislamientos) que realmente implementará.
Calcule el costo del concurso en días-herrero; una ventaja de 4× RPS que requiere reescribir los módulos de autenticación y CI no representa un rendimiento gratuito.
Mantenga un canario de compatibilidad que ejecute las veinte rutas más utilizadas cada noche en cada entorno de ejecución si realmente opera en múltiples ubicaciones.
Publique el conjunto de pruebas de rendimiento junto con las conclusiones del artículo. Las capturas de pantalla de RPS que no se pueden reproducir no deben influir en la estrategia de la plataforma.
Incluya los tiempos de inicio en frío y las mejoras en la interfaz de línea de comandos en la hoja de puntuación para funciones y entornos edge, no solo el RPS en estado estable.
Haga un seguimiento de los problemas de compatibilidad: complementos nativos, importaciones de Node y bibliotecas de pruebas que asumen la existencia de variables globales en Node.
Para cada entorno de ejecución, documente el modelo del proceso de producción (cluster, supervisor, aislamiento) que realmente utilizará.
Calcule el costo del concurso en días-herrero; una ventaja de 4× RPS que requiere reescribir los módulos de autenticación y CI no representa un rendimiento gratuito.
Mantenga un canario de compatibilidad que ejecute las veinte rutas más importantes cada noche en cada entorno de ejecución si realmente utiliza múltiples ubicaciones.
Publique el conjunto de pruebas de rendimiento junto con las conclusiones del artículo. Las capturas de pantalla de RPS que no se pueden reproducir no deben influir en la estrategia de la plataforma.
Incluya pruebas de inicio en frío y de interacción mediante CLI en la evaluación de las funciones/edge, no solo el RPS en estado estable.
Las pruebas de múltiples rutas deben incluir solicitudes JSON POST autenticadas, límites para la carga de archivos y un escenario con ORM que genere mucho tráfico; son estos los puntos en los que los entornos de ejecución difieren después de las solicitudes GET básicas.
Los gráficos que muestran las habilidades del equipo son importantes: una ventaja con Bun que deje a la mitad del personal sin herramientas de prueba conocidas equivale a una interrupción diferida.
Preste atención a las capas TLS y HTTP/2; los micropruebas con HTTP puro no reflejan los costos de terminación en la red.
El tamaño de las imágenes de contenedor y los resultados de los escaneos por CVE varían según las imágenes base de cada entorno de ejecución; el equipo de operaciones los considerará junto con el RPS.
Las pruebas de contrato contra OpenAPI mantienen la transparencia en las comparaciones cuando los procesadores cambian de puerto.
Registra la latencia p99 bajo condiciones de competencia, no solo el RPS mediano; los programadores de tareas ocultan comportamientos diferentes en los extremos.
Si adoptas los permisos de Deno, convierte cada autorización en un registro de decisiones arquitectónicas para que los servicios futuros no amplíen silenciosamente el entorno aislado.
La capa de compatibilidad con npm de Bun requiere una lista explícita de paquetes que se permiten o se prohíben, indicando cuáles no se ejecutarán en producción.
Node sigue siendo la referencia de compatibilidad: mide a los demás como diferencias con respecto a Node en tus rutas reales.
Revisa esta decisión cada trimestre; las métricas en tiempo de ejecución cambian, al igual que tus cuellos de botella.
Los benchmarks multi-ruta deben incluir solicitudes JSON POST autenticadas, límites para la subida de archivos y un escenario con ORM que genere mucho tráfico, ya que son los puntos donde los entornos de ejecución difieren después de las solicitudes GET básicas.
Los gráficos de habilidades del equipo son importantes: una victoria con Bun que deja a la mitad del personal sin herramientas de prueba conocidas representa una interrupción diferida.
Observe las capas TLS y HTTP/2; los micropruebas con HTTP simple no tienen en cuenta los costos de terminación en la red.
El tamaño de las imágenes de contenedor y los resultados de los escaneos CVE varían según las imágenes base utilizadas en tiempo de ejecución; el equipo operativo lo considerará junto con el RPS.
Las pruebas basadas en contratos contra OpenAPI mantienen la transparencia cuando los manejadores cambian de puerto.
Registre la latencia p99 bajo condiciones de competencia, no solo el RPS mediano; los programadores de tareas ocultan comportamientos diferentes en los extremos.
Si adopta los permisos de Deno, traduzca cada autorización a un registro de decisiones arquitectónicas para que los servicios futuros no amplíen silenciosamente el entorno aislado.
La capa de compatibilidad con npm de Bun requiere una lista explícita de paquetes permitidos y prohibidos que no se ejecutarán en producción.
Node sigue siendo la línea de referencia de compatibilidad: mida los demás como deltas con respecto a Node en sus rutas reales.
Revisite la decisión cada trimestre; las puntuaciones de rendimiento cambian, al igual que sus cuellos de botella.
Los puntos de referencia multi-ruta deben incluir envíos JSON autenticados, límites para la subida de archivos y un camino con ORM que genere mucho tráfico; son los lugares donde el rendimiento difiere después de las solicitudes GET básicas.
Los gráficos de habilidades del equipo son importantes: una ventaja con Bun que deja a la mitad del personal sin herramientas de prueba conocidas equivale a una interrupción diferida.
Preste atención a las capas TLS y HTTP/2; los micropruebas con HTTP puro no tienen en cuenta los costos de terminación en la red.
El tamaño de las imágenes de contenedor y los resultados de los escaneos CVE varían según las imágenes base del entorno de ejecución; el equipo de operaciones los considerará junto con el RPS.
Las pruebas basadas en contratos contra OpenAPI mantienen la transparencia cuando los manejadores cambian de puerto.
Tenga en cuenta la latencia p99 bajo condiciones de competencia, no solo el RPS mediano; los programadores de tareas ocultan diferentes comportamientos en los extremos de los datos.
Si adopta los permisos de Deno, convierta cada autorización en un registro de decisión arquitectónica para que los servicios futuros no amplíen silenciosamente el entorno aislado.
La capa de compatibilidad con npm de Bun requiere una lista explícita de paquetes que se permiten o se prohíben, indicando cuáles no se ejecutarán en producción.
Node sigue siendo la referencia de compatibilidad: mida a los demás como diferencias con respecto a Node en sus rutas reales.
Lecturas relacionadas
- Node.js vs Bun vs Deno: tres filosofías para entornos de ejecución de JavaScript — Node optimiza la continuidad, Deno la corrección y los valores predeterminados modernos, mientras que Bun acelera el desarrollo de los desarrolladores; elija según las limitaciones organizacionales, no solo según pruebas de rendimiento.