¿Es viable WebAssembly fuera del navegador?

Ecosistema de F5 | 26 de noviembre de 2024

En resumen, sí.

WebAssembly (Wasm) se ha consolidado como una tecnología dominante que ha revolucionado el desarrollo web. Desde las primeras demostraciones técnicas, como el popular juego Doom ejecutándose íntegramente en el navegador, hasta grandes aplicaciones heredadas como Photoshop, que ofrecen una experiencia completa similar a la de un programa de escritorio en una página web convencional, WebAssembly brinda experiencias totalmente nuevas en un programa conocido que ya está instalado en todos los ordenadores personales del mundo.

Wasm se diseñó para que prácticamente cualquier lenguaje de programación pudiera ser compatible con él, independientemente del tipo de procesador que tenga el ordenador del usuario. Además, cuenta con varias propiedades de seguridad muy ventajosas que el navegador utiliza para impedir el acceso no autorizado a los datos o los recursos del sistema del usuario. Estas propiedades resultan increíblemente útiles fuera del navegador, especialmente cuando se quiere ejecutar código de forma aislada o que sea extremadamente portátil.

La historia de POSIX en Unix

De forma predeterminada, WebAssembly no tiene acceso a ningún recurso del sistema en el que se ejecuta. Todo se reduce a la mera manipulación de ceros y unos, por lo que hemos visto que Wasm se utiliza principalmente para tareas que requieren una gran capacidad de cálculo, como decodificar vídeos o manipular imágenes, en lugar de para desarrollar aplicaciones completas. Es relativamente fácil permitir que el entorno aislado de WebAssembly acceda a funcionalidades externas, como información sobre la hora actual o datos almacenados en un archivo, pero las API concretas que se utilizan suelen variar de una aplicación a otra.

Los sistemas Unix vivieron algo similar a lo que está ocurriendo con WebAssembly fuera del navegador. Muchas aplicaciones necesitaban acceder a recursos comunes del sistema, como las redes y los sistemas de archivos, pero cada sistema operativo lo hacía de una forma ligeramente distinta. Por este motivo, POSIX surgió como una interfaz estándar y portable para sistemas operativos: todos los sistemas de tipo Unix podían adoptarla para normalizar la forma en que los programas se comunicaban con el sistema operativo. Esto también permitió que los programas diseñados para funcionar en un sistema de tipo Unix pudieran adaptarse fácilmente para funcionar en otro.

Entra en escena WASI, la interfaz de sistema de WebAssembly

Para ofrecer una forma estándar de que los programas WebAssembly se comuniquen con un sistema operativo, nació WASI, la interfaz de sistema de WebAssembly. WASI se inspiró en gran medida en un proyecto llamado CloudABI, que, a su vez, se inspiró en POSIX. Esto abrió todo un mundo de posibilidades para que WebAssembly destacara fuera del navegador: los usuarios disponían ahora de todas las propiedades de seguridad y aislamiento de WebAssembly, combinadas con API cuidadosamente diseñadas para acceder a recursos habituales del sistema sin renunciar por completo al aislamiento. Como es natural, viene a la mente una tecnología similar: los contenedores. Ningún debate sobre este tema se considera completo sin hacer referencia a una de las publicaciones sobre WASI más profundas y compartidas, escrita por Solomon Hykes, cofundador de Docker:

Tuit de Solomon Hykes

Es toda una afirmación. WebAssembly ofrece una forma portable de empaquetar código que puede ejecutarse de forma segura en cualquier plataforma a velocidades casi nativas, con la ventaja añadida frente a los contenedores de que no es necesario disponer de ningún sistema operativo. La mayoría de los contenedores que crean los desarrolladores incluyen algún tipo de sistema operativo Linux en el que se ejecutan los programas, por lo que suelen ocupar cientos de megabytes o varios gigabytes. Los binarios de WebAssembly son código puro y suelen ocupar apenas unos kilobytes o unos pocos megabytes. Parece una locura imaginar un mundo en el que, en lugar de desplegar contenedores por todas partes, los desarrolladores desplieguen WebAssembly, pero esta realidad ya está empezando a materializarse, con varios proyectos en desarrollo activo para ejecutar Wasm en Kubernetes.

WebAssembly del lado del servidor en producción

