Serverless é um modelo de desenvolvimento nativo em nuvem para criação e execução de aplicações sem o gerenciamento de servidores.
Os servidores ainda são usados nesse modelo, mas eles são abstraídos do desenvolvimento de aplicações. O provedor de nuvem fica responsável pelas tarefas rotineiras de provisionamento, manutenção e escala da infraestrutura do servidor. Os desenvolvedores só precisam empacotar o código em containers para fazer a implantação.
Depois da implantação, as aplicações serverless atendem à demanda e aumentam ou diminuem a escala automaticamente de acordo com as necessidades. As soluções serverless dos provedores de nuvem pública costumam ser oferecidas sob demanda por meio de um modelo de execução orientado a eventos. Por isso, não há cobrança pelas funções serverless não utilizadas.
O serverless é diferente de outros modelos de cloud computing em que o provedor de nuvem é responsável por gerenciar a infraestrutura da nuvem e por escalar as aplicações. As aplicações serverless são implantadas em containers que são iniciados sob demanda e automaticamente quando chamados.
Em um modelo padrão de cloud computing baseado em infraestrutura como serviço (IaaS), os usuários compram unidades de capacidade. Ou seja, o provedor de nuvem pública fornece componentes de servidor “sempre ativos” para a execução das aplicações. Os usuários precisam aumentar a capacidade do servidor nos momentos de alta demanda e diminuí-la quando a capacidade alta não é mais necessária. Mesmo quando as aplicações não são usadas, a infraestrutura de nuvem necessária para executá-las continua ativa.
Em comparação, com a arquitetura serverless, as aplicações são iniciadas apenas quando necessárias. Quando um evento aciona a execução do código da aplicação, o provedor de nuvem pública aloca os recursos relacionados dinamicamente. Os usuários deixam de ser cobrados quando essa execução termina. Além do aumento da eficiência e da economia, o modelo serverless livra os desenvolvedores das tarefas rotineiras e manuais associadas ao provisionamento do servidor e à escala da aplicação.
Com o modelo serverless, todas as tarefas rotineiras são realizadas pelo provedor de serviços de nuvem. Elas incluem, por exemplo, o gerenciamento do sistema operacional e de arquivos, a aplicação de patches de segurança, o balanceamento de carga, a administração da capacidade, a escala, a geração de registros e o monitoramento.
É possível criar uma aplicação totalmente serverless ou uma formada por elementos de microsserviços parcialmente serverless e tradicionais.
Serverless é um novo modelo nativo em nuvem que gera benefícios significativos na produtividade e eficiência, mas exige planejamento. Leia o guia de estratégia nativa em nuvem para líderes de TI e arquitetos, que inclui insights para preparar os profissionais para uma abordagem serverless.
Com o modelo serverless, o provedor de nuvem executa servidores físicos e aloca dinamicamente os recursos deles em nome dos usuários, que podem implantar código diretamente na produção.
As soluções de computação serverless costumam ser divididas em duas categorias: back-end como serviço (BaaS) e função como serviço (FaaS).
Com o BaaS, os desenvolvedores têm acesso a vários serviços e aplicações de terceiros. Por exemplo, talvez um provedor de nuvem ofereça serviços de autenticação, criptografia extra, bancos de dados acessíveis pela nuvem e dados de uso de alta fidelidade. Normalmente, você chama as funções serverless por meio de interfaces de programação de aplicações (APIs).
Na verdade, quando os desenvolvedores se referem ao serverless, é mais provável que eles estejam falando do modelo FaaS. Com esse modelo, os desenvolvedores ainda gravam uma lógica personalizada no lado do servidor, mas ela é executada em containers totalmente gerenciados por um provedor de serviços de nuvem.
Todos os principais provedores de nuvem pública oferecem pelo menos uma solução de FaaS. Eles incluem a Amazon Web Services com o AWS Lambda, o Microsoft Azure com o Azure Functions, o Google Cloud com várias opções, o IBM Cloud com o IBM Cloud Functions e muitos outros.
Algumas organizações preferem executar os próprios ambientes de FaaS por meio de plataformas serverless open source, como o Red Hat® OpenShift® Serverless. Essa solução é baseada no projeto Knative do Kubernetes.
Função como serviço (FaaS) é um modelo de execução de computação orientado a eventos. Com ele, os desenvolvedores gravam a lógica, que é implantada em containers totalmente gerenciados por uma plataforma e executada sob demanda.
Em comparação com BaaS, o modelo FaaS proporciona maior controle aos desenvolvedores. Isso possibilita a criação de aplicações personalizadas, evitando a dependência de uma biblioteca de serviços pré-gravados.
O código é implantado em containers gerenciados por um provedor de nuvem. Especificamente, esses containers são:
•Efêmeros, para que eles sejam executados por muito pouco tempo.
•Acionados por eventos, para que eles sejam executados automaticamente quando necessário.
•Totalmente gerenciados por um provedor de nuvem. Assim, você paga somente o necessário, e não os servidores e aplicações “sempre ativos”.
Com esse modelo, os desenvolvedores chamam aplicações serverless usando APIs, que são gerenciadas pelo provedor de FaaS por meio de um gateway.
A arquitetura serverless é ideal para aplicações assíncronas e stateless que podem ser iniciadas instantaneamente. Da mesma forma, esse modelo também é uma ótima opção para os casos de uso em que a demanda aumenta de maneira aleatória e imprevisível.
Por exemplo, pense em uma tarefa como o processamento em lote de arquivos de imagem de entrada: ele não ocorre com muita frequência, mas precisa estar pronto para quando uma grande quantidade de arquivos chegar de uma só vez. Outro caso são as modificações feitas em um banco de dados: você pode aplicar uma série de funções (por exemplo, comparar as mudanças com os padrões de qualidade) ou traduzir as modificações automaticamente.
As aplicações serverless também são ideais para os casos de uso que incluem fluxos de dados de entrada, chat bots, tarefas agendadas e lógica empresarial.
Outros casos de uso comuns do modelo serverless são aplicações web e APIs de back-end, automação de processos de negócios, sites serverless e integração de diversos sistemas.
Prós
•A computação serverless aumenta a produtividade dos desenvolvedores e reduz os custos operacionais. Ela livra os desenvolvedores das tarefas rotineiras de provisionamento e gerenciamento de servidores. Assim, eles têm mais tempo para se concentrar nas aplicações.
•Com a computação serverless, é mais fácil adotar práticas de DevOps, porque os desenvolvedores não precisam mais descrever explicitamente a infraestrutura que eles querem que a equipe de operações provisione.
•É possível incorporar componentes completos de soluções de BaaS de terceiros para otimizar ainda mais o desenvolvimento de aplicações.
•Os custos operacionais são reduzidos no modelo serverless porque você paga o tempo de computação baseado em nuvem conforme necessário. Isso não acontece quando você executa e gerencia os próprios servidores o tempo todo.
Contras
•Deixar de executar o seu próprio servidor ou controlar a sua própria lógica no lado dele tem algumas desvantagens.
•É possível que os provedores de nuvem tenham restrições sobre como as pessoas podem interagir com os componentes. Por sua vez, isso afeta a flexibilidade e a personalização dos sistemas. No caso de ambientes de BaaS, os desenvolvedores podem depender de serviços com código que não pode ser controlado por eles.
•Abrir mão de controlar esses aspectos do stack de TI também aumenta as chances de dependência de fornecedor. Além disso, quando você decide trocar de provedor, isso pode gerar custos. Você precisará fazer upgrade dos sistemas para que eles atendam às especificações do novo provedor.
Fique por dentro das tendências e inovações educacionais aqui no blog da ITExperts!
Originalmente publicado em: https://www.redhat.com/pt-br/topics/cloud-native-apps/what-is-serverless#:~:text=Serverless%20é%20um%20modelo%20de,abstraídos%20do%20desenvolvimento%20de%20aplicações.