Este blog é o início de uma nova série de blogs sobre problemas reais enfrentados por empresas e descreve como a App Delivery Network (ADN) da Volterra aborda os problemas descritos. Este blog específico detalha um desafio fundamental de desempenho de aplicativos web que empresas on-line ao redor do mundo enfrentam todos os dias. Esse desafio é ainda mais agravado pelo fato de a maioria dos consumidores estar trabalhando em casa. Descrevo como a Volterra pode ajudar as empresas a “desdistanciar” seus aplicativos da web para obter uma melhoria de 77% no desempenho do aplicativo sem exigir nenhuma reescrita do aplicativo.
O desempenho do aplicativo Web normalmente é medido pelo tempo que o conteúdo da página leva para ficar visível, conforme percebido pelo usuário final. Os desenvolvedores web usam diversas métricas para medir o desempenho de seus aplicativos web, como First Contentful Paint, Largest Contentful Paint ou Document Complete. Neste blog, usei a métrica “Document Complete” como uma medida para o desempenho do meu web-app. Desenvolvedores web medem essas métricas usando ferramentas como Web Page Test, Google Lighthouse ou Rigor.
Uma ligeira degradação no desempenho do aplicativo web tem um grande impacto na experiência do usuário e, consequentemente, nas vendas pelo portal online. A gigante do comércio eletrônico Amazon relatou que uma degradação de 1 segundo no desempenho do aplicativo resulta em uma perda de US$ 1,6 bilhão em receita. Um impacto econômico semelhante é observado por empresas on-line em vários setores, conforme relatado pela Akamai neste relatório um pouco mais antigo . Google e Microsoft relatam números semelhantes de impacto econômico.
Esses dados confirmam claramente que o desempenho de aplicativos da Web é uma prioridade para empresas on-line.
Vamos dar um exemplo específico de uma empresa online no setor de comércio eletrônico. Muitas empresas de comércio eletrônico têm seus aplicativos da web em um ou poucos data centers e esses data centers não existem em todos os países onde os usuários das empresas de comércio eletrônico vivem. Quando o usuário está em um país/região diferente do data center, a alta latência da rede do usuário para o data center resulta em tempos lentos de carregamento de página de quase 6 a 12 segundos. Conforme mencionado acima, quando o tempo de carregamento da página excede 5 segundos, a probabilidade de rejeição aumenta para 90%.
Vamos desconstruir o carregamento de uma página de aplicativo da web, conforme mostrado na figura 2
Seis mensagens apenas para configurar a sessão SSL segura quando transmitidas por links de alta latência (potencialmente links transatlânticos/transpacíficos) certamente impactam os tempos de carregamento da página e, consequentemente, resultam em uma experiência ruim para o usuário
Existem muitas técnicas para melhorar o desempenho de aplicativos web por meio da otimização do aplicativo, como compactar imagens ou otimizar dependências para reduzir o tempo de carregamento da página. Muitas vezes, essas otimizações podem não ser possíveis devido aos requisitos de negócios que orientam o design do aplicativo. Mesmo que essas otimizações sejam possíveis, pode não ser uma opção viável porque os desenvolvedores que escreveram o aplicativo não estão mais na organização ou ocupados desenvolvendo novos serviços. Portanto, as equipes de DevOps em organizações de comércio eletrônico valorizam soluções que podem melhorar o desempenho do aplicativo, mas não exigem alterações no aplicativo.
A Volterra oferece dois produtos, VoltMesh e VoltStack, que combinados com o ADN da Volterra, podem melhorar o desempenho do aplicativo em até 75% (veja a demonstração na próxima seção). O produto VoltMesh da Volterra é um produto de rede e segurança distribuído globalmente que, quando configurado no ADN da Volterra, também fornece recursos de aceleração de aplicativos. O produto VoltStack da Volterra fornece implantação de aplicativos distribuídos e gerenciamento de ciclo de vida, o que permite que os usuários descarreguem partes de seus aplicativos para o ADN da Volterra para melhorar ainda mais o desempenho do aplicativo.
VoltMesh e VoltStack abordam o desempenho de aplicativos da web de empresas de comércio eletrônico das três maneiras a seguir
A solução mais simples para melhorar o desempenho do aplicativo da web é executar o encerramento da sessão SSL no ADN global da Volterra. O conjunto de seis mensagens para configurar a sessão SSL é enviado localmente para a borda da rede global no país e não atravessa links transatlânticos ou transpacíficos. Haverá uma sessão SSL persistente entre o site remoto da rede global Volterra e o servidor de origem, melhorando ainda mais o desempenho. Isso pode ser visualizado como mostrado na Figura 3.
Para melhorar ainda mais o desempenho, as empresas podem implantar partes sensíveis à latência de seus aplicativos no ADN. Exemplos de partes sensíveis à latência do aplicativo web incluem processamento de cookies ou graphQL ou backend para front-end. Em um exemplo de empresa de comércio eletrônico, eles normalmente processam cookies para determinar qual página exibir para o usuário, por exemplo, se o usuário tem uma conta, exibir a página de login, caso contrário, exibir uma página de convidado. O processamento de cookies em nosso ADN melhora drasticamente o desempenho em comparação ao processamento de cookies em DCs centralizados ou na nuvem do outro lado do mundo. Isso pode ser visualizado como mostrado na Figura 4.
Muitos fornecedores de comércio, como Macy's, Home Depot e Target, também têm lojas físicas onde os consumidores navegam pelo catálogo de produtos online, dentro da loja física, para verificar a localização dos itens e acessar ofertas/cupons. Para melhorar a experiência do usuário, eles poderiam optar por mover apenas o front-end do seu aplicativo da web para a computação na loja. Todos os componentes restantes do aplicativo, ou seja, bancos de dados, podem permanecer no data center de back-end, pois não serão acessados com tanta frequência quanto o catálogo de produtos de front-end. Isso pode ser visualizado como mostrado na Figura 5.
Este problema é fundamentalmente um problema de computação distribuída em múltiplas nuvens heterogêneas. As equipes de DevOps podem seguir o caminho do "faça você mesmo", reunindo soluções fragmentadas de diferentes fornecedores, como provedores de nuvem pública, provedores de CDN ou provedores de ponta, ou comprar uma solução em pacote de provedores de plataforma de serviços de nuvem distribuída. Os desafios são destacados na Figura 6.
Aqui estão os principais princípios arquitetônicos que as equipes de DevOps devem considerar ao avaliar qualquer solução.
A configuração de teste descrita a seguir foi usada para demonstrar as melhorias de desempenho oferecidas por cada uma das soluções Volterra descritas na seção anterior:
Os quatro cenários a seguir foram testados e as melhorias de desempenho são descritas para cada cenário.
Cenário de linha de base: Primeiro, eu faço uma linha de base do desempenho do aplicativo web com o usuário em São Francisco e o aplicativo web sendo executado inteiramente no data center de Paris, conforme mostrado na Figura 8. O desempenho do aplicativo web para o cenário de base foi medido em 3,5 segundos.
Cenário de teste da solução 1: No teste da solução 1, o usuário ainda está em São Francisco, o aplicativo web ainda está em execução no data center de Paris, no entanto, a sessão SSL é encerrada no proxy reverso VoltMesh em execução no Volterra ADN em San Jose. Este cenário é mostrado na Figura 9.
O VoltMesh cria automaticamente uma sessão SSL persistente entre o proxy reverso em execução no San Jose PoP e o aplicativo web em execução no data center de Paris. O desempenho do aplicativo web melhorou para 2,9 segundos , uma melhoria de ~18% .
Cenário de teste da solução 2: No teste da solução 2, o front-end e o microsserviço de moeda são implantados no ADN em San Jose. Os microsserviços e bancos de dados restantes ainda são executados no data center de Paris. Este cenário é mostrado na Figura 10.
A justificativa para mover apenas os microsserviços de front-end e moeda é que somente esses microsserviços são envolvidos durante a atividade de navegação casual dos usuários. O desempenho do aplicativo web melhora para 2 segundos , uma melhoria de 31% em relação aos resultados da Solução 1.
Cenário de teste da solução 3: No teste da solução 3, o microsserviço front-end e de moeda foram implantados em um Intel NUC de commodity (4 núcleos virtuais) em uma loja física.
A justificativa para mover apenas os microsserviços de front-end e moeda é que somente esses microsserviços são envolvidos durante a atividade de navegação casual dos usuários na borda da loja física. O desempenho do aplicativo web melhora para 0,8 segundos , uma melhoria de 60% em relação aos resultados da Solução 2.
Um resumo dos resultados dos testes e o consequente valor econômico são mostrados na Figura 12. O valor econômico pode ser determinado extrapolando as melhorias em segundos com o valor de cada segundo de melhoria para a organização. Por exemplo, a Amazon avalia cada melhoria de 1 segundo que resulta em um valor econômico de US$ 1,6 bilhão; portanto, a solução 3 fornece um valor econômico de US$ 4,3 bilhões acima da linha de base.
Como pode ser visto nesses resultados, as equipes de DevOps podem obter melhorias significativas de desempenho sem reescrever o aplicativo usando as três opções propostas neste blog, mantendo o mesmo nível de proteção de segurança para seu aplicativo. Para saber mais sobre casos de uso de clientes reais que podem ser resolvidos por uma plataforma de nuvem distribuída ou ter casos de uso de clientes reais para compartilhar comigo, sinta-se à vontade para entrar em contato comigo pelo LinkedIn ou Twitter .