Wasm for Frontend: una mirada a los casos de uso de los desarrolladores
Cuando se lanzó Second State en 2019, el principal caso de uso de WebAssembly estaba en la cadena de bloques para ejecutar contratos inteligentes.
“Necesitas un entorno realmente ligero, un arenero, para que funcionen [blockchains]y Docker, o los contenedores en general, eran demasiado pesados para eso, porque hay que hacer 1000 de ellos en seis segundos”, dijo Michael Yuan, director ejecutivo de Second State.
La startup con sede en Austin se enfoca en ofrecer soporte en su lugar WasmBorde, un tiempo de ejecución de WebAssembly para aplicaciones descentralizadas, perimetrales y nativas de la nube. WasmEdge es un proyecto sandbox alojado oficial y de código abierto Fundación de computación nativa en la nube (CNCF), un centro neutral de proveedores de código abierto. WasmEdge se deriva del mismo estándar WasmTimea Alianza de código de bytes proyecto. Yuan le dijo a The New Stack que en realidad son lo mismo.
“Pero creo que nuestras ofertas o características diferenciadoras son herramientas de desarrollo y API en torno a eso”, dijo Yeon. “Por ejemplo, estamos integrados en el escritorio de Docker El usuario de Docker obtiene una copia de WasmEdge ejemplo.”
Las solicitudes se pueden escribir en ambos Óxido o JavaScript y ejecutarse dentro del contenedor Wasm en lugar del contenedor Linux más tradicional, agregó. Kubernetes puede manejar ambos tipos de contenedores.
Wasm para interfaz
Sin embargo, cuando se trata de usar Wasm en el front-end, se usa con mayor frecuencia para admitir funciones sin servidor, explicó Yuan. Por ejemplo, TikTok ha implementado Wasm para serverless. En este caso, Wasm se ejecuta en el navegador. Otro caso de uso más común, dijo, es proporcionar contenido dinámico al frontend desde el backend.
“El backend puede tener servicios, o hoy en día es más común usar funciones sin servidor o microservicios”, dijo a The New Stack.
La relación entre Wasm y JavaScript es complicada, agregó Yuan. Cuando Wasm se lanzó por primera vez en el navegador, se consideraba ampliamente como una extensión de JavaScript, dijo. JavaScript era demasiado lento para algunas funciones y su alternativa, C++ los programas en el navegador eran muy peligrosos.
“De aquí es de donde proviene WebAssembly”, dijo. “Hay una serie de empresas que hacen esto figma lo hace. Y tiene tiempos de ejecución de WebAssembly en todos los principales navegadores, pero todos son tiempos de ejecución escritos por WebAssembly, como: Google y manzana. Así que ese es un aspecto: Wasm funciona codo con codo con JavaScript”.
Wasm se puede utilizar cuando el programa necesita realizar algún trabajo informático, cuando el tiempo de ejecución de JavaScript es demasiado lento o cuando el desarrollador desea utilizar una biblioteca de C++. La biblioteca se puede pasar al tiempo de ejecución de WebAssembly sentado en el navegador. Antes de 2019, este era el caso de uso más común y todavía se usa ampliamente en la actualidad.
BFF — Backend para frontend
Otra razón por la que los desarrolladores de frontend deberían conocer WasmEdge y otros tiempos de ejecución de Wasm es porque los desarrolladores de frontend hacen más trabajo de backend, dijo. Hay una gran cantidad de mejores amigos – backend para frontend.
“Los desarrolladores de frontend solían preocuparse solo por el frontend, pero desde su creación Vercel, netificar y empresas como esa, creo que están haciendo más de lo que tradicionalmente se conoce como trabajo de back-end”, dijo. “Ahora se llaman funciones sin servidor o funciones perimetrales, lo que significa que una función de servicio hace muchas cosas diferentes. Puede hacer el trabajo de la base de datos, aunque esto es menos común, pero en el contexto de Vercel hace una gran cantidad de representación del lado del servidor, por lo que en lugar de que los componentes del bastidor se representen en el navegador, los representamos en el servidor. Lo que llamamos tiempos de ejecución de WebAssembly nativos de la nube se ejecutan fuera del navegador”.
Óxido es probablemente el lenguaje más común para compilar en Wasm, agregó. Typescript también se compila en Wasm.
“Una de las características únicas de WasmEdge es que adaptamos el tiempo de ejecución de JavaScript y todo Pila de Node.js Inicie sesión en WasmEdge. Entonces puede ejecutar Node.js en el servidor y la interfaz dentro de WasmEdge. Implementación de React.jsYuan dijo.
Ejecutar todo el JS en un contenedor de Linux sería de cientos de megabytes, dijo. En comparación, ejecutar Node.js en un contenedor Wasm o dentro de WasmEdge es de solo 510 megabytes. Esta diferencia de tamaño puede ser particularmente importante como resultado de que la IA utilice un modelo para hacer predicciones sobre el reconocimiento facial, por ejemplo.
“Ahorra diez veces el espacio y el rendimiento”, dijo. “Así que esa es la razón principal por la que la gente de JavaScript está más interesada en él”.
Otro caso de uso para un backend habilitado para frontend es implementar Wasm dentro de bases de datos o canalizaciones de procesamiento de datos asociadas con las colas de mensajería de Kafka, dijo.
“Para mí, esa es realmente una gran tendencia que ha ocurrido en los últimos cinco años: ¿el desarrollador front-end está tomando un back-end?” Yuan dijo. “Muchas empresas y muchas herramientas se han construido en torno a esta idea”.