La plataforma de edge cloud de Fastly

¿Qué es WASI?

La integración es un desafío importante para los empresarios que buscan optimizar las operaciones en varios entornos. Cuando las herramientas están aisladas, los empleados se enfrentan a ineficiencias y frustraciones, lo que puede dar lugar a oportunidades perdidas.

La interfaz de sistema de WebAssembly (WASI) ofrece una solución al proporcionar estándares comunes para ejecutar módulos de WebAssembly fuera de los navegadores web, lo que permite una integración más fluida con otros sistemas y software que utiliza tu empresa.

Sigue leyendo para obtener más información sobre WASI y descubrir cómo su adopción puede ayudar a optimizar los procesos, impulsar la productividad de los desarrolladores y llevar tu empresa a nuevas cotas.

¿Qué es WASI?

La interfaz de sistema de WebAssembly (WASI) es una iniciativa diseñada para expandir lo que WebAssembly (Wasm) puede hacer fuera del navegador. Proporciona una interfaz de sistema estandarizada (API) para los módulos de Wasm, lo que les permite interactuar con los recursos del sistema de forma segura y eficiente en varias plataformas, manteniendo un comportamiento coherente.

Wasm y WASI

Aunque Wasm y WASI puedan parecer similares, tienen objetivos distintos que contribuyen a optimizar las Operaciones. Conocer sus diferencias es fundamental para aprovechar sus fortalezas combinadas. Vamos a analizarlos más de cerca:

Wasm

Wasm permite ejecutar código de forma rápida y eficiente en cualquier CPU, lo que permite desarrollar aplicaciones que funcionan bien en cualquier entorno. Su principal cometido es ejecutar instrucciones binarias en distintos tipos de hardware. 

Estas son tus características clave:

  • Uso universal: basta con escribir código una vez para ejecutarlo en cualquier entorno compatible con WebAssembly.

  • Velocidad: Alcanza un rendimiento prácticamente nativo gracias a su formato compacto y su compilación directa.

  • Seguridad: aísla el código en un espacio protegido para reducir las vulnerabilidades.

  • Modularidad: Divide el trabajo en componentes reutilizables.

Básicamente, WebAssembly proporciona una abstracción sobre la amplia variedad de CPU que se utilizan en el sector, lo que permite que el código sea portable entre estas CPU

¿Cómo mejora WASI a Wasm?

WASI amplía las capacidades de WebAssembly al permitir la interacción del código con los sistemas subyacentes. Wasm se centra en la rapidez de la ejecución en distintas plataformas, mientras que WASI proporciona funcionalidades adicionales. 

Estas son sus mayores fortalezas:

  • Acceso al sistema: Permite leer y escribir archivos, conectarse a redes y mucho más.

  • Estandarización: unas API coherentes garantizan un comportamiento uniforme en todas las plataformas.

  • Seguridad: Minimiza los riesgos al conceder solo los permisos necesarios.

  • Flexibilidad: se sirve de un enfoque modular para facilitar únicamente las interacciones necesarias con el sistema.

A pesar de sus diferencias, Wasm y WASI están diseñados para funcionar juntos. Wasm se encarga de una ejecución universal eficiente, mientras que WASI proporciona capacidades a nivel de sistema y mejora la funcionalidad allí donde el código realiza tareas críticas. Su uso combinado permite crear aplicaciones potentes y multiplataforma adaptadas a tus necesidades.

¿Cuál es el objetivo de WASI?

WASI se desarrolló para abordar ciertos desafíos que surgieron a medida que WebAssembly (Wasm) ganaba popularidad entre las empresas. Aunque Wasm destaca por ejecutar código de forma eficiente en distintas plataformas, sus limitaciones dificultan una adopción más amplia. 

Veamos las restricciones de Wasm:

  • Acceso restringido: Wasm se encuentra en un entorno seguro, algo fundamental para la seguridad, sobre todo en el caso de los navegadores. Sin embargo, esto significa que Wasm no puede acceder directamente a recursos del sistema como archivos o redes. 

  • Interacción nativa limitada: Diseñado principalmente para la web, Wasm tiene una interacción mínima con las funciones del sistema. Sin acceso directo a las API del sistema, los módulos de Wasm no pueden realizar tareas como acceder al sistema de archivos o comunicarse con la red fuera de los navegadores. 

  • Herramientas fragmentadas: La falta de una forma estandarizada de que Wasm interactúe con los recursos llevó a los desarrolladores a recurrir a extensiones específicas del entorno o soluciones personalizadas. Estos diversos enfoques dieron lugar a herramientas fragmentadas, lo que hizo que el comportamiento de los módulos de Wasm variara según el entorno y complicó el desarrollo multiplataforma.

