IRCNF

WebAssembly Saiu do Navegador. Agora Roda Dentro da Shopify, Cloudflare e do Seu Cluster Kubernetes.

Compartilhar:
WebAssembly Saiu do Navegador. Agora Roda Dentro da Shopify, Cloudflare e do Seu Cluster Kubernetes.

O WebAssembly foi lançado em 2017 como solução para um problema do navegador: JavaScript era lento demais para código crítico de performance, e plugins nativos eram perigosos demais. A resposta foi um formato binário compacto que conseguia executar código quase nativo dentro de um ambiente sandbox no navegador — com segurança, portabilidade e velocidade. Funcionou. Editores de vídeo, ferramentas CAD e simulações científicas migraram para a web. A performance do Figma triplicou quando migrou seu motor de renderização para C++ compilado em WASM.

Então algo inesperado aconteceu. Engenheiros começaram a perguntar se um formato binário rápido, seguro e agnóstico a linguagens poderia ser útil em outro lugar que não o navegador. A resposta foi sim, e o ecossistema que cresceu em torno dessa resposta agora está maduro o suficiente para uso em produção.

O Modelo de Componentes: a peça que faltava chegou

A especificação original do WebAssembly tinha uma limitação fundamental para uso no lado do servidor: dois módulos WASM compilados de linguagens diferentes não conseguiam se chamar sem código de cola manual e propenso a erros de gerenciamento de memória. Uma biblioteca em Rust e um serviço em Go viviam em espaços de memória separados e não tinham um sistema de tipos compartilhado. Isso tornava arquiteturas poliglotas composáveis impraticáveis.

O Modelo de Componentes do WebAssembly, estabilizado em 2025, resolve isso com uma interface binária de aplicação compartilhada e uma linguagem de descrição de interface agnóstica chamada WIT (WebAssembly Interface Types). Um arquivo WIT declara quais funções e tipos de dados um componente exporta ou importa, sem suposições de memória específicas de linguagem. O toolchain — wit-bindgen, wasm-tools, jco — gera o código de integração automaticamente. O resultado prático: um parser Rust de alta performance, um pipeline de ML em Python e um frontend em TypeScript podem compor como componentes WASM sem FFI manual. O WASM 3.0 foi ratificado como padrão W3C em setembro de 2025, incorporando garbage collection, memória de 64 bits, SIMD relaxado e tratamento de exceções junto com o Modelo de Componentes.

WASI: a camada de interface que torna a portabilidade real

Executar WASM fora do navegador exige alguma forma de o módulo interagir com o sistema hospedeiro — ler arquivos, abrir sockets de rede, escrever na saída padrão. O WebAssembly System Interface (WASI) define essas APIs em um modelo de segurança baseado em capacidades: um módulo recebe apenas o acesso que lhe é explicitamente concedido no momento da instanciação. Nada mais é acessível.

O WASI 0.2, lançado em janeiro de 2024, consolidou a linha de base estável de produção — I/O de arquivos, sockets de rede e integração com o Modelo de Componentes. O WASI 0.3, adicionando suporte nativo a async com primitivas de stream e future tipadas, estava finalizando o trabalho de especificação no início de 2026. A versão 1.0 — o primeiro lançamento "estável para sempre" — está projetada para o final de 2026 ou início de 2027. A trajetória dá aos autores de bibliotecas um ABI estável para mirar e aos operadores um roadmap claro sobre quais garantias de portabilidade serão cobertas eventualmente.

Onde já existem implantações em produção

O ponto de prova mais concreto em larga escala é o Shopify Functions. Desde 2022, a Shopify permite que desenvolvedores terceiros personalizem a lógica de checkout, desconto e envio implantando módulos WASM que rodam dentro de um runtime específico na infraestrutura da Shopify. Cada módulo executa dentro de um orçamento estrito de 5 milissegundos; as latências medidas normalmente ficam entre 0,8 e 2,5 milissegundos. Os desenvolvedores escrevem em Rust, JavaScript (via compilador Javy da Shopify, que empacota um motor V8 reduzido em um binário WASM), Zig ou TinyGo. A fronteira de segurança importa: código de comerciante não confiável roda em produção na escala da Shopify sem acesso a recursos do sistema hospedeiro. Nenhum escape do sandbox ocorreu. Em junho de 2026, o sistema legado Scripts que o Functions substituiu foi totalmente aposentado.

