Como funciona o JavaScript sem servidor? | Service workers e Cloudflare Workers

O JavaScript sem servidor é usado para construir aplicativos da web sem servidor com latência mínima.

Objetivos de aprendizado

Após ler este artigo, você será capaz de:

  • Defina o JavaScript sem servidor
  • Entenda como o JavaScript sem servidor é usado para construir aplicativos da web de baixa latência
  • Saiba por que o JavaScript é mais eficaz do que a VCL
  • Entenda armazenamento em cache HTTP e as solicitações HTTP
  • Saiba mais sobre sobre os service workers, o Cloudflare Workers e as diferenças entre eles

Copiar o link do artigo

O que é JavaScript sem servidor?

JavaScript sem servidor é um código JavaScript que compreende todo um aplicativo ou parte dele, sendo executado apenas quando solicitado. Não é hospedado em servidores de propriedade exclusiva. Ele permite que os desenvolvedores criem aplicativos sem servidor de alto desempenho e baixa latência (como os aplicativos JAMstack) que são executados em uma rede e evitam muitos problemas associados a outros aplicativos sem servidor, como as inicializações a frio.

Sem servidor O JavaScript é hospedado em uma rede de borda ou por um serviço de armazenamento em cache HTTP, que armazena conteúdo para responder rapidamente às solicitações HTTP. Os desenvolvedores podem escrever e implantar funções JavaScript que processam solicitações HTTP antes que elas percorram todo o caminho até o servidor de origem .

JavaScript sem servidor no servidor de borda

Ao utilizar o JavaScript sem servidor, é possível ampliar a funcionalidade e melhorar a experiência do usuário dos aplicativos existentes executando o código na borda, ou criar um novo aplicativo totalmente sem servidor que seja rápido e altamente escalável. O Cloudflare Workers é uma plataforma JavaScript sem servidor.

O que é Varnish?

Varnish é um acelerador web projetado para acelerar os aplicativos web e melhorar o desempenho do site. É um proxy reverso HTTP de armazenamento em cache, o que significa que ele reside na frente de qualquer servidor web e acelera o tráfego HTTP de e para esse servidor por meio de caching, ou armazenamento em cache, de qualquer conteúdo que seja solicitado com frequência pelos clientes web. A linguagem de configuração Varnish, ou VCL, é usada juntamente com o Varnish para permitir que os desenvolvedores personalizem a forma como o Varnish gerencia as solicitações web.

Qual é a vantagem de usar JavaScript em vez de VCL em uma arquitetura sem servidor?

VCL é uma linguagem de configuração desenvolvida para facilitar a configuração do cache do Varnish; não é uma linguagem de programação completa. A VCL não é flexível o suficiente para construir ou expandir aplicativos robustos. Em comparação com o JavaScript, é uma linguagem limitada em termos do que permite fazer. Além disso, a VCL não é utilizada fora das implementações do Varnish e, consequentemente, a maioria dos desenvolvedores não está familiarizada com ela. Por outro lado, o JavaScript é onipresente e já é amplamente utilizado na criação de aplicativos. O uso do JavaScript em uma arquitetura sem servidor permite que os desenvolvedores construam aplicativos completos em uma linguagem com a qual estão familiarizados.

O JavaScript sem servidor permite que um grupo mais amplo de desenvolvedores aproveite a computação sem servidor na borda, permitindo que esses desenvolvedores criem uma maior variedade de aplicativos.

Como a construção de um aplicativo com JavaScript sem servidor ajuda a reduzir a latência?

O JavaScript sem servidor é executado em uma rede de armazenamento em cache HTTP, que está mais próxima do usuário final do que o código hospedado em um servidor de origem. Dessa forma, as solicitações não precisam percorrer todo o caminho até o servidor de origem e voltar, e o aplicativo responde muito mais rapidamente às interações do usuário. Quanto mais geograficamente distribuídas forem as localizações de borda de uma rede de armazenamento em cache, maior a redução da latência.

Quando o JavaScript sem servidor é executado?

