Del navegador al servidor
Cuando apareció WebAssembly en 2015, la tarea era simple: dar al navegador una velocidad cercana a la nativa. Pero las propiedades clave son portabilidad, seguridad de sandbox, compacto y poliglotismo — son ideales tanto para servidores como para casos de borde.
Por qué Wasm «entró» en el servidor
Un binario para todas las plataformas
Aislamiento «predeterminado» sin VM pesadas
Inicio en milisegundos y bajos requisitos de memoria
Dónde es útil ahora mismo
Serverless/FaaS con arranque en frío 1–10 ms
Cálculo de borde en nodos PoP/CDN
Sistemas de complementos con código no fiable

WASI: interfaces de sistema para Wasm
Si WebAssembly es un «ensamblador para la web», entonces WASI — su «POSIX». Estandariza el acceso al sistema de archivos, la red y el tiempo.
// Un ejemplo sencillo de WASI en Rust
use std::fs;
fn main() {
let content = fs::read_to_string("/data/config.json")
.expect("Failed to read file");
println!("Config: {}", content);
}Compila en wasm32-wasi y ejecuta en Linux, macOS, Windows y sistemas integrados con un tiempo de ejecución compatible.
Tiempos de ejecución: Wasmtime, WasmEdge, Wasmer
Runtime | Foco | ¿Dónde es bueno? |
|---|---|---|
Wasmtime | Seguridad, velocidad | Servidor, complementos, integración |
WasmEdge | Extensiones Edge/IoT, ML | Dispositivos integrados, nodos CDN |
Wasmer | SDK e integración | Aplicaciones con complementos/scripts |
# Instalación de Wasmtime
curl https://wasmtime.dev/install.sh -sSf | bash
# Lanzamiento del módulo
wasmtime run app.wasmAplicaciones prácticas
1) Serverless y FaaS
El arranque en frío instantáneo y el tamaño reducido hacen que Wasm sea ideal para las funciones como servicio.
// Fastly Compute@Edge (ejemplo)
use fastly::{Error, Request, Response};
#[fastly::main]
fn main(req: Request) -> Result<Response, Error> {
let mut resp = Response::from_body("Hello from Edge!");
resp.set_header("X-Custom-Header", "Wasm-powered");
Ok(resp)
}2) Sistemas de complementos
Código no fiable aislado sin VM ni contenedores.
// Envoy Proxy: filtro en Wasm
use proxy_wasm::traits::*;
use proxy_wasm::types::*;
#[no_mangle]
pub fn _start() {
proxy_wasm::set_http_context(|_, _| -> Box<dyn HttpContext> {
Box::new(CustomFilter)
});
}
struct CustomFilter;
impl HttpContext for CustomFilter {
fn on_http_request_headers(&mut self, _: usize) -> Action {
self.set_http_request_header("X-Wasm-Filter", Some("active"));
Action::Continue
}
}3) Microservicios y contenedores 🧱→🧊
Beneficios: imágenes «en kilobytes», inicio en milisegundos, consumo de memoria 10-100 veces menor.
# Ejemplo de Pod con Wasm (runwasi)
apiVersion: v1
kind: Pod
metadata:
name: wasm-app
spec:
runtimeClassName: wasmtime
containers:
- name: app
image: myregistry.io/wasm-app:latest4) Edge e IoT
WasmEdge está optimizado para sistemas integrados e inferencia de ML.
# Lanzamiento del módulo con soporte de TensorFlow Lite
wasmedge --dir .:. \
wasmedge-tensorflow-lite \
model.wasm input.jpgModelo de componentes: ensamblaje de bloques
WebAssembly Component Model y WIT describen las interfaces y los contratos entre los módulos, independientemente de los idiomas.
// WIT: interfaz de calculadora
package example:calculator
interface math {
add: func(a: s32, b: s32) -> s32
multiply: func(a: s32, b: s32) -> s32
}
world calculator {
export math
}El resultado es que las bibliotecas se componen, los contratos son estrictos y los equipos pueden elegir el «mejor lenguaje» para cada componente.
Idiomas y montaje
Asistencia de primera clase
Rust (
rustc)C/C++ (LLVM/Emscripten)
AssemblyScript
Se están desarrollando activamente
Go (TinyGo)
Python (Pyodide)
.NET, Swift
# Rust -> Wasm
cargo build --target wasm32-wasi --release
# Go (TinyGo) -> Wasm
tinygo build -o app.wasm -target=wasi main.goWasm ya no es un «acelerador de navegador», sino una plataforma básica para aplicaciones seguras, portátiles y rápidas en el servidor y en el borde de la red. Comienza con un pequeño experimento y comprenderás muy rápidamente dónde exactamente en tu pila reemplazará los contenedores pesados.
En el anexo Kodik pasarás de los conceptos básicos a la práctica: Rust, Go, Python, algoritmos, servicios de red e incluso proyectos con WebAssembly. Te esperan ejercicios interactivos, miniproyectos, logros y una comunidad de apoyo.
🔹 Lecciones cortas y claras y práctica
🔹 Suscripción PRO con cursos y proyectos adicionales
🔹 Nuestro Canal de Telegram — noticias, análisis y ayuda del equipo y la comunidad
Únete, ¡mejora tus habilidades y crea tu portfolio!