No lado da edge computing, o Compute@Edge da Fastly é um ambiente de execução puramente WASM que oferece cold starts de microssegundos para processamento de requisições na borda da rede. O Cloudflare Workers oferece suporte a módulos WASM e adicionou suporte a Container em junho de 2025 para workloads híbridos. O sinal mais significativo da indústria veio no final de 2025, quando a Akamai adquiriu a Fermyon — a empresa por trás do framework Spin para microsserviços WASM serverless — e trouxe o Fermyon Wasm Functions para disponibilidade geral na borda globalmente distribuída da Akamai em novembro de 2025. Quando a maior CDN do planeta adquire uma empresa de WASM serverless, a aposta no futuro da tecnologia é institucional, não experimental.

O panorama dos runtimes

Quatro runtimes dominam para diferentes casos de uso. O Wasmtime, a implementação de referência da Bytecode Alliance, alcançou o status de Core Project em abril de 2025 e entrega cerca de 82% da performance nativa em benchmarks de computação. É a escolha padrão para WASM no lado do servidor de uso geral. O Wasmer 6.0, lançado em abril de 2025, alega 95% de performance nativa e introduziu o Edge.js, que executa aplicações Node.js dentro de um sandbox WASM — uma ponte interessante para equipes com infraestrutura Node existente. O WAMR (WebAssembly Micro Runtime) tem como alvo dispositivos embarcados e IoT, rodando em hardware com tão pouco quanto 256 kilobytes de memória a 80 a 90% da performance nativa com compilação AOT. O WasmEdge é otimizado para workloads de IA e se integra ao Docker Engine como um shim de container junto com o Wasmtime.

O enquadramento do Docker é deliberado: "WASM e containers", não "WASM versus containers". O Docker Engine vem com shims nativos para Wasmtime e WasmEdge, então módulos WASM podem ser implantados usando comandos padrão docker run a partir de um Dockerfile scratch. O toolchain converge em vez de competir. O SpinKube, um projeto da CNCF construído sobre o framework Spin da Fermyon, torna o WASM um tipo de workload de primeira classe no Kubernetes — implantável ao lado de pods de container com os mesmos primitivos de orquestração.

O argumento de segurança

O modelo de segurança do WASM é "negar por padrão" no nível binário. Um módulo tem acesso zero ao sistema hospedeiro a menos que o hospedeiro conceda explicitamente uma capacidade específica no momento da instanciação. Isso é arquiteturalmente diferente dos containers, que compartilham o kernel do hospedeiro e dependem de isolamento por namespace e cgroup para limitar o que um workload pode alcançar. No WASM, o sandbox é imposto no runtime, independentemente da linguagem na qual o módulo foi compilado.

Para plataformas multi-tenant — o modelo da Shopify, onde centenas de milhares de comerciantes implantam código personalizado — esse é o recurso que torna a arquitetura viável. A alternativa é examinar cada pedaço de código de terceiros antes da implantação, o que não é viável em escala. O sandbox WASM elimina a categoria de risco em vez de gerenciá-la.

O quadro honesto de performance

WASM em runtimes do lado do servidor roda a cerca de 75 a 95% da velocidade nativa em workloads intensivos em computação — números críveis para a maioria dos casos de uso, com ressalvas. Operações envolvendo inteiros de 128 bits e certos primitivos criptográficos são de 2 a 7 vezes mais lentas que nativas. Workloads com I/O não veem benefício significativo; a vantagem é computacional. Cold starts são de 1 a 5 milissegundos, comparados a 50 a 500 milissegundos para containers — este é o número que torna o WASM atraente para implantações serverless e de borda, onde a latência de cold start afeta diretamente a experiência do usuário.

O tempo de desenvolvimento é genuinamente maior. Construir em Rust para WASM exige entender gerenciamento de memória e um fluxo de debugging diferente do que a maioria dos desenvolvedores web tem. O Modelo de Componentes e o toolchain WASI melhoraram significativamente, mas depurar através da fronteira de linguagens continua mais difícil do que depurar dentro de uma stack de linguagem única. O ecossistema está aproximadamente onde JavaScript estava nos primeiros anos do Node.js: poderoso, produtivo e exigindo investimento para ser usado bem.

A pergunta "devo usar WASM em vez de containers?" tem uma resposta mais limpa em 2026 do que tinha dois anos atrás: use WASM quando a latência de cold start importa (edge e serverless), quando você precisa de execução em sandbox de código não confiável, ou quando quer composição de componentes agnóstica a linguagens. Use containers quando precisar de um ambiente Linux completo, ampla compatibilidade de bibliotecas ou acesso a GPU. Use ambos quando seu workload tiver camadas que se beneficiam de cada um — que é cada vez mais o que as ferramentas de infraestrutura estão projetadas para suportar.

Compartilhar:
WebAssembly Saiu do Navegador. Agora Roda Dentro da Shopify, Cloudflare e do Seu Cluster Kubernetes. | IRCNF - Intelligent Reliable Custom Next-gen Frameworks