BLOG

A Hierarquia das Necessidades de Aplicação

Miniatura de Lori MacVittie
Lori MacVittie
Publicado em 02 de maio de 2016

A maioria das pessoas já ouviu ou viu a Hierarquia das Necessidades de Maslow . Se você não está familiarizado com o conceito (ou precisa de uma atualização), aqui está o resumo: Maslow acreditava que as pessoas são motivadas a atingir certas necessidades. Ele definiu uma hierarquia de cinco níveis, começando com necessidades básicas relacionadas à sobrevivência, como alimentação, sono e segurança, e avançando em direção a necessidades mais pessoais relacionadas ao crescimento, como a autorrealização.

Basta dizer que a hierarquia é frequentemente usada como um modelo para descrever um conjunto de necessidades para uma variedade de preocupações, incluindo tecnologia. Foi assim que chegamos aqui hoje.

Há um conjunto muito específico de necessidades que os aplicativos têm hoje que podem ser organizados hierarquicamente para imitar a hierarquia de Maslow. Assim como na hierarquia de Maslow, as necessidades de nível inferior são as mais críticas para a sobrevivência e o sucesso, enquanto as necessidades de ordem superior permitem o crescimento. Legal como isso funciona, não é?

A razão pela qual isso é importante é que algumas dessas necessidades não podem ser atendidas realisticamente – dado o ambiente atual e as expectativas do usuário e, em alguns casos, por razões puramente técnicas – sem serviços de aplicativos. São coisas como balanceamento de carga, failover, segurança de aplicativos web, SSO, aceleração e otimização, etc.

imagem

Claro, você pode escrever um aplicativo que reinicia sozinho em caso de falha/travamento, mas não pode resolver uma falha de rede que cause uma interrupção. Somente um sistema upstream (externo), como um serviço de balanceamento de carga ou failover, pode fazer isso. O que significa que, em última análise, você não pode garantir a confiabilidade do aplicativo a menos que esteja usando um serviço de aplicativo como balanceamento de carga. Da mesma forma, a maioria dos aplicativos não consegue mexer na pilha de rede que controla o comportamento do TCP. Mas um proxy upstream (serviço de balanceamento de carga) pode, e é lá que muitas das otimizações que tornam os aplicativos móveis utilizáveis são implementadas. Sem eles, os aplicativos ficam lentos e não respondem, e tendem a ser abandonados com taxas mais altas do que seus equivalentes otimizados. É por isso que o desempenho é uma necessidade de hierarquia intermediária; porque é importante, mas não é a necessidade mais importante de um aplicativo. Se não estiver disponível, nenhuma otimização vai ajudar.

Então, sem mais delongas, vamos mergulhar na hierarquia de necessidades de aplicativos, certo?

1. Confiabilidade

Confiabilidade significa que os usuários — corporativos e consumidores — podem confiar que o aplicativo estará lá. Isso significa que precisamos garantir que o aplicativo continue disponível durante períodos de alta demanda (escalabilidade), falha (failover) ou desastres (recuperação de desastres). Em sua forma mais básica, isso significa balanceamento de carga e serviços de failover, mas também inclui serviços de aplicativos de suporte, como DNS, que são responsáveis por redirecionar usuários em caso de desastre. Não é nenhuma surpresa que a disponibilidade tenha permanecido no topo da lista de “serviços de aplicativos sem os quais as organizações não implementariam um aplicativo” em nossas pesquisas sobre o estado da entrega de aplicativos . Não é apenas uma necessidade básica de sobrevivência de um aplicativo; hoje, também é uma necessidade de sobrevivência empresarial.

2. segurança

Ah, segurança. Sem ela, os aplicativos ficam vulneráveis a uma grande variedade de ataques, nem todos relacionados à qualidade do código. A segurança do aplicativo é uma pilha, abrangendo não apenas o aplicativo, mas também sua plataforma subjacente. E os relatórios continuam indicando que os invasores continuam subindo nessa pilha, em direção à camada de aplicação, tanto para exfiltração (para roubar seus dados) quanto para exploração (para interromper seus negócios). Isso significa que uma variedade de serviços de segurança de aplicativos são necessários para ajudar o aplicativo a permanecer disponível e saudável, como proteção DDoS, segurança de aplicativos web, prevenção de fraudes e serviços de criptografia. A frequência cada vez maior com que as organizações sofrem ataques e novas vulnerabilidades são relatadas continua a impulsionar as necessidades de segurança como um dos principais serviços de aplicativos necessários para garantir a sobrevivência de aplicativos e negócios hoje.

3. DESEMPENHO

Desempenho. Todos nós sabemos o quanto isso é importante, principalmente para aplicativos comumente usados em dispositivos móveis (por meio de uma rede móvel). Os serviços de aplicativos de desempenho são o nível na hierarquia que vai dos serviços de aplicativos que atendem às necessidades básicas até os que atendem ao crescimento. As preocupações relacionadas ao desempenho dizem respeito a ambos. Se um aplicativo for muito lento ou não responder, ele pode impactar negativamente a produtividade dos usuários corporativos, além de reduzir a receita dos consumidores. Não tem o mesmo impacto no negócio do que o aplicativo ficar indisponível ou apresentar uma violação, mas ainda é importante. É por isso que vemos tantas organizações empregando técnicas como otimização de imagem, compressão, descarregamento de SSL e multiplexação de TCP para melhorar o desempenho dos aplicativos. Porque às vezes não se trata do código; trata-se de abordar desafios na rede, no dispositivo do usuário e com os protocolos pelos quais os aplicativos se comunicam.

4. Programabilidade

Os aplicativos são o negócio hoje em dia e eles não devem apenas ser entregues rapidamente, mas também implantados rapidamente. Crescer e escalar significa que os serviços de aplicativos que dão suporte às necessidades de nível inferior (confiabilidade, segurança e desempenho) também devem ser capazes de ser implantados rapidamente. Isso significa programabilidade. Isso significa APIs e modelos, além de estar integrado e acessível à outra economia de API, impulsionando o pipeline de CI/CD do desenvolvimento para as operações e para todo o espectro de TI mais amplo. A programabilidade permite que serviços de aplicativos participem do ecossistema DevOps, seja ele focado na rede (SDN), na nuvem ( OpenStack ) ou em todo o data center (SDDC). Os modelos fornecem padronização (consistência) e a repetibilidade necessárias para melhorar os processos que impulsionam implantações em data centers modernos. As APIs garantem flexibilidade e suporte ao número crescente de estruturas e conjuntos de ferramentas usados para automatizar a configuração e o gerenciamento, além de garantir que nenhum aplicativo fique para trás porque a rede estava no caminho.

5. Agilidade arquitetônica

Por fim, para dar suporte ao crescimento dos aplicativos (e, portanto, dos negócios) hoje, os aplicativos precisam de agilidade arquitetônica. Isso significa que os serviços de aplicativos que os suportam, habilitam e protegem devem ser compatíveis com as arquiteturas que os aplicativos estão usando (como microsserviços, contêineres, virtualização e nuvem). Os serviços de aplicativo que dão suporte às necessidades de nível inferior da hierarquia devem estar disponíveis para implantação junto com o aplicativo, onde quer que ele esteja. Isso significa suporte para serviços de aplicativos virtuais, físicos e baseados em nuvem.