Las ideas de Ryan Dahl sobre los contenedores de JavaScript
(tinyclouds.org)- Docker popularizó los contenedores de Linux: facilitó el despliegue de software mediante virtualización a nivel de sistema operativo
- Cloudflare Workers y Deno Deploy implementan el concepto de contenedor de JS (en entornos distintos)
- ¿Cómo evolucionarán los contenedores de JS en los próximos años?
Lenguaje de scripting universal
- Cada vez más cosas se integran sobre la web: The web is eating the world
- La web es el medio base de la información humana, y JS está profundamente integrado en la infraestructura web, por lo que es distinto de otros lenguajes
- Los lenguajes de scripting resuelven muchos problemas del lado del servidor y permiten escribir lógica de negocio más rápido y a menor costo
- Los lenguajes de scripting son útiles, muchos se parecen entre sí, y JavaScript es el más ampliamente usado y seguirá siendo utilizable en el futuro
- Es decir, JavaScript puede considerarse un lenguaje de scripting universal
Shell : Ejecutables :: JavaScript : WebAssembly
-
Está surgiendo un JavaScript Sandbox, un nuevo contenedor de alto nivel para servidores
-
No está pensado para resolver los problemas que apuntan a resolver los contenedores de Linux
-
Es el resultado de la simplificación
→ Minimizar el boilerplate de la lógica de negocio de los servicios web
→ Compartir conceptos con el navegador y minimizar lo que el programador necesita saber -
Todos los ingenieros web ya conocen la API del navegador de JavaScript
→ Como la abstracción del contenedor de JS está construida sobre la misma API del navegador, se reduce lo que hay que aprender
→ La universalidad de JS reduce la complejidad -
Shell es un lenguaje de scripting interpretado para ejecutar programas de Unix
→ Tiene condicionales, bucles y variables, pero es limitado y difícil para programar; la funcionalidad real la realizan los ejecutables -
En esta nueva capa de abstracción para servidores, JS ocupa el lugar del Shell
→ Es más adecuado para scripting que Bash/Zsh, pero así como el Shell llama ejecutables, el sandbox de JS llama a WASM
→ Si se necesita una tarea compleja como redimensionar imágenes, es mejor usar WASM que escribirlo en JS
→ Igual que en bash no se redimensionan imágenes directamente, sino que se llama a ImageMagick
La estrella guía
- El futuro del scripting es JavaScript del navegador
- El error más fundamental de Node.js fue inventar demasiadas cosas alejándose del navegador, mientras se estandarizaban nuevas APIs
→ En 2010 ni siquiera teníamos módulos ES, pero una vez estandarizados hubo que llevarlos a Node
→ Lo mismo pasó con Promise, Async/Await, Fetch, Streams y muchas otras cosas
→ CommonJSrequire,package.json,node_modules, npm y el objeto globalprocess, al no ser estándares, o bien terminarán estandarizándose y agregándose al navegador, o serán reemplazados por alternativas basadas en la web - Los contenedores de alto nivel aún no están estandarizados, y todavía no está claro cómo evolucionará todo esto
- Actualmente Cloudflare Workers y Deno Deploy usan la API de
FetchEvent, pero también podría encontrarse una interfaz mejor
Conclusión
- JavaScript es un lenguaje de scripting de propósito general
- Gracias a la universalidad de JavaScript, están apareciendo abstracciones tipo contenedor que simplifican el servidor
- Esto no significa que los contenedores de Linux vayan a desaparecer. Ese nivel de abstracción seguirá siendo útil
→ Pero para mucha de la "lógica de negocio" que escribe la gente, es una abstracción algo de bajo nivel
→ Al construir un sitio web, cosas como la configuración desystemdson boilerplate - Probablemente muchos "servicios web" puedan simplificarse si se piensan desde la perspectiva de contenedores de JavaScript y no de contenedores de Linux
- En Deno están explorando esta idea
→ Buscan simplificar de raíz la abstracción del servidor
2 comentarios
Ya salió una traducción.
https://medium.com/@yujso66/…
Si lo resumo a mi manera, sería algo así:
¿No sería esa una buena forma de resumirlo?
Otros enlaces para ayudar a entenderlo