WASM va a reemplazar a los contenedores
(creston.blog)"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
K8s es una herramienta para orquestar contenedores; ¿con wasm perderá efectividad? Si es Docker, hasta cierto punto sí será desplazado, pero....
WASM parece una nueva impresora 3D. Dicen que "viene un mundo nuevo", pero en realidad casi nadie lo usa...
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.
Lo sigo y lo pruebo.
Parece que k8s seguirá firme incluso en 2030
¿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.
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.
Opiniones en Hacker News