BLOG

Desdistancie seu Web-App com a Volterra App Delivery Network (ADN)

Miniatura de Pranav Dharwadkar
Pranav Dharwadkar
Publicado em 30 de julho de 2020

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 que é desempenho de aplicativo da Web?

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.

Por que o desempenho de aplicativos da Web é importante?

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 antigoGoogle e Microsoft relatam números semelhantes de impacto econômico.

abn1
Figura 1

Esses dados confirmam claramente que o desempenho de aplicativos da Web é uma prioridade para empresas on-line.

Qual é o desafio?

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

adn2
Figura 2
  • Primeiro, uma sessão SSL segura é estabelecida, o que requer 6 mensagens de ida e volta entre o navegador do usuário e o aplicativo da web.
  • Em seguida, o aplicativo da web normalmente usará os cookies no navegador do usuário para determinar se o usuário tem uma conta com o fornecedor de comércio eletrônico.
  • Com base no cookie, se o usuário tiver uma conta, será exibida uma página de login; caso contrário, será exibida uma página de checkout como convidado.

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

Como o Volterra ADN pode melhorar o desempenho do aplicativo?

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

Solução 1: Término SSL (também conhecido como Descarregamento TLS) no Volterra ADN

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.

adn3
Figura 3

Solução 2: Mova o processamento sensível à latência, como o processamento de cookies, para o Volterra ADN

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.

adn4
Figura 4

Solução 3: Mover o front-end do aplicativo da web (por exemplo, catálogo de produtos) para a borda, ou seja, loja física

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.

Anúncio 5
Figura 5

Principais princípios arquitetônicos a serem considerados em qualquer solução

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.

adn6
Figura 6

Aqui estão os principais princípios arquitetônicos que as equipes de DevOps devem considerar ao avaliar qualquer solução.

  1. Ambiente de execução de aplicativos consistente em várias nuvens: O aplicativo das equipes de DevOps será distribuído em sua nuvem de backend, que pode ser um data center privado ou uma nuvem pública, e seu local de ponta e local de armazenamento físico, todos os quais podem ser ambientes de tempo de execução de aplicativo completamente diferentes. As equipes de DevOps devem considerar seriamente soluções que aproveitem o Kubernetes para fornecer um ambiente de execução de aplicativos consistente em todas essas nuvens distribuídas. O Kubernetes homogeneíza as nuvens e facilita a movimentação de partes dos aplicativos entre elas.
  2. Roteamento de tráfego de geoproximidade: Como o front-end do aplicativo pode ser implantado em diferentes locais (nuvem, edge, edge de loja física), cada solução deve garantir que o tráfego do usuário seja desviado para o local mais próximo onde o serviço front-end é implantado. E qualquer solução considerada não deve exigir que as equipes de DevOps alterem as políticas de roteamento da Internet.
  3. Balanceamento de carga global: Qualquer solução considerada deve oferecer balanceamento de carga global, pois os serviços de backend podem estar em vários locais ao redor do mundo.
  4. Políticas uniformes de segurança de rede e aplicativos em diversas nuvens: Embora a localização dos componentes do aplicativo possa variar de acordo com a região, qualquer solução considerada deve fornecer a capacidade de uma política uniforme de segurança de aplicativo e rede a ser aplicada em qualquer nuvem em que o serviço front-end seja implantado.
  5. Observabilidade de painel único em várias nuvens e em aplicativos e conectividade de rede: Em um ambiente de nuvem distribuída, é extremamente difícil solucionar problemas entre aplicativos e conectividade em várias nuvens. Qualquer solução considerada deve fornecer um único painel de observação em toda a conectividade, segurança e implantações de aplicativos em várias nuvens.

Resultados alcançados pelas soluções da Volterra

Configuração de teste

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: 

  • O aplicativo web usado foi o Online Boutique , um aplicativo de demonstração de microsserviços nativo da nuvem do Google. O aplicativo da web consiste em 11 microsserviços, conforme mostrado na Figura 7
adn7
Figura 7
  • O desempenho do aplicativo da Web foi medido usando webpagetest.org
  • A métrica usada para determinar o desempenho do aplicativo da web em webpagetest.org foi “Documento concluído”
  • A empresa é uma empresa europeia de comércio eletrônico com data centers localizados em Paris
  • O usuário (ou cliente) está sempre localizado em São Francisco.

Cenário de teste e resultados

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.

adn8
Figura 8

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.

adn9
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.

adn10
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.

adn11
Figura 11

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.

Resumo dos resultados e valor econômico

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.

 

adn12
Figura 12

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 .