Como a computação sem servidor pode melhorar a performance? | Performance Lambda

Em uma arquitetura sem servidor, ter mais pontos de presença tem um grande impacto positivo na performance.

Objetivos de aprendizado

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

  • Saiba mais sobre AWS Lambda, Lambda@Edge, e Cloudflare Workers
  • Veja as diferenças de performance entre as plataformas
  • Compreender a latência e os pontos de presença

Copiar o link do artigo

Como a computação sem servidor pode melhorar a performance?

Uma das vantagens da computação sem servidor é a capacidade de executar o código do aplicativo de qualquer lugar. Por definição, em uma arquitetura sem servidor, não há servidores de origem; portanto, é possível que o código seja executado em pontos de presença próximos aos usuários finais. Duas plataformas sem servidor que aproveitam essa capacidade e a redução de latência resultante são AWS Lambda@ Edge e Cloudflare Workers. Ao medir a performance Lambda em comparação entre a performance do Cloudflare Workers e do Lambda@Edge, é possível observar os efeitos da implantação de aplicativos sem servidor no perímetro. Os resultados do teste (abaixo) indicam que o Cloudflare Workers geralmente têm uma resposta mais rápida.

O que é AWS Lambda?

O AWS Lambda é um serviço de infraestrutura sem servidor fornecido pela Amazon Web Services. O Lambda hospeda as funções do aplicativo orientado por eventos, escritas em uma variedade de linguagens e as inicia e executa, quando necessário.

Onde o AWS Lambda é implantado?

A AWS oferece uma série de regiões para implantação em todo o mundo. Normalmente, uma aplicativo hospedado na Lambda será hospedado em apenas uma dessas regiões.

O que é AWS Lambda@Edge?

AWS Lambda@Edge é o Lambda implantado em todas as regiões AWS distribuídas globalmente em vez de em uma região geográfica local. Enquanto o Lambda suporta múltiplas linguagens, as funções Lambda@Edge são executadas no Node.js, um ambiente de tempo de execução para execução de JavaScript. Quando uma função Lambda@Edge é acionada, ela é executada dentro da região AWS mais próxima da fonte do evento de acionamento, o que significa que ela é executada o mais próximo possível da pessoa ou máquina que utiliza o aplicativo.

Por exemplo, suponha que um usuário em Chicago solicite algumas informações utilizando um aplicativo com uma arquitetura sem servidor. Se a infraestrutura do aplicativo sem servidor for hospedada usando o AWS Lambda dentro da região US-East-1 (na Virgínia), a solicitação terá que viajar até um centro AWS na Virgínia, e a resposta viajará de lá de volta para Chicago. Mas se a solicitação for hospedada usando AWS Lambda@Edge, então a solicitação e a resposta só terão que viajar de e para a região AWS mais próxima, US-East-2, que fica em Ohio. Esta diminuição na distância reduz a latência em comparação com o AWS Lambda.

AWS Lambda@Edge X Cloudflare Workers

Semelhante ao AWS Lambda@Edge, o Cloudflare Workers funções de JavaScript, orientadas por eventos, hospedadas em data centers em todo o mundo. Entretanto, há muitas diferenças importantes entre os dois serviços de infraestrutura sem servidor. O Cloudflare Workers é executado diretamente no Chrome V8 ao invés do Node.js e a Cloudflare tem data centers em 200 cidades ao redor do mundo. Como eles usam o V8 diretamente, o Cloudflare Workers pode iniciar muito mais rápido e consumir muito menos recursos do que outras plataformas sem servidores. No exemplo acima, se o usuário em Chicago estivesse tentando obter uma resposta de um aplicativo criado com o Cloudflare Workers, a solicitação viajaria para o PoP da Cloudflare em Chicago em vez de Ohio.

O que é latência? Como a latência afeta o comportamento do usuário?

Em rede, "latência" é a duração do atraso antes do carregamento de informação solicitadas. À medida que a latência aumenta, a quantidade de usuários que deixam a página da web também aumenta.

Mesmo pequenas diminuições no tempo de carregamento aumentam muito o envolvimento do usuário. Por exemplo, um estudo do Walmart mostrou que cada melhoria de um segundo no tempo de carregamento da página aumentou as conversões em 2%. Por outro lado, à medida que a latência aumenta, é mais provável que os usuários deixem de usar um site ou uma aplicativo. A latência se torna menor à medida que a distância que a informação tem que viajar é reduzida.

O que são pontos de presença (PoP)?

Um ponto de presença (PoP) é um local onde as redes de comunicação se interconectam e, no contexto da internet, é um local onde reside o hardware (roteadores, comutadores, servidores e assim por diante) que permite que as pessoas se conectem à internet. Ao falar sobre uma rede de borda, um ponto de presença é um local de servidor de borda. Mais PoPs na borda resultam em respostas mais rápidas para um número maior de usuários, porque a probabilidade de que um PoP esteja geograficamente próximo a um usuário aumenta com mais PoPs.

Com que rapidez as funções sem servidor respondem em média?

A Cloudflare realizou testes comparando AWS Lambda, Lambda@Edge e Cloudflare Workers a fim de demonstrar a capacidade de resposta sem servidor e testar a eficácia da implantação de funções sem servidor em múltiplos PoPs. (As funções de teste foram scripts simples que responderam com a hora atual do dia em que foram executados).

O gráfico abaixo mostra os tempos de resposta das funções AWS Lambda (azul), AWS Lambda@Edge (verde) e Cloudflare Workers (vermelho). Para este teste, as funções AWS Lambda foram hospedadas na região US-East-1.

aws-lambda-vs-cloudflare-workers

Em uma arquitetura sem servidor, onde o código é executado (geograficamente falando) gera um impacto sobre a latência. Se o código do aplicativo for executado mais perto do usuário, a performance do aplicativo melhora porque a informação não precisa viajar tão longe e o aplicativo responde mais rapidamente. Embora o tempo de resposta tenha variado para os três serviços, as respostas do Cloudflare Workers foram geralmente as mais rápidas. O Lambda@Edge foi o segundo mais rápido, exemplificando os benefícios de executar funções sem servidor em vários locais.

Embora as regiões AWS estejam espalhadas pelo mundo, a Cloudflare tem mais PoPs totais. A Cloudflare também realizou testes que foram limitados à América do Norte e os atrasos causados pela resolução do DNS foram filtrados. Os resultados, apresentados abaixo, são outro exemplo de como mais PoPs reduzem a latência e melhoram a performance. Observe que as respostas do Cloudflare Workers são as que demoram menos tempo.

lambda-vs-workers

Inicializações a frio sem servidor: com que rapidez os novos processos respondem em uma arquitetura sem servidor?

Na computação sem servidor, uma "inicialização a frio" se refere a quando uma função que não foi executada recentemente deve responder a um evento. Essas funções precisam ser "aceleradas" antes de poderem ser executadas, o que normalmente leva alguns milissegundos. Isso pode causar problemas de latência adicionais.

O Cloudflare Workers eliminou totalmente as inicializações a frio, o que significa que ele precisa de zero tempo de rotação. Este é o caso em todos os locais da Rede global da Cloudflare. Em contraste, as funções Lambda e Lambda@Edge podem demorar mais de um segundo para responder a partir de uma inicialização a frio.

As diferenças se devem, em grande parte, ao fato de que o Cloudflare Workers funciona no Chrome V8 em vez de no Node.js. O Node.js é baseado no Chrome V8, leva mais tempo para processar e tem mais sobrecarga de memória. Normalmente as instâncias do V8 levam menos de 5 milissegundos para processar.

Saiba mais sobre o Cloudflare Workers.