PRODPlataforma BaaS soberana europeaAbrir panel →

Rendimiento · 11 lectura mínima

Arranque en frío: WASM frente a contenedores

Affane Daylami · Fondateur · 24 de mayo de 2026

volver al blog

Un módulo WebAssembly crea una instancia en microsegundos o milisegundos, según las fuentes publicadas. Un contenedor Docker típico normalmente se inicia en varios cientos de milisegundos, a veces en varios segundos. Una microVM Firecracker se encuentra entre ambas: menos de 125 ms al inicio, según el trabajo de investigación de AWS que la presentó en 2020. Estas tres familias de figuras no comparten la misma metodología, ni la misma fecha, ni el mismo protocolo de medición: no se pueden apilar en una única clasificación.

Este texto en inglés se generó automáticamente a partir del original en francés y aún no ha sido revisado.
Esta página fue traducida automáticamente. La versión en inglés es autorizada.

Este artículo reúne lo que publican fuentes de terceros identificables sobre el arranque en frío de WebAssembly en comparación con los contenedores: un documento presentado en USENIX NSDI, documentación oficial de Fastly, WasmEdge y Wasmer, y un proyecto de investigación académica sobre aislamiento sin servidor. No se incluyen figuras de Aurabase. Nuestras funciones perimetrales funcionan bien en Wasmtime, verificadas en el repositorio, pero hasta la fecha no se ha publicado ningún punto de referencia de arranque en frío específico para nuestra infraestructura, una distinción que se detalla a continuación. Para conocer el método de evaluación comparativa general aplicado en otras partes de este blog, consulte nuestro artículo principal sobre la metodología de evaluación comparativa.

Lo esencial

  • El artículo de AWS Firecracker (Agache et al., USENIX NSDI 2020) documenta un inicio de microVM de menos de 125 ms y una sobrecarga de memoria de menos de 5 MiB: la referencia cuantificada con mayor precisión en este artículo.
  • Tiempos de creación de instancias de WASM rápidamente documentados por debajo de un milisegundo para su tiempo de ejecución AOT Lucet (cuyas optimizaciones luego se fusionaron en Wasmtime) en 2019. Esta es una cifra publicada por el proveedor, nunca reproducida de forma independiente en las fuentes consultadas aquí.
  • WasmEdge, un proyecto bajo el gobierno de CNCF, afirma en su documentación oficial un inicio y un uso de memoria significativamente menores que un contenedor Docker equivalente, sin contramedidas independientes citadas en este artículo.
  • Wasmtime, Wasmer y WasmEdge no compilan de la misma manera (Cranelift, Singlepass/Cranelift/LLVM de su elección, compilador AOT propio): esta elección de backend explica buena parte de la brecha entre sus cifras publicadas, no solo el tiempo de ejecución como tal.
  • Aurabase utiliza Wasmtime en producción para sus funciones perimetrales, verificadas en aura-functions/Cargo.toml, pero hasta la fecha no publica ninguna cifra de arranque en frío medida en su propia infraestructura.
Nota metodológica sobre las fuentes

Las fuentes de terceros citadas a continuación son identificables por su título, su autor o editor y su fecha de publicación. Esta investigación se basa en publicaciones reconocidas y ampliamente documentadas en WebAssembly y el ecosistema sin servidor, no en una consulta en vivo de sus páginas al momento de escribir este artículo. Cuando no se pudo confirmar una cifra precisa con suficiente certeza, este artículo utiliza un orden de magnitud en lugar de un valor exacto, y lo establece explícitamente.

#
encuadre

Por qué el arranque en frío WASM ocupa tanto espacio en el debate sin servidor

El arranque en frío se refiere a la latencia adicional que paga una solicitud cuando el entorno de ejecución debe inicializarse antes de que se ejecute el código de la aplicación. En una función clásica de borde o sin servidor, esto está lejos de ser un caso marginal: una plataforma que reduce a cero instancias entre dos picos de tráfico, o que distribuye su ejecución entre docenas de nodos de borde geográficamente dispersos, paga este costo de forma permanente, no solo en la primera implementación.

El tema ha adquirido una importancia casi simbólica en el ecosistema WASM desde que Solomon Hykes, cofundador de Docker, publicó en Twitter en marzo de 2019 una frase: "Si WASM+WASI existiera en 2008, no habríamos necesitado crear Docker. Así de importante es. WebAssembly en el servidor es el futuro de la informática. » Esta es la opinión de un profesional reconocido, no una medición. Explica por qué el tema fascina, no reemplaza una figura de origen.

