19 pontos por xguru 2022-05-10 | 2 comentários | Compartilhar no WhatsApp
  • 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

 
xguru 2022-05-20

Saiu um texto traduzido, pelo visto

https://medium.com/@yujso66/…

 
xguru 2022-05-10

Se eu fosse resumir do meu jeito:

  1. Hoje em dia estão surgindo muitas tecnologias de sandbox usando WASM.
  2. JavaScript é usado como um script que executa WASM.
  3. Um sandbox de WASM pode suportar tudo, do SO a contêineres e frameworks.
  4. Então, pode acabar surgindo um novo padrão de contêiner de alto nível nesse estilo de JS Container, em que você só precisa se preocupar com a lógica de negócio.
    Acho que dá para organizar assim.

Outros links para ajudar na compreensão