WebAssembly (Wasm) es un formato de instrucción binario de bajo nivel, compacto y eficiente, diseñado para ser un objetivo de compilación portátil para lenguajes de programación de alto nivel como C/C++, Rust y Go. Se ejecuta en una máquina virtual basada en pila (stack-based virtual machine) y está diseñado para ejecutarse a una velocidad casi nativa. Wasm es seguro, ya que opera en un entorno de "sandbox", aislado del sistema host, y es interoperable con JavaScript, permitiendo la comunicación bidireccional entre módulos Wasm y el código JavaScript existente. Su diseño se centra en la portabilidad, la seguridad y el rendimiento predecible.
En el mundo real, WebAssembly ha extendido su utilidad más allá del navegador web. En el ámbito web, es utilizado por aplicaciones intensivas en computación como editores de video (ej. Figma), juegos 3D (ej. Unity WebGL), y emuladores (ej. Google Earth). Fuera del navegador, Wasm se está adoptando rápidamente en entornos de servidor (server-side Wasm) para microservicios y funciones "serverless" a través de runtimes como Wasmtime y Wasmer, ofreciendo ventajas en tiempo de arranque (startup time) y huella de memoria (memory footprint) en comparación con contenedores tradicionales. También se utiliza en edge computing, blockchain y como un formato de plugin seguro y eficiente para aplicaciones extensibles.
Para un arquitecto, WebAssembly representa una herramienta estratégica para optimizar el rendimiento y la portabilidad de las aplicaciones. Permite reutilizar código de lógica de negocio escrito en lenguajes de alto rendimiento a través de diferentes plataformas (web, server, edge), reduciendo la duplicación y mejorando la consistencia. Los trade-offs incluyen la complejidad adicional de la cadena de herramientas de compilación para Wasm y la necesidad de gestionar la interoperabilidad con JavaScript o el entorno host. Sin embargo, su modelo de seguridad de "sandbox", su eficiencia en recursos y su capacidad para ejecutar cargas de trabajo intensivas lo hacen ideal para arquitecturas de microservicios, funciones "serverless" y aplicaciones de edge computing donde el rendimiento y la seguridad son críticos, ofreciendo una alternativa ligera y rápida a los contenedores tradicionales.