As reflexões de Ryan Dahl sobre JavaScript Containers
(tinyclouds.org)- O Docker popularizou os contêineres Linux: virtualização no nível do sistema operacional que facilita a distribuição de software
- Cloudflare Workers e Deno Deploy implementam o conceito de contêiner JavaScript (em ambientes diferentes)
- Como os contêineres JS vão evoluir nos próximos anos?
Linguagem Universal de Script
- Cada vez mais coisas se integram com base na web: The web is eating the world
- A web é o meio básico de informação da humanidade, e o JS está profundamente integrado à infraestrutura da web, o que o torna diferente de outras linguagens
- Linguagens de script resolvem muitos problemas do lado do servidor e permitem escrever lógica de negócio de forma mais rápida e barata
- Linguagens de script são úteis e muitas delas são bastante parecidas entre si; o JavaScript é o mais amplamente usado e seguirá utilizável no futuro
- Ou seja, podemos considerar o JavaScript uma linguagem universal de script
Shell : Executables :: JavaScript : WebAssembly
-
Está surgindo um JavaScript Sandbox como nova camada de contêiner de mais alto nível para servidores
-
Não é algo criado para resolver os problemas que os contêineres Linux atacam
-
Surgiu como resultado da simplificação
→ Minimizar o boilerplate da lógica de negócio de serviços web
→ Compartilha conceitos com o navegador e minimiza os conceitos que os programadores precisam conhecer -
Todos os engenheiros web já conhecem as APIs de navegador do JavaScript
→ Como a abstração de contêiner JS foi construída com base nas mesmas APIs de navegador, há menos coisas para aprender
→ A universalidade do JS reduz a complexidade -
Shell é uma linguagem de script interpretada para executar programas Unix
→ Tem condicionais, loops e variáveis, mas é limitada e difícil de usar para programar; a funcionalidade real é executada pelos binários -
Nessa nova camada de abstração para servidores, o JS ocupa o lugar do Shell
→ É mais adequado para scripting do que Bash/Zsh, mas assim como o Shell chama executáveis, o JS Sandbox chama WASM
→ Se for necessário um trabalho complexo, como redimensionamento de imagens, é melhor usar WASM do que escrever isso em JS
→ Assim como você não faz redimensionamento de imagem em bash e chama o ImageMagick
A Estrela Guia
- O futuro dos scripts é o JavaScript do navegador
- O erro mais fundamental do Node.js foi ter inventado coisas demais fora do navegador conforme novas APIs eram padronizadas
→ Em 2010, não tínhamos nem módulos ES, mas depois que foram padronizados, foi preciso trazê-los para o Node
→ O mesmo aconteceu com Promise, Async/Await, Fetch, Streams e muitos outros
→ CommonJS require, package.json, node_modules, npm e o objeto global process, que não são padrão, acabarão sendo padronizados e adicionados ao navegador, ou substituídos por alternativas baseadas na web - Contêineres de alto nível ainda não foram padronizados, e ainda não sabemos bem como tudo isso vai se desenrolar
- Hoje, Cloudflare Workers e Deno Deploy usam a API FetchEvent, mas pode ser que encontremos uma interface melhor
Conclusão
- JavaScript é uma linguagem de script de propósito geral
- Por causa da universalidade do JavaScript, estão surgindo abstrações novas, parecidas com contêineres, para simplificar servidores
- Isso não quer dizer que os contêineres Linux vão desaparecer. Esse nível de abstração continuará sendo útil
→ Para muita da "lógica de negócio" que as pessoas escrevem, esse é um nível de abstração um tanto baixo
→ Ao construir um site, coisas como configuração do systemd são boilerplate - Talvez muitos "serviços web" possam ser simplificados se forem pensados da perspectiva de contêineres JavaScript, e não de contêineres Linux
- Estamos explorando essa ideia no Deno
→ Tentando simplificar de forma fundamental a abstração de servidor
2 comentários
Saiu um texto traduzido, pelo visto
https://medium.com/@yujso66/…
Se eu fosse resumir do meu jeito:
Acho que dá para organizar assim.
Outros links para ajudar na compreensão