21 pontos por GN⁺ 2025-02-13 | 8 comentários | Compartilhar no WhatsApp

"WebAssembly é o verdadeiro Write-Once-Run-Anywhere"
"Em 2030, ninguém mais vai se lembrar do Kubernetes"

Portabilidade

  • Os contêineres resolveram muitos problemas do desenvolvimento de software e eram mais fáceis de usar do que VMs
  • Mas hoje os contêineres se tornaram trabalhosos de lidar por causa de ferramentas complexas e do forte acoplamento entre programa-contêiner-Linux
  • Os desenvolvedores querem se concentrar em escrever código e fazer deploy de funcionalidades, e aprender Docker acaba sendo uma distração
  • WebAssembly (WASM) já está substituindo contêineres em algumas áreas e oferece uma experiência de "escreva uma vez, execute em qualquer lugar"
  • Várias linguagens podem ser compiladas para WASM, e a falta de interfaces de sistema ainda impede uma adoção mais ampla, mas isso deve ser resolvido em breve
  • A principal limitação atual do WASM é a falta de interfaces de sistema, como acesso a arquivos e rede, mas isso é algo que deve ser resolvido com o tempo

Comparação com a JVM

  • O WASM oferece um conceito de "escreva uma vez, execute em qualquer lugar" semelhante ao da JVM, mas a JVM não roda em navegadores web
  • Os navegadores web são um alvo importante para a distribuição de aplicações, e isso faz com que muitos desenvolvedores evitem a JVM
  • Recentemente, compiladores de binários estáticos como GraalVM, Kotlin Native e Scala Native vêm surgindo como alternativas à JVM

Microsserviços

  • Em uma arquitetura de microsserviços, os serviços são conectados usando HTTP, RPC ou message brokers
  • O custo e os problemas de confiabilidade da comunicação em rede são as principais desvantagens, mas a maioria das empresas entende que as vantagens são maiores
  • Com o surgimento de plataformas serverless como AWS Lambda, os microsserviços passaram a poder ser implantados em unidades de funções individuais
  • Cloudflare Workers roda dentro de sandboxes do V8, permitindo chamadas de função no mesmo runtime sem requisições de rede
  • Isso oferece ao mesmo tempo as vantagens de desenvolvimento dos microsserviços e o desempenho em runtime de uma arquitetura monolítica
  • Outras empresas, como a Wasmer, também estão desenvolvendo soluções baseadas em WASM

Adoção do WASM

  • O WASM ainda é uma tecnologia inicial, mas está evoluindo rapidamente e seu suporte também está aumentando
  • No momento ele ainda não funciona perfeitamente em todos os ambientes, mas já é possível experimentar o futuro por meio de plataformas como a Cloudflare
  • Se você usa linguagens dinâmicas como Python, Ruby ou PHP, vale a pena esperar a evolução do WASM enquanto aprende também uma linguagem compilada como Go ou Rust

8 comentários

 
bus710 2025-02-14

O K8s é uma ferramenta para orquestrar contêineres; será que, por causa do wasm, ele vai perder efetividade? No caso do Docker, até pode haver alguma canibalização, mas....

 
colus001 2025-02-14

WASM parece uma nova impressora 3D. Dizem que "um novo mundo está chegando", mas na prática quase ninguém usa...

 
halfenif 2025-02-14

https://madewithwebassembly.com/

Há uma coletânea de casos de implementação aqui.

(Pessoalmente,) me parece que áreas como CAD ou processamento de imagens são as mais promissoras.

Isso me faz lembrar da equipe de desenvolvimento de soluções que, há algum tempo, estava quebrando a cabeça para implementar imagens médicas em alta resolução na web.

 
halfenif 2025-02-14

Aprendendo WASM com exemplos
https://pt.news.hada.io/topic?id=11891

Vou acompanhar e tentar fazer.

 
jujumilk3 2025-02-14

Mesmo em 2030, o k8s provavelmente continuará firme.

 
yangeok 2025-02-14

No fim das contas, vamos ter que entender tanto de Docker quanto de WASM? haha Mas, como o Docker também ficou mais fácil de adotar à medida que a tecnologia amadureceu, acho que o WASM deve seguir por um caminho parecido, ficando mais acessível também.

 
clickin 2025-02-13

No fim das contas, parece que isso acaba ficando apoiado no desempenho do runtime de wasm; será que o V8 não vai acabar se tornando uma camada equivalente à JVM?
Fico preocupado que estejamos caminhando para um futuro em que o comportamento do WASM varie conforme a versão do V8, e aí teremos que depurar isso.

 
GN⁺ 2025-02-13
Comentários no Hacker News
  • A falta de interfaces de sistema é o principal fator que impede uma adoção mais ampla. Acesso a arquivos, rede etc. acabarão sendo integrados com o tempo
    • Porém, adicionar acesso a arquivos, rede etc. pode introduzir vulnerabilidades de segurança. Esse foi o fator que destruiu a promessa do Java de "escreva uma vez, execute em qualquer lugar"
    • WASM resolve um problema diferente dos contêineres. WASM é eficiente para execução de código em sandbox
    • WASM tem grande chance de se tornar o padrão em implementações de Functions-as-a-Service
    • Contêineres não resolvem esse problema. Não são adequados como fronteira de segurança, são mais pesados do que binários WASM e têm custo de inicialização maior
    • Contêineres são adequados para executar vários processos, threads e usar funcionalidades nativas do sistema operacional
  • WebAssembly oferece uma verdadeira experiência de "escreva uma vez, execute em qualquer lugar"
    • Porém, quando interage com o mundo externo, a história muda. Cada runtime V8 tem interfaces sutilmente diferentes
    • O sucesso do Docker ocorreu porque POSIX já era um padrão estabelecido
  • PlatformOps (antes chamado de DevOps, SRE, Ops) teve sua promessa prejudicada por ferramentas complexas e pelo forte acoplamento entre programa-contêiner-Linux
    • Desenvolvedores querem escrever código e implantar funcionalidades
    • PlatformOps luta para resolver o problema
  • WASM não é uma solução que substitui contêineres. Contêineres resolvem o problema de executar diferentes versões do PHP sem conflitos
    • WASM não resolve esse problema
  • Quando o futuro do WASM vai chegar? Já se passaram 8 anos, mas ainda não existe uma toolchain estável e fácil de usar
    • Rust foi lançado em 2012 e, 8 anos depois, já era estável
  • WASM não roda em hardware real. Pode ser considerado uma máquina virtual
    • Contêineres empacotam aplicações que rodam diretamente em hardware real
    • WASM precisa de um runtime. Ele roda dentro da aplicação
    • WASM resolve o problema de "portabilidade" que JVM e .NET resolvem
    • Contêineres agrupam a aplicação e suas dependências em um bundle
    • As tecnologias podem ser complementares
  • Aprender a usar Docker não é um obstáculo
    • Basta ter um Dockerfile
    • Apps WASM ainda precisam de Kubernetes
    • WebAssembly não deve crescer muito nos próximos 5 anos
  • WASM é mais uma camada de abstração. Se vai substituir tudo depende dos trade-offs em relação a outras soluções