Aurabase ofrece dos rutas para sus funciones perimetrales: el editor Studio, que ejecuta código en el tiempo de ejecución de Deno como se documenta en nuestra guía de migración de Supabase , y la CLI aura functions deploy, que apunta a una ruta separada para funciones escritas en Rust y compiladas en WASM en Wasmtime. Es este segundo camino el que este artículo arroja luz, sin dar una cifra de partida en frío que aún no existe.

#
Arquitectura

Por qué un módulo WASM se inicia estructuralmente más rápido que un contenedor

La diferencia no proviene de un tiempo de ejecución más rápido en términos absolutos: proviene de una pila de pasos más corta entre la consulta y el código de la aplicación.

Iniciar un contenedor moviliza el kernel del host: crear un nuevo proceso, configurar los cgroups y los espacios de nombres que lo aíslan, montar las capas de la imagen y luego iniciar el tiempo de ejecución de la aplicación en su interior (Node.js y su motor V8, por ejemplo, tienen un costo de inicialización). Cada paso agrega llamadas al sistema y, para una imagen que nunca se ve localmente, una descarga de red incluso antes de que comience.

Un módulo WebAssembly está aislado en el nivel del lenguaje de la máquina virtual, no en el nivel del sistema operativo. Crear una instancia de un módulo significa asignar su memoria lineal, vincular sus importaciones y luego saltar a su punto de entrada, todo dentro del proceso ya iniciado del tiempo de ejecución del host. Sin nuevos procesos, sin capas de imágenes, sin montajes de sistema de archivos predeterminados.

La elección del modo de compilación añade una variable adicional. Wasmtime compila en JIT a través de su backend Cranelift cuando se carga el módulo, o puede precompilarlo por adelantado con wasmtime compile, que produce un archivo .cwasm ya transformado en código de máquina nativo. La compilación temprana (AOT) elimina el paso de compilación de la ruta crítica de la solicitud: esta es exactamente la palanca que debe activar una arquitectura de borde sensible al arranque en frío.

Cargo.tomltoml
# Extracto real del repositorio de Aurabase
# Tiempo de ejecución WASM
wasmtime = { version = "43", features = ["async", "cranelift"] }

Esta es una dependencia de producción, no de desarrollo: confirma que Wasmtime realmente se ejecuta en la ruta CLI de las funciones perimetrales de Aurabase. Sin embargo, no confirma ninguna cifra de latencia, lo que sigue siendo cierto mientras no se publique ningún punto de referencia con fecha.

#
Cifras publicadas

Contenedores y microVM: la referencia cuantificada con mayor precisión

En esta área, la fuente más sólida es un artículo de investigación de la industria, no una publicación de blog de marketing. Firecracker, la tecnología microVM liviana desarrollada por AWS y utilizada principalmente para Lambda y Fargate, fue presentada en la conferencia USENIX NSDI 2020 por Agache et al. en el artículo “Firecracker: virtualización ligera para aplicaciones sin servidor”.

Este documento documenta un tiempo de arranque de menos de 125 ms y una sobrecarga de memoria de menos de 5 MiB por microVM, con la capacidad de ejecutar miles de microVM en la misma máquina física. Esta es una cifra fechada (2020), extraída de una publicación académica revisada por pares y ampliamente citada desde entonces en la literatura sobre el aislamiento sin servidor.

Un contenedor Docker estándar es generalmente más alto: desde unos pocos cientos de milisegundos hasta varios segundos, según el tamaño de la imagen, la necesidad de descargarla y el tiempo de inicio del tiempo de ejecución de la aplicación integrada. No hay una cifra única citada universalmente aquí, a diferencia de Firecracker: el resultado depende demasiado de la imagen probada para un valor único para lograr un consenso.

#
Cifras publicadas

WebAssembly: qué es Fastly, WasmEdge y el documento de investigación académica

Tres fuentes, tres estados diferentes: un proveedor histórico, un proyecto bajo el gobierno de una fundación y un trabajo de investigación.

Fastly lanzó Compute@Edge en 2019 en Lucet, su propio compilador y tiempo de ejecución WASM precompilado. En este lanzamiento, la compañía documentó tiempos de creación de instancias de WASM por debajo de un milisegundo, un orden de magnitud que tuvo un impacto duradero en el discurso sobre el arranque en frío de WASM en la industria. En 2021, Fastly dejó de desarrollar de forma autónoma Lucet y redirigió sus esfuerzos hacia Wasmtime, cuyo backend de compilación Cranelift heredó parte de estas optimizaciones: esta es una de las razones por las que Wasmtime sigue siendo hoy una referencia para este tipo de carga.

WasmEdge, un tiempo de ejecución WASM bajo la gobernanza CNCF (originalmente SSVM, respaldado por Second State), afirma en su documentación oficial un inicio y una huella de memoria significativamente menores que un contenedor Docker equivalente, con un posicionamiento explícito en el borde y cargas de IoT. Se trata de una cifra publicada por el propio editor del proyecto, que debe leerse como tal: una afirmación del producto, no una auditoría independiente.