Varias empresas ya se están beneficiando del uso de Wasm en el servidor en entornos de producción. Tanto Cloudflare como Fastly cuentan con enormes redes de computación en el borde que permiten a sus clientes desplegar código por todo el mundo, lo más cerca posible de los usuarios. Ambas eligieron estratégicamente WebAssembly para disponer de binarios pequeños y ultraportátiles, con tiempos de arranque rápidos y una sólida capacidad multiusuario. Cosmonic, una empresa emergente, utiliza ingeniosas soluciones de red para que los componentes de WebAssembly puedan comunicarse entre sí sin problemas, independientemente de dónde se ejecuten, ya sea en un diminuto dispositivo en la palma de la mano o en una máquina situada al otro lado del mundo. Otra empresa emergente, Fermyon, utiliza WebAssembly para aumentar enormemente la densidad de las cargas de trabajo de los servidores. El resultado es una reducción drástica de los costes de los servidores y una informática más sostenible para el planeta.

Crecimiento fuera del navegador

En resumen, aunque WebAssembly se desarrolló inicialmente para la computación dentro del navegador, ha seguido demostrando una gran viabilidad fuera de este. Su diseño, compatible con diversos lenguajes de programación y centrado en la seguridad, lo convierte en una opción excelente para ejecutar código de forma aislada y garantizar la portabilidad. La introducción de WASI ha impulsado el desarrollo de WebAssembly en el lado del servidor, lo que permite a las organizaciones aprovechar Wasm para ofrecer mejores productos con una rentabilidad considerablemente mayor. El potencial de WebAssembly fuera del navegador no es solo una idea, sino una realidad cada vez más presente en el sector.

Para obtener más información, consulta nuestra entrada anterior del blog, «Por qué debería importarte WebAssembly».

Además, vea o escuche nuestro pódcast «WebAssembly Unleashed».

Compartir

Artículos relacionados del blog

Proteger los endpoints de las API dificulta la seguridad de las API
Ecosistema de F5 | 30/01/2024

Proteger los endpoints de las API dificulta la seguridad de las API

Descubre las complejidades de la seguridad de las API, los retos a los que se enfrentan las organizaciones, la evolución de los ataques contra endpoints de API y la necesidad de políticas de seguridad adaptadas.

¿Qué es el sesgo de la IA y por qué es importante para TI?
Ecosistema de F5 | 22/02/2023

¿Qué es el sesgo de la IA y por qué es importante para TI?

Descubre los fundamentos del aprendizaje de la IA. Aprende cómo pueden surgir sesgos en la IA y qué riesgos plantean para las TI y la transformación digital.

Redefiniendo la ciberseguridad en el extremo de la nube distribuida con IA y telemetría en tiempo real
Ecosistema de F5 | 01/11/2021

Redefiniendo la ciberseguridad en el extremo de la nube distribuida con IA y telemetría en tiempo real

La transformación digital y la adopción de tecnologías en la nube están provocando cambios en las arquitecturas de las aplicaciones. Estos cambios introducen nuevas superficies de ataque, que son el objetivo de métodos de ataque avanzados, altamente organizados y con motivaciones económicas. Mediante el uso del framework Morpheus de NVIDIA, F5 está investigando técnicas para detectar estas amenazas avanzadas con telemetría en tiempo real y análisis basados en IA.

El papel de la nube en las aplicaciones nativas del edge
Ecosistema de F5 | 14/06/2021

El papel de la nube en las aplicaciones nativas del edge

No debería sorprender que, al igual que la aparición de la nube dio lugar a las aplicaciones nativas de la nube, el edge esté impulsando un conjunto de aplicaciones nativas del edge. Sin embargo, estas aplicaciones no residirán únicamente en el edge. Al mismo tiempo, están surgiendo nuevos patrones arquitectónicos que aprovechan las aplicaciones alojadas en la nube y en el centro de datos.

La creciente diversidad de ubicaciones y usuarios está impulsando a las empresas hacia el edge
Ecosistema de F5 | 03/05/2021

La creciente diversidad de ubicaciones y usuarios está impulsando a las empresas hacia el edge

En el contexto del ámbito de las aplicaciones, el término «usuario» siempre se ha referido a la entidad que interactúa con una aplicación. Del mismo modo que los cambios en las arquitecturas de las aplicaciones impulsan cambios en las tecnologías que permiten ofrecerlas y protegerlas, los cambios en la definición de usuario han provocado cambios en los lugares donde se despliegan las aplicaciones.

El edge está impulsando un renacimiento de las infraestructuras
Ecosistema de F5 | 26/10/2020

El edge está impulsando un renacimiento de las infraestructuras

A medida que las organizaciones aumentan la generación de datos y tratan de extraer valor empresarial de ellos, sin duda recurrirán a la analítica y la automatización basadas en la IA y el aprendizaje automático. Precisamente este tipo de cargas de trabajo son las que más se beneficiarían de una infraestructura optimizada y, sin embargo, hoy en día son las que menos probabilidades tienen de poder aprovecharla.