Em um modelo sem servidor, os aplicativos são divididos em funções, e o código de função é executado em resposta a determinados eventos: ele não é executado de outra forma. O evento que aciona o JavaScript sem servidor a ser executado é uma solicitação HTTP. Os desenvolvedores podem personalizar o tipo de solicitações HTTP às quais suas funções JavaScript respondem e a forma como a solicitação HTTP será alterada ou atendida.

O que é uma solicitação HTTP?

É uma solicitação enviada pelo HTTP (protocolo de transferência de hipertexto) de um cliente para um servidor. Os navegadores convertem as ações dos usuários, como clicar em um hiperlink ou enviar um formulário, em solicitações HTTP. A solicitação é então enviada para o servidor, e o servidor envia uma resposta HTTP para atender à solicitação. Uma solicitação HTTP também ocorre quando um aplicativo faz uma chamada de API.

O que é armazenamento em cache HTTP?

Armazenamento em cache HTTP é quando um servidor ou um navegador salva uma cópia de uma resposta a uma solicitação HTTP do usuário a fim de produzir respostas mais rápidas a futuras solicitações. Um servidor de CDN é um exemplo de cache HTTP. Alguns serviços de armazenamento em cache HTTP permitem que os desenvolvedores personalizem a forma como o armazenamento em cache HTTP funcionará para seus aplicativos.

A Cloudflare é uma rede de armazenamento em cache HTTP com data centers em todo o mundo que permite aos desenvolvedores escrever e implantar seu próprio JavaScript na borda de rede. Na rede Cloudflare, o armazenamento em cache HTTP não ocorre em nenhum servidor específico, mas sim dentro de qualquer data center que estiver mais próximo da origem da solicitação HTTP.

O que são service workers?

Service workers são scripts que os navegadores baixam e executam para criar experiências personalizadas para os usuários. Os service workers viabilizam recursos como notificações push, sincronização em segundo plano e funcionalidade off-line no navegador. Escritos em JavaScript, eles interceptam, modificam e respondem às solicitações HTTP antes que elas cheguem à internet.

Os service workers podem lidar com o tráfego HTTP de duas formas:

O service worker responde

Os service workers podem responder às solicitações HTTP sem entrar em contato com o servidor web

O service worker modifica a solicitação

Os service workers podem modificar as solicitações e respostas HTTP

O que são Cloudflare Workers?

Cloudflare Workers é uma plataforma destinada a permitir que funções sem servidor sejam executadas o mais próximo possível do usuário final. Basicamente, o próprio código sem servidor é "armazenado em cache" na rede e executado quando recebe o tipo certo de solicitação. Os Cloudflare Workers são escritos em JavaScript, em comparação com os service workers API, o que significa que eles podem usar todas as funcionalidades oferecidas pelos service workers. Eles aproveitam o motor Chrome V8 para a execução. O código do Cloudflare Workers é hospedado na vasta rede de data centers da Cloudflare ao redor do mundo.

O que é o Chrome V8?

Chrome V8, também conhecido apenas como "V8", é um motor JavaScript desenvolvido pelo Google para compilação, otimização e execução do JavaScript. Ao usar o V8 para execução do código JavaScript, o tempo de inicialização para os workers do JavaScript é bastante reduzido, eliminando o problema das "inicializações a frio"' na maioria dos casos. O V8 também é fortemente analisado quanto às vulnerabilidades de segurança, o que o torna ideal para executar o código JavaScript de forma segura.

O que há de único no Cloudflare Workers em comparação com os service workers?

Uma das principais diferenças entre o uso do Cloudflare Workers e o uso dos service workers é que os service workers são executados no lado do cliente e precisam ser baixados pelo navegador do usuário, enquanto o Cloudflare Workers é executado na borda da rede da Cloudflare entre o usuário e o resto da internet, sendo executado efetivamente dentro da própria rede.

Saiba mais sobre o Cloudflare Workers e sobre o motivo para a criação do Cloudflare Workers.