Desde el punto de vista de la investigación académica, Faasm (Shillaker & Pietzuch, USENIX ATC 2020, también disponible en prepublicación) crea una plataforma sin servidor con estado que se basa en el aislamiento de WebAssembly (a través de WAVM, no Wasmtime) precisamente porque permite crear instancias de una función a un costo mucho menor que el aislamiento por contenedor o por VM. El artículo no trata específicamente sobre Wasmtime, pero proporciona una validación académica independiente al argumento estructural de la sección anterior.

#
Tiempos de ejecución

Wasmtime vs Wasmer vs WasmEdge: por qué los números publicados no coinciden

Comparar estos tres tiempos de ejecución sólo por su nombre oculta la variable real: el backend de compilación elegido, que cambia radicalmente el equilibrio entre la velocidad de inicio y el rendimiento de ejecución.

Era horaCranelift (JIT por defecto) + AOT mediante compilación wasmtimeBytecode Alliance · gobernanza abierta, utilizada por Fastly, Shopify, Aurabase
wasmerSinglepass, Cranelift o LLVM de su elecciónSinglepass minimiza el tiempo de compilación; LLVM maximiza el rendimiento de ejecución
WasmEdgeCompilador AOT específico del proyectoCNCF · borde posicionado/IoT y nativo de la nube

Singlepass, el backend de compilación más rápido de Wasmer, existe precisamente porque su equipo identificó el arranque en frío como un eje distinto del rendimiento de ejecución en estado estable: un módulo compilado en Singlepass se inicia más rápido, pero se ejecuta más lento durante la carga máxima que el mismo módulo compilado en LLVM. Es un compromiso aceptado, no un defecto oculto.

Una cifra publicada por un proveedor de tiempo de ejecución no es una auditoría independiente

Wasmer ha publicado sus propias comparaciones de rendimiento con Wasmtime, una práctica que ha provocado debates en la comunidad WASM sobre la metodología utilizada y la comparabilidad de los escenarios probados. Esta no es una acusación de mala fe: es un recordatorio estructural. Un editor de tiempo de ejecución tiene un gran interés en publicar el escenario en el que gana, lo que hace que la verificación independiente sea aún más útil antes de decidir una elección de arquitectura en un solo número.

#
Resumen

Cuadro comparativo: qué documenta cada fuente y qué no documenta

<125 ms
BOTA PETARDO
Agache et al., INDE 2020
3
COMPARACIÓN DE TIEMPOS DE EJECUCIÓN DE WASM
Wasmtime, Wasmer, WasmEdge
0
REFERENCIA ARRANQUE EN FRÍO AURABASE
Wasmtime comprobado en producción, no se han publicado mediciones.
Petardo (AWS)< 125 ms de inicio, < 5 MiB de sobrecarga Artículo de investigación revisado por paresAgache et al., INDE USENIX 2020
Lucet → Wasmtime (rápido)Creación de instancias en milisegundos (2019) Figura del proveedor, no reproducida aquíAnuncio de Compute@Edge, Fastly
WasmEdgeMenor consumo de memoria y de inicio en comparación con la afirmación del producto DockerPublisherDocumentación oficial de WasmEdge (CNCF)
Faasmo (búsqueda)El aislamiento WASM es significativamente más barato de crear instancias que un contenedor. Utiliza WAVM, no Wasmtime.Shillaker & Pietzuch, USENIX ATC 2020
Contenedor Docker estándarCientos de ms a varios segundos Ningún número de consenso únicoComportamiento ampliamente documentado

Estas cinco líneas no se leen como una clasificación única: provienen de diferentes metodologías, fechas y generaciones de tiempo de ejecución. Para una crítica metodológica más profunda de la confiabilidad de este tipo de punto de referencia WASM, nuestro artículo sobre los límites de los puntos de referencia de WebAssembly va más allá de la presente comparación, que permanece centrada en lo que cada fuente afirma concretamente.

#
Implicaciones prácticas

Lo que realmente cambia esta brecha para la elección de arquitectura de borde

La ventaja del arranque en frío de WASM depende más de las cargas más sensibles a la latencia de la primera solicitud, no de todas las cargas por igual.

En particular, pesa sobre el tráfico de borde muy irregular (ráfagas seguidas de silencios), sobre el aislamiento por solicitud en lugar de por contenedor compartido entre varias solicitudes, y sobre una infraestructura que en realidad se reduce a cero instancias entre dos picos en lugar de mantener un grupo activo permanentemente. En una carga estable y predecible, donde las instancias permanecen calientes de todos modos, la brecha de arranque en frío importa menos estructuralmente.

