A sua organização está pronta para seguir sem servidor? A tendência para a computação sem servidor (serverless computing) está claramente aumentando, mas isso não significa que ela funcione de maneira ideal para todos os cenários ou organizações.
A computação sem servidor é um modelo de arquitetura de software em que um provedor de serviços de nuvem executa o servidor para um cliente e gerencia dinamicamente a alocação de recursos de computação. O termo “sem servidor” (serverless) é um nome incorreto, no sentido de que os servidores ainda estão envolvidos no processo.
O preço para esses tipos de serviços é baseado na quantidade real de recursos que um aplicativo consome, e não em unidades de capacidade pré-adquiridas.
O mercado de arquitetura sem servidor totalizou estimados US$ 4,25 bilhões em 2018 e deve atingir a marca de US$ 14,93 bilhões até 2023, com uma taxa de crescimento anual composta (CAGR) de 29% ao longo desse período, segundo um relatório de 2018 da empresa de pesquisas Markets and Markets. A América do Norte deve responder pela maior participação de mercado durante o período de previsão, em parte devido à adoção antecipada de serviços em cloud.
Os principais fatores que devem impulsionar o crescimento do segmento incluem a eliminação da necessidade de gerenciar servidores, o que reduz os custos de infraestrutura e facilita a implantação, o gerenciamento e a execução. Outro fator que ajuda a impulsionar o crescimento é a proliferação de arquiteturas de microsserviços.
Os serviços de automação e integração desempenham um papel importante na implantação da arquitetura sem servidor, de acordo com a Markets and Markets. Os serviços de automação ajudam a gerenciar de maneira eficiente os microsserviços – implantados em plataformas de TI híbridas – para fornecer respostas mais rápidas e otimizar o uso de recursos de computação.
A Gartner também está otimista com a computação sem servidor; isso porque a consultoria incluiu a serverless computing como uma das 10 principais tendências que impactam a infraestrutura e as operações em 2019, e diz que o modelo de arquitetura de software promete eliminar a necessidade de provisionamento e gerenciamento de infraestrutura.
Apelo da computação sem servidor para administradores de TI
A computação sem servidor tem uma grande atração não apenas para os desenvolvedores de aplicativos, mas também para o pessoal de operações de sistemas, aponta Ken Corless, diretor de prática de nuvem da Deloitte Consulting.
Seja oferecido por provedores de nuvem de hiperescala ou implementado localmente (on-premise) com várias soluções no mercado, o objetivo da computação sem servidor é o mesmo: “automação implacável e autoatendimento para acelerar o ciclo de vida do desenvolvimento de software”, diz Corless.
Para os administradores de TI, a computação sem servidor reduz o ciclo de “solicitação-resposta” ("request-response") das cargas de trabalho baseadas em ticket e permite que os administradores se concentrem em tarefas de alto nível, como design de infraestrutura ou criação de mais automação, afirma.
Existem dois casos de uso principais que o diretor da Deloitte observa. Um deles está no desenvolvimento de aplicativos para a criação [de aplicativos] baseados em serviços modernos e fracamente acoplados. Tanto a função como serviço (FaaS) quanto o backend como serviço (BaaS) – dois serviços habilitados para nuvem que atingem a computação sem servidor – podem melhorar drasticamente a produtividade de uma equipe de entrega de software, mantendo os times pequenos, explica.
O outro grande caso de uso é pelos administradores do sistema. “A própria automação que eles buscam pode ser implementada de maneira rápida, fácil e incremental com tecnologias sem servidor”, diz Corless. Por exemplo, no negócio de Serviços Gerenciados em Nuvem da Deloitte, a empresa usa extensivamente a computação sem servidor para automatizar a operação da oferta.
Assim como os serviços em nuvem, no entanto, há cenários em que a computação sem servidor pode custar mais do que o pagamento de máquinas virtuais, segundo o executivo. Um aplicativo que atualmente é executado em máquinas virtuais com uso consistente de 80% em uma base contínua, provavelmente custará mais em um ambiente sem servidor, diz ele.
“A verdadeira promessa de computação sem servidor, porém, é ter menos pessoas fazendo algumas das tarefas mundanas de TI”, como o software de correção e backup, diz Corless. Isso leva a dois benefícios. Primeiro, as pessoas que fazem essas tarefas mundanas podem se concentrar em criar valor em outras partes da TI ou da empresa.
“Ninguém fica entusiasmado em ser a pessoa cujo trabalho é fazer com que o DNS [sistema de nomes de domínio] mude”, afirma. “Essas pessoas podem ser redirecionadas para desenvolver novas capacidades. Dirigir mais automação é a primeira coisa que vejo acontecendo."
O segundo benefício é a capacidade, mesmo em uma grande corporação, de equipes menores serem mais autodeterminadas. “À medida que a expertise e as diretrizes do gerenciamento de infraestrutura são automatizadas, as equipes podem se auto-servir e fazer isso com segurança”, diz Corless. “No entanto, isso normalmente requer algum investimento para automatizar os padrões e as diretrizes, já que o que vemos nas ofertas de computação sem servidor muitas vezes não é ‘segura’ o suficiente para ser usada sem algum tipo de proteção/restrição."
Sempre que um aplicativo puder aproveitar a computação orientada a eventos com serviços desacoplados, ele será ideal para a plataforma sem servidor, diz Larry Carvalho, diretor de pesquisa sobre plataforma como serviço da International Data Corp. (IDC).
Os casos de uso mais comuns são aplicativos da Internet das Coisas (IoT) e back-ends móveis, os quais precisam de processamento orientado a eventos, diz Carvalho. Outros casos de uso são processamento em lote ou processamento de fluxo para reação em tempo real a eventos.
Práticas recomendadas de computação sem servidor
Então, como as organizações podem ajudar a garantir o sucesso com a computação sem servidor? Aqui estão algumas práticas sugeridas por especialistas.
Traga as restrições do produto sem servidor para o processo de design
As equipes de engenharia que estão se convertendo a computação sem servidor muitas vezes esquecem que restrições rigorosas existem, até mesmo nos produtos mais flexíveis, diz Daniel Smith, arquiteto de plataforma de IoT da Cordial Inc., fornecedora de tecnologia de marketing.
“Lembrar que a computação sem servidor é apenas o servidor ou contêiner de outra pessoa, com suas próprias restrições de design, irá percorrer um longo caminho” em direção ao sucesso com a computação sem servidor, diz Smith. “A linha que delineia a responsabilidade é muito maior na pilha com o computação sem servidor, então restrições como tempo total de execução, tempo de CPU consumido ou memória total usada, precisam ser consideradas durante o projeto e a implementação”.
A Cordial começou a explorar tecnologias sem servidor em 2015, com o objetivo de ter um modelo de custo previsível durante um período de uso imprevisível de recursos. “Como uma startup, ter uma estrutura de custos baseada em demanda previsível era atraente”, diz Smith.
Em maio de 2018, a empresa começou a usar a tecnologia Workers, da Cloudflare, como substituta de alguns de seus sistemas. Como uma empresa business-to-business que atende os consumidores em nome de seus clientes, as interações da Cordial com os consumidores acontecer da forma mais rápida possível.
“Isso geralmente exige a movimentação da carga de trabalho o mais geograficamente possível para o consumidor”, afirma Smith.
Como a Cordial conseguiu reduzir o tamanho dos microsserviços, está disposta a experimentar linguagens de programação que, de outra forma, não teriam implantado, permitindo que a empresa fornecesse produtos mais eficientes com mais rapidez e confiança.
Projete cargas de trabalho finitas
As organizações devem pensar em uma arquitetura sem servidor como um mecanismo de execução para um único método ou função, diz Smith.
“Refinando ainda mais esse objetivo, a entrada e saída da função deve ser o menor dado possível que possa ser trabalhado”, diz Smith. “Em vez de usar uma função sem servidor para processar um arquivo de dados, envie cada linha de dados para uma execução separada”.
Ao reduzir o tamanho de cada unidade de trabalho, a narrativa começa a mudar para a rapidez com que a rede pode mover dados entre os serviços. “Para dados de voo, podemos começar a pensar na rede como uma espécie de armazenamento volátil, em que cada segundo de segundo nos oferece 10 [gigabytes] de armazenamento por interface de rede”, afirma Smith. “O disco, o componente de sistema mais lento, é, portanto, evitado até que uma saída final seja armazenada de forma persistente”.
Faça as funções tão sem estado quanto possível
Variáveis globais comuns em aplicativos monolíticos não funcionam com computação sem servidor, porque o estado global pode não persistir entre invocações, afirma Daniel Dyla, engenheiro de software da Dynatrace, fornecedora de software de desempenho de aplicativos.
“Para combater isso, as funções sem servidor devem ficar sem estado sempre que possível”, diz Dyla. “Se o estado for requerido, é melhor ter uma função que reúna o estado de um [banco de dados] externo e chame outra função sem estado que faz o processamento de dados real. Dessa forma, você pode manter as interações com informações de estado em quarentena nos locais designados onde elas são mais fáceis de gerenciar”.
A Dynatrace tem usado a tecnologia sem servidor nos últimos dois anos, atraída pelo baixo custo, capacidade de dimensionar e invocações orientadas a eventos, diz Dyla. A empresa está usando computação sem servidor para sistemas de pesquisa que precisam estar operando continuamente para processamento em lote.
“O principal benefício que temos visto é o baixo custo”, diz Dyla. “Nossas funções sem servidor tendem a ser pequenos trechos de código com cargas de explosão que podem aumentar de zero e voltar muito rapidamente”.
Automatize o processo de implantação e de testes
Embora existam ferramentas que facilitam a implantação manual da computação sem servidor, a automação da implantação permite que você tenha uma implementação consistente, sem espaço para erro humano, diz Hristo Papazov, engenheiro de software sênior da Relativity, um fornecedor de software de descoberta eletrônica.
A automação “também permite que outras equipes de sua organização adotem facilmente essas tecnologias”, diz Papazov.
A Relativity está usando a tecnologia sem servidor do serviço de nuvem Azure, da Microsoft, como parte de um esforço para melhorar a experiência do cliente com sua plataforma de descoberta eletrônica, garantindo que seus principais componentes estejam em funcionamento. A empresa aproveita o computação sem servidor para suas ferramentas internas de monitoramento, permitindo que os usuários processem grandes quantidades de dados de telemetria para detectar e resolver problemas rapidamente, diz Papazov.
Com a crescente complexidade dos aplicativos sem servidor, o teste de unidade se torna uma parte crítica do ciclo de desenvolvimento, e a automação também ajuda com isso, diz Papazov. “Quando a Microsoft introduziu o Azure Functions um tempo atrás, o teste de unidade foi muito difícil, se não quase possível”, diz ele. “As coisas percorreram um longo caminho desde então e agora adicionar testes de unidade a um projeto é muito fácil”.
Entenda a arquitetura moderna de aplicativos
Os gerentes devem tentar dividir as aplicações em serviços de curta duração, independentes e desacoplados, diz Carvalho. “Arquitetue um aplicativo sem estado, aproveitando os serviços de suporte, como o gerenciamento de API para comunicações e recursos de segurança para identidade do usuário”, diz ele.
Por exemplo, um servidor de aplicativos da Web em execução contínua para processar transações de entrada pode ser dividido extraindo a lógica de negócios e executando-os como microsserviços em uma estrutura sem servidor, diz Carvalho. “Isso elimina o custo de executar continuamente o servidor enquanto oferece a dor de cabeça do failover para o provedor de nuvem”.
Faça da segurança cibernética uma prioridade
Embora as empresas sem servidor possam não ter que se preocupar com a correção de servidores ou a execução de software antivírus, uma oferta sem servidor baseada em interfaces de programação de aplicativos (APIs) “multiplica radicalmente os terminais de sua solução”, diz Corless. “E se suas APIs são usadas por seus clientes [ou] parceiros, fica ainda mais difícil”.
Como resultado, as empresas podem precisar repensar sua abordagem às regras de firewall, “como você pode criar rapidamente uma bagunça incontrolável”, diz Corless.
Por Bob Violino, da Network World