BLOG | OFICINA DEL CTO

¿Por qué deberías considerar WebAssembly?

Miniatura de Oscar Spencer
Óscar Spencer
Publicado el 2 de octubre de 2024

La tecnología cambia rápidamente a nuestro alrededor. Quizás hayas oído que WebAssembly (o Wasm para abreviar) está causando sensación entre los desarrolladores y entusiastas de la tecnología. Pero ¿qué es exactamente WebAssembly y por qué es lo suficientemente importante como para que le prestes atención? Vamos a entrar en materia.

¿Qué es WebAssembly?

WebAssembly, fundamentalmente, es un conjunto de instrucciones binarias. Es similar a los lenguajes ensambladores de los que quizás hayas oído hablar, como x86 o ARM, pero con algunas características y garantías de seguridad nuevas. Escribes código en un lenguaje de programación como C o Rust y ese código se puede compilar en un artefacto WebAssembly. Como Wasm fue creado inicialmente para la web, su principal atractivo era que se podían ejecutar aplicações de alto rendimiento en la web a velocidades casi nativas, aunque hoy en día WebAssembly está experimentando una amplia adopción fuera del navegador también.

Una cosa que diferencia a Wasm de otros objetivos de compilación es su portabilidad. El código WebAssembly se puede ejecutar en cualquier plataforma siempre que exista un entorno de ejecución para él, independientemente de la arquitectura subyacente. Esto significa que los desarrolladores pueden escribir su código una vez y esperar que se ejecute en todas partes, ya sea en Windows, macOS, Linux, sistemas operativos móviles, en el navegador o incluso en una bombilla.

¿Es WebAssembly seguro?

La seguridad es absolutamente primordial, especialmente en el mundo digital en el que vivimos hoy. Como tal, WebAssembly fue creado con la seguridad como un objetivo central de diseño. Tomemos un momento para pensar en lo que hacen los navegadores web. Cuando usted visita una página web, su navegador descarga un código desconocido y no confiable y lo ejecuta, algo completamente aterrador si lo piensa bien. La función de su navegador es protegerlo a usted y a su dispositivo de códigos maliciosos, y es esa misma mentalidad la que está incorporada en WebAssembly con:

  1. Sandbox: Esto aísla el código WebAssembly del entorno del host, evitando que acceda a datos no autorizados o determine cualquier información sobre dónde se ejecuta el código.
  2. Denegar acceso por defecto: WebAssembly tiene una política de seguridad de denegación predeterminada muy estricta, lo que significa que no se le permite acceder a los recursos del sistema sin permiso explícito. Esto llega incluso a recursos simples como la hora del sistema, que no está disponible a menos que se comparta específicamente con el código Wasm.
  3. Límites de la memoria: Cada instancia de WebAssembly en ejecución obtiene su propio fragmento de memoria que no puede ver más allá, completamente aislado de otras instancias de WebAssembly y de la memoria del host.

¿Es WebAssembly rápido?

WebAssembly fue diseñado para ser rápido. En comparación con JavaScript, el código Wasm se puede decodificar y comenzar a ejecutarse incluso antes de que se pueda analizar el código JavaScript. Permite nuevas experiencias en los navegadores, pero también ofrece un rendimiento casi nativo fuera del navegador con sus garantías de portabilidad y seguridad.

¿Por qué debería importarte?

No se trata en absoluto de reemplazar JavaScript. Ambas son tecnologías complementarias y fueron diseñadas para complementarse en lugar de competir. JavaScript sigue siendo necesario para las partes dinámicas e interactivas de las aplicaciones web, mientras que Wasm se utiliza más para tareas computacionalmente costosas.

Dado que el código WebAssembly se ejecuta dentro de un entorno de ejecución, es fácil insertarlo en una aplicação existente, ya sea una aplicação web o una aplicação que se ejecuta en el borde o en el servidor. Esto le permite ampliar su aplicação con código escrito en casi cualquier lenguaje o incluso código no confiable de terceros. Esto hace que WebAssembly sea ideal para sistemas de complementos, ya que puede ejecutar de forma segura código dentro de su aplicação proporcionado por miembros de la comunidad o clientes. El excelente modelo de seguridad de WebAssembly hace que todo esto sea posible.

WebAssembly es eficiente.

WebAssembly ha tenido un gran impacto en la informática sin servidor. En comparación con los contenedores, los módulos Wasm son diminutos: la mayoría de los módulos producidos tienen un tamaño del orden de kilobytes o megabytes de un solo dígito, mientras que los contenedores pueden tener fácilmente cientos de megabytes o varios gigabytes. Además del tamaño de almacenamiento, Wasm también resuelve el famoso problema del “inicio en frío”: el código de Wasm puede comenzar a ejecutarse en microsegundos y, por lo tanto, no necesita dejar el código en ejecución para poder responder a las solicitudes rápidamente. Podrías poner en marcha una instancia de Wasm cuando se recibe una solicitud con efectos muy mínimos en la latencia. Esto significa que los sistemas basados en WebAssembly pueden escalar hasta cero cuando no hay tráfico: una bendición tanto para la Madre Naturaleza como para su cuenta bancaria.

WebAssembly es componible.

En mi opinión, el verdadero cambio de juego es el modelo de componentes WebAssembly. Cambiará fundamentalmente la forma en que los desarrolladores construyen y componen software a través de:

  1. Acceso entre ecosistemas: ¿Quieres las bibliotecas de criptografía de Go, un serializador JSON de Rust y utilidades de análisis de números de Python? Ningún problema. Con el modelo de componentes, puede seleccionar software de prácticamente cualquier ecosistema de lenguaje y componerlos juntos como si fueran bibliotecas nativas, todas escritas en el mismo lenguaje.
  2. Flexibilidad de desarrollo: Diferentes equipos dentro de una organización pueden elegir la mejor herramienta para el trabajo. Pueden seleccionar lenguajes de programación y pilas de software que se ajusten a su experiencia y a los requisitos del proyecto, con la confianza de que los resultados de su equipo se vincularán perfectamente con la aplicação completa.

En pocas palabras, los desarrolladores pueden crear componentes de software en cualquier lenguaje que pueda producir código WebAssembly y luego componerlos fácilmente en una sola aplicação.

WebAssembly es una tecnología que merece su atención. Si usted es un desarrollador que busca agregar nuevas capacidades a su aplicação o una empresa enfocada en crear soluciones escalables y rentables, Wasm podría ser adecuado para usted. A medida que continúa madurando y ganando apoyo, WebAssembly está preparado para redefinir la forma en que pensamos e interactuamos con el desarrollo de software. No pierdas de vista WebAssembly porque no es solo el futuro: ya está aquí y está transformando el software tal como lo conocemos.

¿Quieres saber más sobre WebAssembly? Mira el podcast WebAssembly Unleashed de F5 en YouTube , Spotify o Apple Podcast .