Inicialmente, WASM prometía mejoras en el rendimiento y una mayor portabilidad para las aplicaciones web, pero ahora está teniendo un impacto en una cantidad cada vez mayor de entornos.
por Scott Carey

En solo cuatro cortos años, WebAssembly se ha liberado de sus orígenes como una tecnología útil basada en navegador y ahora impulsa algunas de las aplicaciones distribuidas más complejas del mundo, desde plataformas de transmisión como Disney+ hasta la potencia del comercio electrónico Shopify.
El viaje de WebAssembly más allá del navegador
WebAssembly, o WASM para abreviar, fue desarrollado por World Wide Web Consortium (W3C) y se publicó por primera vez en 2018. Es, en sus palabras, un “objetivo de compilación”, lo que significa que los desarrolladores pueden traer su propio código, generalmente Rust , C++ o AssemblyScript , y WebAssembly lo compila en un código de bytes para ejecutarlo en el navegador web a alta velocidad.
Luego, en 2019, Mozilla presentó su Interfaz del sistema WebAssembly (WASI) para acceder a los recursos del sistema operativo y sacar WebAssembly del navegador para ayudar a ejecutar aplicaciones de back-end de manera similar.
Como resultado, “los desarrolladores están comenzando a impulsar WebAssembly más allá del navegador, porque proporciona una forma rápida, escalable y segura de ejecutar el mismo código en todas las máquinas”, escribió el ingeniero principal senior de Fastly, Lin Clark , en una publicación de blog de 2019 .https://imasdk.googleapis.com/js/core/bridge3.516.0_es.html#goog_9030396961 second of 28 secondsVolumen 0%
Este cambio en el alcance de WebAssembly incluso llevó al cofundador de Docker, Solomon Hykes, a tuitear en 2019 que “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. Una interfaz de sistema estandarizada era el eslabón perdido. ¡Esperemos que WASI esté a la altura!”
Eso es un gran elogio y, de hecho, para sus mayores exponentes, como Kevin Hoffman, el creador del proyecto de espacio aislado de CNCF WasmCloud , WebAssembly está a punto de cambiar la industria como lo fue Docker en 2013 .
“Una de las cosas que queremos en nuestras soluciones en la nube es que sean pequeñas, rápidas, seguras y portátiles”, dijo Hoffman a InfoWorld. “Cuando apareció WebAssembly para proporcionar esto… eso hizo sonar todo tipo de alarmas para que yo construyera cosas en la parte trasera y en el borde “.
Esta expansión de WebAssembly ha visto aumentar el interés en la tecnología en un 43 % en Stack Overflow desde principios de 2021.
Qué debe abordar WebAssembly para satisfacer las necesidades empresariales
Aún así, hay algunos pasos importantes que deben darse para que WebAssembly alcance su potencial en el escenario empresarial, dijo el analista de Gartner, Fintan Ryan. “Creo que es una tecnología verdaderamente revolucionaria, pero la trayectoria aún es bastante lenta”, dijo a InfoWorld.
En la actualidad, WebAssembly sigue siendo una tecnología bastante compleja y de bajo nivel que es principalmente popular entre los proveedores especializados que ejecutan plataformas de transmisión de contenido a gran escala, redes de distribución de contenido (CDN) de alta intensidad, como Cloudflare Workers , así como con grandes plataformas donde los desarrolladores puede ejecutar cargas de trabajo intensivas aisladas entre sí, como lo ha hecho la plataforma de comercio electrónico Shopify .
La lentitud a la hora de impulsar los estándares de WebAssembly desde el W3C y la falta de herramientas de empaquetado realmente convincentes y fáciles de usar para desarrolladores son dos factores principales que obstaculizan la adopción generalizada de WebAssembly.
“Todos estamos ansiosos por ver qué sucede con el estándar WebAssembly y ver cómo WASI evoluciona para cumplir con todas nuestras demandas de redes seguras para comenzar a escribir potentes cargas de trabajo habilitadas para la red en WebAssembly puro, y no tener que depender de tiempos de ejecución propietarios para hacer eso. ”, dijo Hoffman de WasmCloud.
WebAssembly va más allá en la empresa
Mientras el resto de la industria espera ese momento Docker, aquí hay tres ejemplos de empresas que ya llevan WebAssembly al límite.
Bloomberg: Definiendo el futuro de Terminal con WebAssembly
El rendimiento es obviamente primordial para los clientes del especialista en datos financieros Bloomberg, ya que las principales instituciones financieras del mundo esperan datos actualizados y la capacidad de adaptar esos datos a sus requisitos únicos.
La muy popular aplicación Bloomberg Terminal muestra datos financieros en múltiples pantallas de un usuario utilizando un motor de procesamiento de datos tabulares patentado escrito en C++, que está envuelto con una interfaz de navegador Chromium integrada que aloja miles de aplicaciones JavaScript.
“El aumento potencial de la velocidad de ejecución de algunos cálculos es donde WebAssembly abre oportunidades para que mejoremos el rendimiento de nuestros componentes basados en la web”, dijo a InfoWorld Itay Dafna, ingeniero de software de Bloomberg especializado en análisis cuantitativo.
Un servicio que mantiene el equipo de Dafna es BQuant, una aplicación de Python creada en portátiles Jupyter que se integra con Terminal para permitir a los analistas crear, probar y compartir su propia investigación de datos de Bloomberg. Dafna y su equipo comenzaron a ver el potencial de WebAssembly para permitir a los usuarios compartir sus resultados fuera de las plataformas de Bloomberg como un componente web independiente e integrable.
“Una arquitectura típica de dichos componentes separa el front-end, donde se representan los artefactos, del back-end, donde se realizan los cálculos. En nuestro caso, el componente necesitaba ejecutarse en modo híbrido, tanto en un cuaderno Jupyter con un kernel de Python como de forma independiente en el navegador”, dijo Dafna.
“Si escribimos modelado de datos y lógica de cómputo en WebAssembly, podemos ejecutarlo en el kernel de Python y también en otros entornos, como la web, con resultados idénticos”, dijo, enfatizando que poder ejecutar Python y JavaScript La versión de la aplicación con “resultados idénticos” no se había pensado anteriormente.
Sin embargo, Dafna admite que poner esto en producción “no fue fácil”, principalmente porque el código de Python que se ejecuta en WebAssembly actualmente no viene con un formato de máquina virtual (VM) estandarizado. Aunque WebAssembly funciona a la perfección en el navegador hoy en día, para cualquier cosa escrita en Python, “tienes que crear el tuyo propio, y eso requirió mucho trabajo pesado y código de andamiaje para ser escrito por nosotros”. Esto limita la promesa de “escribir una vez, ejecutar en cualquier lugar” de WebAssembly.
Dicho esto, Dafna y la comunidad de ingeniería en general de Bloomberg siguen comprometidas con WebAssembly. “Estamos muy entusiasmados en Bloomberg con esta tecnología y la vemos como una parte importante del futuro del ecosistema de la Terminal”, dijo. “Todavía estamos buscando más lugares para integrarlo donde tenga sentido y, una vez que se agreguen más funciones a los estándares del lenguaje WebAssembly y haya más herramientas disponibles para los desarrolladores, será mucho más fácil de adoptar”.
La BBC: Moviéndose al metaverso con WebAssembly
Si nos estamos moviendo hacia un mundo donde el entretenimiento en el hogar ya no es solo transmisión de video y audio, sino también experiencias interactivas ricas e incluso experiencias de realidad virtual o mixta dentro del metaverso , ¿cómo se puede admitir eso en los dispositivos que se encuentran en el hogar de la persona promedio hoy en día?
Este es el tipo de preguntas que se hacen dentro del departamento de investigación y desarrollo de la BBC mientras busca esbozar la próxima iteración de su enormemente popular aplicación de transmisión de video iPlayer, una que “puede brindar experiencias inmersivas e interactivas”, Tim Pearce, un Ingeniero de I+D de la BBC, le dijo a InfoWorld.
Si bien el iPlayer actual tiene múltiples bases de código de aplicación de cliente para varias plataformas de destino (iOS, Android, televisores inteligentes, web receptiva y dispositivos heredados), WebAssembly tiene el potencial de convertirse en una capa de traducción común para todas estas plataformas y más en el futuro.
“Creemos que WebAssembly brinda la solución perfecta para los desafíos que enfrentamos”, dijo Pearce durante una sesión en la Cumbre WebAssembly 2021 . “WebAssembly permite a los desarrolladores internos y externos crear experiencias individuales en el lenguaje y las herramientas de su elección, como un motor de juegos, para producir un binario universal que es a la vez eficaz y aislado de otras experiencias en la plataforma”.
Esto podría volverse crucial en un futuro en el que la BBC encargue ricas experiencias interactivas de la misma manera que transmite contenido en la actualidad. “Lo que hace WebAssembly allí es permitirnos descargar el código de la aplicación y confiar en que no interferirá con otras aplicaciones en la plataforma”, dijo Pearce.
Esta idea finalmente se convirtió en una plataforma prototipo, llamada Single Service Player (SSP), construida por el departamento de I+D de la BBC. Su objetivo es permitir la ejecución de aplicaciones multimedia en una amplia variedad de plataformas de destino desde una única base de código C ++ de manera segura y en un espacio aislado.
Sin embargo, adoptar WebAssembly en la BBC no ha sido una panacea. Pedirle a los ingenieros que cambien de JavaScript a C++ o incluso a Rust va a ser “un gran desafío” para Pearce y su equipo, y todavía hay algunos vacíos importantes que los ingenieros deben llenar para que WebAssembly cumpla su promesa. .
Por ejemplo, cuando construyeron el SSP, los ingenieros de I+D de la BBC pronto descubrieron que el código adhesivo necesario para que el tiempo de ejecución de Wasmtime pudiera dar acceso al módulo WebAssembly a varias funciones multimedia aún no existía. Así que construyeron una función de importación a mano. Sin embargo, el esfuerzo valió la pena: el SSP ahora puede apuntar consistentemente tanto a la web como a las plataformas nativas usando WebAssembly.
“WebAssembly es excelente fuera del navegador por las mismas razones por las que es excelente dentro del navegador: el rendimiento, es decir, y se ejecuta de manera segura y en un espacio aislado”, dijo Pearce. “Pero eso tiene que asentarse sobre un tiempo de ejecución, y la fase inicial de eso ha sido WASI y el grupo comunitario estableciendo ese estándar. Por el momento eso no ha avanzado rápidamente”.
Amazon y Disney: WASM cumple con las plataformas de transmisión
Habiendo alcanzado los 130 millones de suscriptores a fines de 2021, el rápido crecimiento del servicio de transmisión de Disney, Disney+, desde su lanzamiento en noviembre de 2019, ha visto crecer la demanda de aplicaciones nativas en dispositivos móviles, decodificadores, televisores inteligentes y consolas de juegos.
“Para satisfacer esta creciente demanda de que nuestro servicio se instale localmente en los decodificadores, el streaming de Disney necesitaba desarrollar un software único que permitiera a nuestros socios implementar una línea de base, que les diera acceso a nuestro contenido de manera rápida y eficiente, mientras todavía nos permite controlar el entorno y garantizar la calidad de experiencia que nuestros clientes esperan”, escribió Mike Hanley, vicepresidente de ingeniería de software para la transmisión de Disney, en una publicación de blog de septiembre de 2021 .
Los ingenieros de Disney comenzaron a construir este tiempo de ejecución portátil en 2019, comenzando en C y con la aplicación cliente en Rust, apuntando a WebAssembly y alojado de forma remota en AWS. Esto finalmente se convirtió en el kit de desarrollo de aplicaciones (ADK) de Disney+, que proporciona a los desarrolladores externos “una capa de abstracción limpia” y un “programa bien documentado para nuestros distribuidores, que conocen mejor su hardware y software, para trasladar nuestro tiempo de ejecución a sus dispositivos”.
Hablando de toda la pila de ADK, y no solo de WebAssembly, Hanley y su equipo concluyeron que “solo con esta tecnología podemos satisfacer la demanda del mercado a escala y controlar nuestra experiencia mientras nos aseguramos de que nuestros clientes estén satisfechos con una experiencia constante en todo momento”. ven el logotipo de Disney+, sin importar en qué dispositivo estén o dónde elijan experimentar nuestro contenido”.
De manera similar, los ingenieros que trabajan en el servicio de transmisión de video Prime Video de Amazon recurrieron a WebAssembly como medio para actualizar mejor su aplicación en una gama cada vez mayor de dispositivos y plataformas.
“En Prime Video, entregamos contenido a millones de clientes en más de 8000 tipos de dispositivos, como consolas de juegos, televisores, decodificadores y dispositivos de transmisión alimentados por USB. Cuando queremos hacer una actualización, cada uno de esos dispositivos requiere una versión nativa separada, lo que plantea un compromiso difícil entre la capacidad de actualización y el rendimiento”, escribió Alexandru Ene, ingeniero de software principal de Amazon Prime Video, en una publicación de blog de la compañía .
En agosto de 2020, Ene y su equipo comenzaron a investigar cómo WebAssembly podría ejecutar tareas que estaban realizando los componentes de JavaScript. “En esos experimentos, el código escrito en Rust y compilado en WASM fue de 10 a 25 veces más rápido que JavaScript”, escribió.
“Sin embargo, no podemos simplemente reescribir la aplicación Prime Video en Rust y ejecutarla en una máquina virtual WASM, ya que aún necesita ejecutarse en dispositivos heredados y navegadores que no son compatibles con WASM”, escribió Ene. En cambio, el equipo decidió mover solo sistemas seleccionados de bajo nivel de JavaScript a WASM, un cambio que ha hecho que las velocidades de cuadro promedio en televisores de rango medio pasen de 28ms a 18ms, y de 40ms a 25ms en dispositivos con menos capacidad. “Para alcanzar nuestro objetivo de generación confiable de cuadros de 60 cuadros por segundo y mejorar la latencia de entrada, moveremos más sistemas a WASM”, señaló Ene.
Qué sigue para WebAssembly
Una cosa que es innegable a partir de estos tres ejemplos es la gran cantidad de trabajo pesado que aún requieren los ingenieros para hacer de WebAssembly una solución empresarial verdaderamente viable. Si la tecnología alguna vez traerá su código eficaz, portátil y seguro a la corriente principal, eso debe cambiar.
“En este momento, es para las personas que pueden manejar las cadenas de herramientas o tienen el tipo de equipos que las configuran”, dijo Ryan de Gartner, “pero debería ser para todos”.
“Las herramientas han crecido mucho, pero todavía queda mucho trabajo por hacer durante el próximo año para mejorar esa historia de herramientas para la experiencia normal de los desarrolladores y poder compilar en WASM y ejecutarlo fuera del navegador”. dijo Luke Wagner, ex desarrollador de Mozilla que ahora trabaja en Fastly y es copresidente del grupo de trabajo de WebAssembly.
Hoffman de WasmCloud dijo: “Lo que creo que llevará a WebAssembly al límite como el estándar de facto para aplicaciones distribuidas es cuando todos los principales compiladores de lenguajes puedan apuntar y convertir el código de red básico en algo que sea compatible con WebAssembly, para que simplemente funcione. ”
A pesar de todo su progreso hasta ahora, algunos observadores de la industria, como Ryan de Gartner, no ven que WebAssembly alcance nunca el tipo de crecimiento explosivo que tuvo Docker. No necesariamente porque la tecnología sea menos útil, sino porque “no hay una marca detrás organizando reuniones y haciendo todo el trabajo que generó esa conciencia. La otra parte es que la gente todavía está descubriendo los casos de uso, que son menos claros que con los contenedores”.
Fuente: https://www.infoworld.com/article/3651503/the-rise-of-webassembly.html