BLOG

Bom o suficiente só é bom o suficiente até que não seja mais

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 08 de junho de 2017

Vamos falar de peru. Ou ovos cremosos. Ou caixas de doces. O que eles têm em comum? Todos eles estão associados a feriados, é claro. E, ao que parece, esses feriados são os principais geradores de lucros e de baixo desempenho dos sites.

Considere uma pesquisa recente do Reino Unido , “que envolveu mais de 100 tomadores de decisão de comércio eletrônico”. Ela “revelou que mais da metade (58%) admitiu ter enfrentado problemas de velocidade do site durante o período de pico do ano passado”.

Agora, todos nós sabemos que o desempenho é importante e que até mesmo microssegundos de atraso resultam em milhões de dólares em perdas. Já disse o suficiente.

A questão é: o que você pode fazer a respeito?

A resposta está em lembrar do Axioma Operacional nº 2: À medida que a carga aumenta, o desempenho diminui.

Não importa se o servidor de aplicativos está sendo executado na nuvem ou no data center, em uma máquina virtual ou em um contêiner. Este axioma é um axioma porque é sempre verdadeiro. Não importa o que aconteça. Quanto mais carga você coloca em um sistema, mais lento ele funciona. Período.

A chave para um melhor desempenho é equilibrar a necessidade de manter os custos baixos maximizando a carga e, ao mesmo tempo, otimizando o desempenho. Na maioria dos casos, isso significa usar todas as ferramentas possíveis para restaurar esse equilíbrio, especialmente em períodos de pico (que colocam muito estresse nos sistemas, não importa onde eles estejam).

axioma 2

1. Equilibre a carga

É por isso que serviços de aplicativos (rudimentares) bons o suficiente não são. Porque, embora muitas vezes sejam escaláveis sem esforço, eles não necessariamente equilibram a carga entre os recursos disponíveis. Eles não fornecem necessariamente a inteligência necessária para selecionar recursos com base no desempenho ou na carga existente. O "melhor esforço" deles não é muito melhor do que o acaso cego.

O balanceamento de carga requer uma compreensão da carga existente para que novas solicitações sejam direcionadas ao recurso com maior probabilidade de responder o mais rápido possível. O balanceamento de carga básico não consegue atingir isso porque seu foco está puramente em decisões baseadas em algoritmos, que raramente levam em consideração algo além da ponderação estática dos recursos disponíveis. Decisões em tempo real exigem informações em tempo real sobre a carga existente no momento . Caso contrário, você não estará balanceando a carga, mas sim distribuindo a carga. 

2. Reduza a carga

É mais do que apenas a seleção de recursos que ajuda a aumentar o desempenho e a equilibrar a carga. Ser capaz de empregar uma variedade de funções de aprimoramento de protocolo que reduzem a carga sem prejudicar a disponibilidade também é fundamental. A multiplexação e a reutilização de conexões TCP, a transferência de criptografia e segurança e a reatribuição de tarefas de compactação para serviços upstream aliviam a carga sobre serviços de aplicativos e web, liberando recursos e tendo impactos reais no desempenho.

Os servidores devem servir, estejam eles na nuvem ou no data center, rodando em um contêiner ou uma VM. Criptografia e compressão ainda são funções que exigem muita computação e que podem ser executadas por serviços upstream projetados para essa tarefa.

3. Elimine a carga

Eliminar saltos extras no caminho de solicitação-resposta também melhora o desempenho. Sim, você pode escalar horizontalmente entre serviços de balanceamento de carga, mas isso adiciona outra camada de tomada de decisão (roteamento) à equação, o que leva tempo tanto na execução (qual deles deve atender a essa solicitação?) quanto no tempo de transferência (enviá-la pela rede para aquele ). Isso significa menos tempo para o servidor web ou de aplicativo fazer seu trabalho, que é tudo o que queríamos em primeiro lugar. Sob carga típica, as diferenças entre um sistema gerenciando um milhão de conexões e dez sistemas gerenciando cada um uma parte delas podem ser insignificantes. Até que a demanda aumente a carga e os axiomas operacionais também entrem em ação. Porque não é apenas a carga no servidor da web ou do aplicativo que contribui para o baixo desempenho, mas toda a cadeia de entrega do aplicativo.

Quanto mais capacidade (conexões) seu serviço de balanceamento de carga puder manipular simultaneamente, menos instâncias você precisará. Isso reduz a sobrecarga de gerenciamento de mais uma camada de recursos que exigem tanta atenção ao axioma operacional nº 2 quanto qualquer outro serviço.

O desempenho continua sendo um problema significativo para os varejistas e, com a rápida expansão da economia digital, ele se tornará (se já não for) um problema para todos com presença digital. Na correria que sempre acontece antes dos feriados, as pessoas se tornam ainda menos tolerantes ao mau desempenho. O que foi bom o suficiente no dia anterior, não é. Na maioria das vezes, os problemas de desempenho não são culpa do aplicativo, mas sim da arquitetura e dos serviços usados para entregá-lo e protegê-lo. Ao usar os serviços certos com o conjunto certo de recursos, as organizações têm mais probabilidade de evitar problemas de desempenho sob carga pesada.

Bom o suficiente é bom o suficiente, até que não seja mais. Então é tarde demais para persuadir clientes frustrados a voltarem. Eles já encontraram outro fornecedor do que quer que seja que você estava tentando vender a eles.