Gorodenkoff - stock.adobe.com
Tornando-se nativo da nuvem: como construir melhores aplicativos em nuvem
Os aplicativos em nuvem nem sempre funcionam como desejado, e há vários fatores que contribuem, desde falta de recursos até pontos cegos e planejamento deficiente.
Muitos aplicativos em nuvem são lentos, desajeitados, sobrecarregados ou não atendem às expectativas dos usuários; no entanto, já existem respostas sobre como abordar esta questão, se as equipas receberem os recursos para avançarem a partir dos primeiros princípios.
Owen Rogers, diretor de pesquisa em nuvem da Uptime Intelligence, afirma que os aplicativos em nuvem devem ser projetados para serem escalonáveis em termos de desempenho e eficiência. Infelizmente, muitas empresas migram seus aplicativos para a nuvem.
“A maioria das aplicações precisará ser reprojetada em grande escala, o que tem implicações em termos de custo e tempo”, explica Rogers.
Jon Lucas, cofundador e diretor da Hyve Managed Hosting, acrescenta que o planejamento adequado e os testes completos são cruciais. “Sente-se e determine as especificações e seus requisitos e, em seguida, crie-os em um ambiente de desenvolvimento”, diz Lucas.
Muitas vezes surgem problemas quando o desenvolvimento acontece principalmente na cabeça da equipe, e mais problemas surgem quando os usuários realmente usam as ferramentas. É melhor adiar uma implantação ao vivo, se necessário, até que a fase de testes seja concluída com todas as alterações totalmente gerenciadas, em vez de apenas seguir seu nariz.
Certifique-se de que os aplicativos atendam aos requisitos das partes interessadas desde o início e mais tarde, quando eles quiserem ou precisarem de algo mais, e aprovem tudo, diz Lucas.
O cofundador e diretor da Hyve, Jake Madders, viu as consequências de não fazer isso – incluindo clientes cujos aplicativos on-line precisam ser corrigidos com quantidades crescentes de hardware, processos e memória para suportar os projetos. Um exemplo poderia ser um código difícil de indexar em um banco de dados.
“Tentamos ajudá-los a superar isso, mas na verdade há um problema fundamental de código que deveria ter sido resolvido, economizando muito dinheiro em hospedagem”, diz Madders.
Dividir e conquistar
Minimize a movimentação de dados e divida o processamento para que ocorra no nível do navegador do usuário e não no servidor. Ele também dimensiona automaticamente aplicativos da Web, dimensionando o poder de processamento para escalar automaticamente em vários servidores somente quando necessário. Os detalhes específicos da implementação do kit e os requisitos para servir conteúdo, cache, locais ou múltiplos pontos de presença quando o código é criado podem causar incompatibilidades.
“No geral, parece que alguns clientes simplesmente não pensaram em quão grande será ou quantos usuários simultâneos haverá. Os clientes que estão indo bem planejaram claramente, além do que funcionará bem por um ou dois anos”, diz Madders.
É aí que desenvolvedores experientes podem mostrar sua qualidade. Os novatos podem ser excelentes programadores, mas normalmente não pensam em coisas que afetam toda a pilha ou conexões simultâneas, diz Madders.
Grant Caley, chefe de tecnologia para o Reino Unido e Irlanda da empresa de armazenamento de dados NetApp, diz que os desenvolvedores podem não ser capazes de criar e desenvolver aplicativos de maneira ideal que maximizem a forma como o software usa os recursos subjacentes.
“Eles não têm muita escolha nisso, porque recebem uma ferramenta para usar –a plataforma de desenvolvimento– que pode causar problemas relacionados ao desempenho”, diz Caley.
Os CIOs precisam entender que os desenvolvedores não são necessariamente capazes de criar aplicações rápidas, especialmente sem conhecer a pilha completa. São necessários mais tempo e recursos –especialmente para testes, ele concorda.
“Não é que as pessoas sejam descuidadas”, acrescenta Caley. "Estamos todos tentando desenvolver aplicativos o mais rápido possível por causa do tempo de lançamento no mercado, o momento de negócios que precisamos capturar."
Ferramentas de desenvolvimento de aplicativos, bibliotecas, camadas de computação, armazenamento, rede e gerenciamento de dados são encontradas em todo o processo de desenvolvimento. Ele sugere tentar acelerar o processo de CI/CD e liberar mais tempo de teste, em um conjunto de dados tão grande quanto possível –especialmente com o surgimento da inteligência artificial (IA).
E se você puder usar a camada de infraestrutura subjacente para monitorar instantaneamente esses conjuntos de dados e revertê-los instantaneamente, poderá ter mais conjuntos de dados e mais testes em execução em paralelo, o que acelerará o desenvolvimento.
Com o surgimento de plataformas com pouco ou nenhum código, equipes menos qualificadas podem estar construindo aplicativos, o que pode causar problemas potencialmente, acrescenta Caley.
Atenha-se aos seus princípios
Mas Hans de Visser, diretor de produtos do fornecedor de plataforma de desenvolvimento de aplicativos de baixo código Mendix, diz que isso muitas vezes pode ser resolvido com uma adesão mais estreita aos princípios nativos da nuvem.
“Aplique princípios de objetos com estado e conexões sem estado para garantir que isso funcione em hiperescala”, diz de Visser. “Você pode dividir seu aplicativo em vários microsserviços ou componentes independentes, liberáveis e escalonáveis de forma independente.”
Componentes pesados e sempre ativos podem ser ampliados de forma independente; outros, como um serviço de gerenciamento de dados mestres, podem ter uma carga mais estável, diz ele.
Alguns clientes combinam aplicativos administrativos mais tradicionais com recursos dedicados, por exemplo, executando um algoritmo em um serviço Lambda sem servidor da Amazon Web Services (AWS). “Isso pode ajudá-lo a dimensionar as funções que precisam atender aos picos de carga. Depois de feitos os cálculos, diminua o tamanho novamente”, acrescenta.
Um terceiro elemento são as melhores práticas baseadas em IA. “Em nossa plataforma, temos uma série de bots auxiliados por modelos de aprendizado de máquina, detectando se o desenvolvedor está basicamente aderindo a princípios que garantiriam desempenho nas aplicações”, afirma de Visser. “Se eles fizerem coisas que causem degradação do desempenho, avisaremos quando determinados padrões forem aplicados e recomendações para mudanças.”
Os kits de IA/ML (a Mendix acaba de lançar um) podem ajudar os desenvolvedores a criar aplicativos melhores, além de fornecer proteção e aumentar a produtividade. Outras ferramentas também podem ajudar, monitorando o desempenho e a integridade dos aplicativos –e, no futuro, a capacidade de composição nos aplicativos ajudará a gerar ainda mais flexibilidade.
“O truque do low-code é abstraí-lo e automatizá-lo ao máximo, para que pessoas menos técnicas, sem noção sobre arquitetura e como construí-la, ainda sejam capazes de construir aplicativos bastante sofisticados”, diz de Visser.
Markus Nispel, CTO para Europa, Oriente Médio e África (EMEA) da Extreme Networks, resume o requisito como um foco no desenvolvimento para distribuição “infinita” de usuários, dispositivos e aplicações –ou pelo menos, é assim que a Extreme está olhando coisas hoje.
“A localização de um aplicativo em nuvem em relação a quem deseja usá-lo precisa ser lembrada”, concorda ele.
Nispel sublinha a necessidade de optimização do desempenho das aplicações em redes, geridas através de um paradigma baseado na nuvem que abrange toda a TI: as aplicações na nuvem são apenas peças do puzzle. Além disso, trata-se do foco na construção de qualidade, automação e segurança desde o primeiro dia.
“O problema é que os aplicativos nem sempre são projetados, desenvolvidos e implantados usando esses paradigmas; muitas vezes, há aplicativos legados apenas sendo içados e transferidos para a nuvem e não totalmente modernizados”, diz ele.