21 puntos por GN⁺ 2025-02-13 | 8 comentarios | Compartir por WhatsApp

"WebAssembly es el verdadero Write-Once-Run-Anywhere" "Para 2030, nadie se va a acordar de Kubernetes"

Portabilidad

  • Los contenedores resolvieron muchos problemas del desarrollo de software y eran más usables que las VM
  • Pero hoy en día los contenedores se han vuelto engorrosos de manejar por las herramientas complejas y el fuerte acoplamiento entre programa-contenedor-Linux
  • Los desarrolladores quieren enfocarse en escribir código y desplegar funcionalidades, y aprender Docker se convierte en una distracción
  • WebAssembly (WASM) ya está reemplazando a los contenedores en algunas áreas y ofrece una experiencia de "escribir una vez y ejecutar en cualquier lugar"
  • Varios lenguajes pueden compilarse a WASM, y aunque la falta de interfaces de sistema ha impedido su adopción generalizada, eso pronto se resolverá
  • La principal limitación actual de WASM es la falta de interfaces de sistema como acceso a archivos y redes, pero es un problema que se resolverá con el tiempo

Comparación con la JVM

  • WASM ofrece un concepto parecido al de la JVM de "escribir una vez y ejecutar en cualquier lugar", pero la JVM no se ejecuta en los navegadores web
  • Los navegadores web son un destino importante para desplegar aplicaciones, y por eso muchos desarrolladores terminan evitando la JVM
  • Últimamente, compiladores de binarios estáticos como GraalVM, Kotlin Native y Scala Native están surgiendo como alternativas a la JVM

Microservicios

  • En una arquitectura de microservicios, los servicios se conectan usando HTTP, RPC o un message broker
  • El costo y los problemas de confiabilidad de la comunicación por red son desventajas importantes, pero la mayoría de las empresas considera que las ventajas pesan más
  • Con la aparición de plataformas serverless como AWS Lambda, los microservicios ahora pueden desplegarse a nivel de funciones individuales
  • Cloudflare Workers se ejecuta dentro de un sandbox de V8 y permite invocar funciones en el mismo runtime sin solicitudes de red
  • Esto ofrece al mismo tiempo las ventajas de desarrollo de los microservicios y el rendimiento en runtime de una arquitectura monolítica
  • Otras empresas, como Wasmer, también están desarrollando soluciones basadas en WASM

Adopción de WASM

  • WASM sigue siendo una tecnología temprana, pero está evolucionando rápido y su soporte sigue creciendo
  • Hoy no funciona perfectamente en todos los entornos, pero es posible probar anticipadamente el futuro a través de plataformas como Cloudflare
  • Si usas lenguajes dinámicos como Python, Ruby o PHP, conviene esperar la evolución de WASM mientras aprendes además un lenguaje compilado como Go o Rust

8 comentarios

 
bus710 2025-02-14

K8s es una herramienta para orquestar contenedores; ¿con wasm perderá efectividad? Si es Docker, hasta cierto punto sí será desplazado, pero....

 
colus001 2025-02-14

WASM parece una nueva impresora 3D. Dicen que "viene un mundo nuevo", pero en realidad casi nadie lo usa...

 
halfenif 2025-02-14

https://madewithwebassembly.com/

Aquí hay una recopilación de casos de implementación.

(Personalmente,) me parece que sobre todo áreas como CAD o el procesamiento de imágenes son las que se ven más prometedoras.

De pronto me acordé de un equipo de desarrollo de soluciones que hace tiempo estaba dándole vueltas a cómo implementar imágenes médicas de alta resolución en la web.

 
halfenif 2025-02-14

Aprendiendo WASM con ejemplos
https://es.news.hada.io/topic?id=11891

Lo sigo y lo pruebo.

 
jujumilk3 2025-02-14

Parece que k8s seguirá firme incluso en 2030

 
yangeok 2025-02-14

¿Al final vamos a tener que aprender tanto Docker como WASM? jaja Aun así, como Docker también se volvió más fácil de adoptar a medida que la tecnología maduró, creo que con WASM podría pasar algo parecido y avanzar hacia una mayor facilidad de uso.

 
clickin 2025-02-13

Al final, parece que terminará apoyándose en el rendimiento del runtime de wasm; ¿no acabará V8 ocupando la misma capa que la JVM?
Me preocupa que nos espere un futuro en el que el comportamiento de WASM cambie según la versión de V8 y haya que depurar todo eso.

 
GN⁺ 2025-02-13
Opiniones en Hacker News
  • La falta de interfaces de sistema es el principal factor que está frenando una adopción más amplia. El acceso a archivos, redes y similares se integrará con el tiempo
    • Sin embargo, agregar acceso a archivos, redes y similares puede introducir vulnerabilidades de seguridad. Ese fue un factor que terminó rompiendo la promesa de Java de 'escribe una vez, ejecuta en cualquier lugar'
    • WASM resuelve un problema distinto al de los contenedores. WASM es eficiente para ejecutar código en sandbox
    • Es muy probable que WASM se convierta en un estándar para implementaciones como Functions-as-a-Service
    • Los contenedores no resuelven ese problema. No son adecuados como límite de seguridad, y son más pesados y tienen un costo de arranque mayor que los binarios WASM
    • Los contenedores son adecuados para ejecutar múltiples procesos, hilos y usar funciones nativas del OS
  • WebAssembly ofrece una verdadera experiencia de 'escribe una vez, ejecuta en cualquier lugar'
    • Pero cuando interactúa con el exterior, la historia cambia. Cada runtime de V8 tiene interfaces sutilmente diferentes
    • El éxito de Docker se debió a que POSIX ya era un estándar establecido
  • PlatformOps (antes DevOps, SRE, Ops) ha visto sus promesas debilitadas por herramientas complejas y por el fuerte acoplamiento entre programa-contenedor-Linux
    • Los desarrolladores quieren escribir código y desplegar funcionalidades
    • PlatformOps lucha por resolver el problema
  • WASM no es una solución que vaya a reemplazar a los contenedores. Los contenedores resuelven el problema de ejecutar distintas versiones de PHP sin conflictos
    • WASM no resuelve ese problema
  • ¿Cuándo llegará el futuro de WASM? Han pasado 8 años y todavía no existe una cadena de herramientas estable y fácil de usar
    • Rust se lanzó en 2012 y 8 años después ya era estable
  • WASM no se ejecuta en hardware real. Puede considerarse una máquina virtual
    • Los contenedores empaquetan aplicaciones que se ejecutan directamente sobre hardware real
    • WASM necesita un runtime. Se ejecuta dentro de una aplicación
    • WASM resuelve el problema de 'portabilidad' que resuelven JVM y .NET
    • Los contenedores agrupan la aplicación y sus dependencias
    • Las tecnologías pueden ser complementarias
  • Aprender a usar Docker no es una distracción
    • Solo hace falta un Dockerfile
    • Las apps WASM igual siguen necesitando Kubernetes
    • WebAssembly no crecerá mucho en los próximos 5 años
  • WASM es otra capa de abstracción. Que reemplace a todo dependerá de las concesiones frente a otras soluciones