A medida que Wasm se extendía más allá de los navegadores, la necesidad de una interfaz de sistema uniforme se volvió crítica. Esta necesidad llevó al desarrollo de WASI, que es esencial para los siguientes fines:

  • Abordar la fragmentación: WASI proporciona un único conjunto de API que se puede utilizar en distintas plataformas, lo que garantiza que los módulos de Wasm actúen igual en cualquier lugar donde se ejecuten. Esto simplifica el desarrollo y reduce los problemas de compatibilidad, lo que te permite crear aplicaciones para servidores, dispositivos edge y mucho más.

  • Mejora de la seguridad y la portabilidad: También aumenta la seguridad al definir una interfaz estándar para las interacciones con el sistema. Se sirve de un modelo de seguridad basado en funcionalidades que solo concede los permisos necesarios a los módulos de Wasm, con la consiguiente reducción de los riesgos. 

Las API de WASI

WASI consta de varios componentes esenciales que funcionan en sintonía para proporcionar un potente entorno en el que ejecutar aplicaciones de WebAssembly. Estos componentes mejoran la funcionalidad, la seguridad y la flexibilidad de WebAssembly, lo que hace que sea adecuado para muchos usos más allá de los navegadores. A continuación se indican sus componentes principales:

API

La interfaz WASI proporciona API que permiten a los módulos de WebAssembly interactuar con los sistemas subyacentes. Estas API sirven como interfaz a través de la cual los módulos realizan diversas tareas, lo que garantiza que dispongan de las herramientas necesarias para operar eficazmente en su entorno. Las principales API incluyen:

  • Entrada/salida de archivos: WASI permite a los módulos leer y escribir archivos en el sistema host. Esta capacidad permite a los módulos gestionar el almacenamiento de datos, los archivos de configuración y el contenido creado por los usuarios, algo esencial para las aplicaciones que dependen de datos persistentes.

  • Redes: La interfaz incluye API de red, lo que permite a los módulos establecer y gestionar conexiones de red. Esta capacidad es crucial para las aplicaciones que necesitan comunicarse a través de internet o redes locales, y admite tareas que van desde simples peticiones HTTP hasta operaciones de red más complejas.

  • Hora: Esta interfaz proporciona a los módulos de WebAssembly la capacidad de interactuar con los relojes del sistema para obtener la hora actual o medir intervalos de tiempo. Esta API es crucial para tareas como registrar eventos, programar tareas o medir cuánto tardan las operaciones. 

  • Aleatoriedad: Esta interfaz es ideal para tareas que requieren una aleatoriedad de gran calidad, como generar claves de cifrado, crear identificadores únicos o implementar protocolos seguros.

  • Entrada/salida del terminal: Estas API se encargan de los flujos estándar de entrada, salida y errores, lo que permite la interacción con la consola u otros flujos de E/S.

Una mirada al futuro de WASI

WASI 0.2 sigue evolucionando, con esfuerzos continuos para introducir nuevas funcionalidades y capacidades como sockets, HTTP, almacenamiento de clave-valor y de blobs, configuración, mensajería, criptografía y un modelo de componentes. Muchos sectores y organizaciones están adoptando WASI para simplificar el desarrollo multiplataforma y mejorar la seguridad y el rendimiento de las aplicaciones empresariales.

En el futuro, los principios fundamentales de compatibilidad y combinabilidad guiarán la transición de WASI entre versiones. Estos principios garantizan que tus aplicaciones de WebAssembly existentes que requieren acceso al sistema sigan funcionando a medida que WASI avanza. Desarrollar aplicaciones ahora con las API actuales de WASI también mantendrá abiertas las opciones para incorporar futuras capacidades.

Fastly y WASI

Fastly ha sido un importante contribuidor al desarrollo y la adopción de Wasm y WASI, y sigue contribuyendo a los estándares y las implementaciones de código abierto en el World Wide Consortium (W3C) y la Bytecode Alliance

Infórmate sobre cómo Fastly apoya el código abierto y cómo Fastly Compute permite a los desarrolladores crear fácilmente las mejores experiencias para los usuarios finales. Empieza hoy mismo una prueba gratuita.

¿Listo para empezar?

Ponte en contacto con nosotros