Uma pesquisa da Dimensional Research com mais de 3.000 usuários de aplicativos móveis confirmou o que muitos de nós acreditamos sobre as expectativas dos clientes hoje.
Essas estatísticas relacionadas ao desempenho podem ser frustrantes porque nós, como profissionais de tecnologia, entendemos que o aplicativo é apenas uma pequena parte da equação de desempenho.
Sabemos que o desempenho do aplicativo é cumulativo. A medida do desempenho do aplicativo depende do desempenho de todas as camadas abaixo dele. O que, no grande esquema OSI, é tudo, exceto o código e os dados reais que compõem um aplicativo.
Considere esta representação (altamente simplificada) da "pilha". Cada uma dessas camadas tem seus próprios perfis de desempenho e desafios. Até mesmo a camada física pode impactar drasticamente o desempenho do aplicativo. A degradação de energia no seu modem a cabo, por exemplo, pode fazer com que o desempenho do aplicativo caia porque, em última análise, são os sinais na camada inferior que estão transferindo dados. Se esses sinais se degradarem, os dados podem precisar ser retransmitidos. Retransmissão significa que demora mais para transferir a mensagem inteira. Isso faz com que a experiência do cliente se degrade porque tudo que depende de um sinal forte e constante é impactado negativamente.
Eu poderia repetir esse relacionamento em toda a pilha. Problemas com tamanhos de janelas, pacotes fora de ordem e um servidor web sobrecarregado acabam contribuindo para o desempenho geral do "aplicativo". Se alguma camada estiver com desempenho abaixo do ideal, é provável que o aplicativo também esteja. O desempenho do aplicativo é, na verdade, a soma de todo o desempenho nas camadas abaixo dele.
Sempre foi o caso de que os serviços de aplicativos por aplicativo são a melhor opção para gerenciar o desempenho dos aplicativos. Usar serviços de aplicativo por aplicativo (dedicados) significa que esses serviços podem ser ajustados especificamente para atender às necessidades do aplicativo.
Os aficionados por desempenho de aplicativos sabem que algumas configurações de TCP são melhores para sessões de aplicativos de longa duração, enquanto outras são melhores para transações curtas e intermitentes. Pequenos detalhes como a MTU na camada de rede podem ter um impacto significativo no tempo que você leva para baixar aquele jogo de 20 GB para o seu Xbox.
O desempenho do aplicativo é afetado por muitos fatores. Tudo deve ser otimizado para cada aplicação se as organizações buscam uma experiência ideal para o cliente.
É por isso que observei tantas vezes no passado que o desempenho (otimização e aceleração) é um serviço centrado na aplicação. Isso significa cada vez mais que os serviços de aceleração de aplicativos, como balanceamento de carga e proteção de aplicativos, devem estar mais intimamente associados ao aplicativo que atendem. Modelos de implantação emergentes baseados em noções de imutabilidade, arquiteturas nativas da nuvem, contêineres e infraestrutura como código facilitam a capacidade de implantar e operar serviços de aceleração, proteção e otimização por aplicativo junto com seu aplicativo. Isso é importante, pois esses são os serviços que ajudam a garantir que os aplicativos — móveis ou web — atendam às expectativas de desempenho do cliente.
Mas não podemos parar por aí.
Não podemos esquecer que a entrega de uma experiência ideal ao cliente também depende da mesma pilha no ambiente do cliente. Os recursos do dispositivo, a intensidade e a velocidade da conexão, bem como a carga do sistema, podem impactar esse conjunto de variáveis e prejudicar o desempenho.
Esse é um dos motivos pelos quais os serviços de aplicativos precisam de visibilidade. As informações coletadas do ambiente do cliente e combinadas com as do ambiente do aplicativo fornecem insights valiosos sobre a origem dos problemas de desempenho. A capacidade de ajustar esses ambientes também é essencial para atender ou superar as expectativas do cliente em relação à experiência com o aplicativo.
A visibilidade continua sendo um fator essencial para que uma organização possa proteger, dimensionar e acelerar aplicativos. Quanto mais amplamente distribuirmos esses aplicativos — entre contêineres, nuvens e ambientes de clientes — mais amplamente precisaremos distribuir os serviços de aplicativos que podem garantir não apenas visibilidade, mas também ação diante da degradação do desempenho.