WebAssembly listo para producción? WASI Preview 2 lo hace realidad

Resumen:

WebAssembly, o Wasm para abreviar, ha prometido desde hace mucho tiempo revolucionar el desarrollo de aplicaciones. El sueño era simple pero poderoso (y familiar): escribe tu código una vez y hazlo funcionar en cualquier lugar. Wasm también prometió ejecutar código a velocidades cercanas a las nativas. Incluso mejor, a diferencia de intentos anteriores de runtimes universales como Java, Wasm ofreció garantías de seguridad más elevadas y una postura de seguridad predeterminada deny-by-default (el acceso a los recursos del sistema está deshabilitado a menos que un desarrollador lo indique de otra manera).
Hasta hace poco, la realidad de Wasm no alcanzó el potencial prometido. Las herramientas y características críticas necesarias para una adopción más amplia todavía faltaban. Sin embargo, WASI Preview 2 ha llenado esas brechas y ha abierto la puerta a la adopción masiva de Wasm en entornos de producción.

El modelo de componentes y el soporte HTTP integrado en WASI Preview 2 simplifican ciertos aspectos en comparación con POSIX, haciendo que WASI sea una interfaz más moderna y portable para aplicaciones web y back-end. Con esta tecnología, los desarrolladores pueden elegir bibliotecas de cualquier ecosistema o lenguaje, compilarlas como módulos y estructurarlos en una sola aplicación. Esto permite que los equipos dentro de una organización desarrollen sistemas con el stack de su preferencia y luego unifiquen sus componentes y módulos en una aplicación monolítica.

No es difícil ver cómo WASI Preview 2 ha transformado la posibilidad del futuro de Wasm. Esta tecnología debe impulsar un aumento rápido en la adopción y despliegue de Wasm, lo que beneficiará a desarrolladores e inversionistas tecnológicos alrededor del mundo. WASI Preview 2 es el punto de inflexión que lleva a una era de desarrollo de software más fácil, rápido y seguro para todos.

¿Por qué WASI Preview 2 hace que WebAssembly esté listo para producción?

WebAssembly, o Wasm para abreviar, ha prometido desde hace mucho tiempo revolucionar el desarrollo de aplicaciones. El sueño era simple pero poderoso (y familiar): escribe tu código una vez y hazlo funcionar en cualquier lugar. Wasm también prometió ejecutar código a velocidades cercanas a las nativas. Incluso mejor, a diferencia de intentos anteriores de runtimes universales como Java, Wasm ofreció garantías de seguridad más elevadas y una postura de seguridad predeterminada deny-by-default (el acceso a los recursos del sistema está deshabilitado a menos que un desarrollador lo indique de otra manera).

Hasta hace poco, la realidad de Wasm no cumplía con la promesa. A pesar del enorme potencial y la comunidad creciente, Wasm carecía de las herramientas, interfaces y APIs necesarias para que fuera verdaderamente apto para producción. Los desarrolladores que deseaban usar Wasm tenían que convertirse en expertos en Wasm, adentrándose en aguas oscuras y sin documentar o recurrir a empresas especializadas en Wasm como Cosmonic o Fermyon, que ofrecen PaaS simplificadoras de la curva inicial de aprendizaje.

Más que una vista previa: estabilizando el modelo de componente

WASI Preview 2, aunque se llame "vista previa", es sólo el nombre. WASI Preview 2 es el eslabón perdido que Wasm necesitaba para volverse una opción viable para casos de uso en producción. WASI, que significa "Interfaz de Sistema WebAssembly" (Inglés), es un conjunto de estándares que definen una manera estándar y segura para que los módulos Wasm interactúen con recursos de sistema. WASI Preview 2 representa un hito significativo en la evolución de Wasm porque provee un standard sólido desde el cual los desarrolladores pueden construir con confianza sabiendo que toda la plataforma no va a tener cambios que impliquen refactoring o incompatibilidades (similar a API versioning).