WebAssembly también mantiene restricciones distintas del arranque en frío: el acceso al sistema de archivos o a la red pasa por WASI, una interfaz que aún evoluciona dependiendo de los tiempos de ejecución y sus versiones, y un módulo compilado para iniciarse rápidamente (Singlepass en el lado de Wasmer, por ejemplo) no es necesariamente el más rápido una vez establecido bajo una carga pesada. El arranque en frío y el rendimiento máximo de ejecución siguen siendo dos ejes distintos, rara vez óptimos simultáneamente en el mismo perfil de compilación.

Para evaluar una elección de arquitectura de borde según este criterio, Aurabase incluyó tres preguntas concretas para hacerle a cualquier proveedor: qué tiempo de ejecución exacto se utiliza, qué backend de compilación (JIT o AOT) y si la cifra de arranque en frío avanzado ha sido medida por un tercero independiente o solo por el propio editor del tiempo de ejecución.

#
Preguntas frecuentes

Preguntas frecuentes

¿El arranque en frío de WebAssembly es aún más rápido que un contenedor Docker?+
En orden de magnitud, las fuentes citadas en este artículo van en esta dirección: microsegundos a milisegundos para la creación de instancias de un módulo WASM, en comparación con cientos de milisegundos y varios segundos para un contenedor clásico. Pero ninguna de estas cifras proviene de un protocolo de medición común a las dos familias de tecnologías, en fechas diferentes y en versiones diferentes. Debe tratarse como una tendencia ampliamente documentada, no como una garantía numérica válida para cualquier carga.
¿Por qué Wasmtime, Wasmer y WasmEdge anuncian números iniciales diferentes?+
Porque no se compilan de la misma manera. Wasmtime utiliza Cranelift como backend predeterminado y ofrece compilación temprana (AOT) a través de la compilación de wasmtime. Wasmer le permite elegir entre Singlepass (compilación más rápida), Cranelift o LLVM (mayor rendimiento en tiempo de ejecución, compilación más lenta). WasmEdge incluye su propio compilador AOT, diseñado para el borde y el IoT. La elección del backend explica buena parte de la brecha entre las cifras publicadas por cada proyecto.
¿Qué cambia realmente la compilación AOT (antes de tiempo) para el arranque en frío?+
Una compilación AOT elimina el paso de compilación de la ruta crítica de la solicitud: el módulo WASM ya está transformado en código de máquina antes de la invocación, todo lo que queda es cargarlo y crear una instancia. Este es el principio detrás de las compilaciones de Wasmtime en el lado de Wasmtime y el propio compilador de WasmEdge. Una compilación JIT paga parte de este costo con cada nueva instancia fría, a menos que el tiempo de ejecución almacene en caché el resultado.
¿Aurabase ha publicado un punto de referencia de arranque en frío para sus funciones WASM periféricas?+
No. Aurabase utiliza Wasmtime en producción para la ruta CLI de sus funciones perimetrales, dependencia verificada en aura-functions/Cargo.toml (versión 43, funciones asíncronas y de elevación de grúa), pero hasta la fecha no se han publicado cifras de arranque en frío medidas en esta infraestructura. Nuestro compromiso metodológico para cualquier cifra de rendimiento futura se detalla en nuestro artículo sobre metodología de referencia.
¿Cuál es la diferencia entre el inicio en frío de un tiempo de ejecución WASM y el de una base de datos Postgres sin servidor?+
Estas son dos capas diferentes de la pila. El inicio en frío que se describe aquí se refiere al entorno de ejecución del código, el propio tiempo de ejecución de WASM. Una base de datos Postgres sin servidor agrega su propia latencia de inicio, relacionada con el grupo de conexiones, al reanudar una instancia suspendida o establecer una nueva conexión cifrada. Nuestro artículo sobre el arranque en frío de Postgres sin servidor aborda específicamente esta segunda capa.
¿Podemos confiar en los puntos de referencia de arranque en frío publicados por los propios editores de tiempo de ejecución de WASM?+
Con precaución. Una cifra publicada por el editor de un tiempo de ejecución describe sus propias condiciones de prueba, rara vez se reproduce de forma independiente, y la comunidad WASM ya ha experimentado desacuerdos públicos sobre la metodología para las comparaciones de rendimiento entre tiempos de ejecución. Nuestro artículo dedicado a las limitaciones de los puntos de referencia de WebAssembly detalla estas cuestiones metodológicas con más profundidad.

Para conocer la capa de base de datos de este mismo problema, consulte nuestro artículo sobre el arranque en frío de Postgres sin servidor.

¿LISTO PARA IMPLEMENTAR?

Tu backend en cinco minutos.

No se requiere tarjeta de crédito · 500 MB gratis · 50,000 MAU