De acuerdo, ¿cuáles son algunas de las lecciones aprendidas? He estado utilizando WebAssembly desde 2018 para sandbox.bio, pero también para otras herramientas y aplicaciones donde WebAssembly fue realmente útil. Quería hablar sobre el lado opuesto, que es cuando no usaría WebAssembly. Y el primer caso es si estás realizando pocos o demasiados cálculos. Sé que suena un poco sin sentido, pero hablemos de cómo se ven esos casos.
Entonces, pocos cálculos. El mejor ejemplo de eso es si estás utilizando una biblioteca que te permite diseñar tu interfaz de usuario en Rust y se compila a WebAssembly. Mira, lo entiendo. Eso es muy genial, pero no es realmente práctico. Terminas incrustando mucho HTML y JavaScript extraño en esto, y no está claro cuál es el beneficio. Tu aplicación definitivamente no será más rápida. Quiero decir, si tu interfaz de usuario es tan lenta, debes replantear lo que estás haciendo. Y lo que podrías hacer es analizar solo las partes lentas y reemplazarlas con WebAssembly en lugar de usar WebAssembly para toda la aplicación, lo cual tiene menos sentido. Porque también habrá mucha sobrecarga, especialmente mental, mientras intentas descubrir cómo compilar estas cosas a WebAssembly. Y también, probablemente, otras personas en tu equipo que usan JavaScript no saben cómo usar Rust. Eso es una sobrecarga adicional que no creo que realmente valga la pena. Pero es genial, así que te lo concedo.
Por otro lado, en el extremo opuesto está el exceso de cálculos. Si estás utilizando más de cuatro gigabytes de RAM, por ejemplo, o si necesitas que algo se ejecute al 100% de la CPU durante minutos o incluso segundos, es posible que desees replantear si esa es la experiencia de usuario correcta que deseas brindar. Y tal vez tenga sentido ejecutar esta tarea en la nube.
Por otro lado, lo que he encontrado como el punto óptimo es cuando haces cosas como playgrounds, como lo hace Sandbox Bio, simulaciones a pequeña escala, procesamiento de audio y video, y preprocesamiento de carga. Y esto es algo que he utilizado varias veces, donde si le pides a los usuarios que carguen conjuntos de datos muy grandes, mientras se carga los datos, puedes realizar algunas verificaciones de integridad en los datos. Y esto también se puede hacer en JavaScript, pero en mi caso, muchas de las herramientas para realizar estas verificaciones de integridad estaban escritas en C para bioinformática, por lo que básicamente las llevé a la web con WebAssembly. Pero en general, en mi opinión, WebAssembly es realmente mejor para reutilizar código existente que no está escrito en JavaScript y que deseas llevar a la web, o simplemente agregarlo para obtener mejoras aquí y allá. Es cuando encontré que es más poderoso. Y también vale la pena decir que WebAssembly no es la herramienta que todos los desarrolladores deberían usar. Solo tiene sentido en algunos casos específicos, y si no tiene sentido para tu caso de uso, simplemente diría que no te molestes. Es una tecnología de nicho, eso es seguro. Otra razón por la que no usaría WebAssembly es tratar de reemplazar los contenedores. Y si observas lo que está sucediendo en el mundo de WebAssembly en este momento, verás mucha emoción sobre el uso de WebAssembly fuera del navegador. En algunos casos, algunas personas dirán que WebAssembly va a destruir los contenedores de Docker, lo cual honestamente me confunde un poco.
Comments