En el corazón de WASI Preview 2 se encuentra el Modelo de Componente WebAssembly. Esta pieza crucial del rompecabezas brinda una manera de componer módulos Wasm en componentes más grandes, incluso si fueron programados en diferentes lenguajes. Es un gran paso adelante en términos de flexibilidad y compatibilidad. El modelo de componentes define una IAB canónica (interfaz de aplicación binaria) que estandariza la manera en que los componentes se comunican entre sí y les impide acceder a las memorias de otros componentes. Esto elimina los tipos de errores y vulnerabilidades de seguridad más comunes.

Otro aspecto clave de WASI Preview 2 es la estabilización de las API. Esto garantiza la compatibilidad en el futuro para aplicaciones Wasm, dando a los desarrolladores la confianza para construir encima de Preview 2 sin preocuparse por desastres futuros. Es análogo al modo en que POSIX (la Interfaz de Sistema Portátil) estandarizó las interfaces a través de sistemas operativos Unix, facilitando en gran medida la creación de software "portable".

Más allá de 'POSIX para Wasm'

Pero WASI tiene la intención de ir más allá, incluidas las interfaces para todas las cosas que no son necesariamente recursos de sistema. WASI incluye HTTP como una interfaz de primera clase, una capacidad de red y conexión crítica que no está presente en POSIX, brindando mejores opciones para mantener tracing de lo que un módulo está permitido hacer en lugar de manejarlo como un socket (por supuesto, también puedes hacer eso). También simplifica ciertos aspectos en comparación con POSIX que hacen que WASI Preview 2 sea una interfaz más moderna y portable — tanto para aplicaciones web como de back-end.

Las implicaciones prácticas de WASI Preview 2 son enormes. Anteriormente, los desarrolladores lucharon por construir aplicaciones Wasm fuera de sistemas especializados (como PaaS que enmascaraban la complejidad). La falta de APIs y herramientas estables hizo difícil la confianza en Wasm como tecnología apta para producción. Preview 2 cambia todo eso, allanando el camino para una adopción más amplia, incluso mayoritaria, de Wasm.

En resumen, cuando se construyen aplicaciones Wasm, ahora se pueden elegir bibliotecas (o mal llamadas librerías) de cualquier ecosistema o lenguaje, compilarlas como módulos y estructurarlos para hacer una sola aplicación. Los equipos dentro de su organización pueden desarrollar los sistemas de los que son responsables con el stack que prefieran. Luego, a través de componentes y módulos, los desarrolladores y equipos pueden unificarlos en una aplicación monolítica con la confianza de que las piezas encajarán y se comportarán de manera predecible.

No hay duda de que Wasm siempre ha sido una tecnología con un enorme potencial. Hasta ahora, ese potencial ha sido frenado por brechas en las herramientas, la estabilidad y las características críticas. WASI Preview 2 llena esas brechas agradablemente, allanando el camino para que Wasm realice su promesa de amigabilidad con el desarrollador en entornos de producción. WASI Preview 2 y el modelo de componentes deben impulsar un aumento rápido en la adopción y el despliegue de Wasm. Por encima de todo, es un gran paso adelante que debería entusiasmar a cualquier desarrollador o líder tecnológico sobre el futuro de Wasm y alentarlos a ensuciarse las manos construyendo aplicaciones Wasm.

Cada gran cambio tecnológico tiene un punto de inflexión que impulsa la adopción. WASI Preview 2 debería ser ese punto de inflexión para Wasm. Hará que desarrollar software sea más fácil, más rápido y más seguro para los desarrolladores en todas partes.

Adaptación del original por Oscar Spencer en The New Stack:

Why WASI Preview 2 Makes WebAssembly Production Ready
Until recently, Wasm’s reality didn’t live up to the hype. Preview 2 is the missing link that Wasm needed to become viable for production use cases.
Nicolás Georger

Nicolás Georger

Self-taught IT professional driving innovation & social impact with cybernetics, open source (Linux, Kubernetes), AI & ML. Building a thriving SRE/DevOps community at SREDevOps.org. I specialize in simplifying solutions through cloud native technologies and DevOps practices.