O que é serverless?

Copiar URL

Serverless é um modelo de desenvolvimento nativo em nuvem para criação e execução de aplicações sem o gerenciamento de servidores. O termo "serverless" (sem servidor, em inglês) não significa que não haja servidores. Na verdade, os servidores são abstraídos do desenvolvimento de aplicações. Um provedor de nuvem fica responsável pelas tarefas rotineiras de provisionamento, manutenção e escala da infraestrutura do servidor. 

Com o modelo serverless, os desenvolvedores empacotam o código em containers para fazer a implantação. Após a implantação, as apps serverless atendem à demanda e aumentam ou diminuem a escala automaticamente conforme necessário. As soluções serverless dos provedores de nuvem pública costumam ser oferecidas sob demanda usando um modelo de execução orientado a eventos. Por isso, não há cobrança pelas funções serverless não utilizadas.

Explore o Red Hat OpenShift Serverless

A computação e a arquitetura serverless são muito usadas como se tivessem o mesmo significado, mas na verdade elas são conceitos diferentes. A computação serverless se refere ao modelo de desenvolvimento de aplicações, e a arquitetura serverless representa a abordagem de design de uma aplicação. 

Computação serverless 

A computação serverless é diferente de outros modelos de cloud computing, em que o provedor de nuvem é responsável por gerenciar a infraestrutura de nuvem e escalar as apps. Em vez de provisionar e manter os servidores, as aplicações são executadas em recursos de computação gerenciados automaticamente e disponibilizados por provedores de nuvem. A computação serverless é orientada a eventos, tem escalabilidade automática e costuma seguir um modelo de pagamento por utilização. As apps 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 disponibiliza componentes de servidor "sempre ativos" para a execução das apps. Os usuários precisam aumentar a capacidade do servidor nos momentos de alta demanda e diminuir quando essa capacidade não é mais necessária. Mesmo quando as apps não são usadas, a infraestrutura de nuvem necessária para a execução delas continua ativa.

Tipos de computação serverless

A computação serverless tem várias categorias:

  • Função como serviço (FaaS):FaaS executa funções orientadas a eventos em containers de curta duração. Não é necessário gerenciar as instâncias do servidor, e a execução é realizada apenas quando acionada.
  • Back-end como serviço (BaaS): o BaaS oferece serviços de back-end totalmente gerenciados que lidam com autenticação, bancos de dados, sistema de mensageria e armazenamento. Ele é muito usado em dispositivos mobile e aplicações web.
  • Bancos de dados serverless: têm escalabilidade automática e não exigem o gerenciamento da infraestrutura.
  • Containers serverless: esse tipo de container é executado sem provisionamento manual e tem escalabilidade dinâmica.
  • Edge computing serverless: esse tipo de edge computing executa código mais perto dos usuários para reduzir a latência.

Arquitetura serverless

A arquitetura serverless é uma abordagem de design em que as apps são iniciadas apenas quando necessário. Quando um evento aciona a execução do código da app, o provedor de nuvem pública aloca os recursos para esse processo. Os usuários deixam de ser cobrados quando a execução termina. Com o modelo serverless, os desenvolvedores também não precisam mais lidar com as tarefas associadas ao provisionamento de servidores e escalabilidade de apps. As tarefas rotineiras são realizadas por um provedor de serviços de nuvem. Elas incluem o gerenciamento do sistema operacional e de arquivos, a aplicação de patches de segurança, o balanceamento de carga e o controle de capacidade. É possível criar uma app totalmente serverless ou uma que tenha microsserviços serverless e tradicionais.

A arquitetura serverless que usa os microsserviços é chamada de microsserviços serverless. Com os microsserviços serverless, os desenvolvedores podem usar a arquitetura serverless para criar código, e os microsserviços dividem a aplicação em componentes menores e gerenciáveis. Como resultado, o desenvolvimento e a implantação ficam mais rápidos. 

Recursos da Red Hat

Vantagens

  • Transferência das tarefas de gerenciamento de servidor: sem precisar provisionar, manter e escalar os servidores, os desenvolvedores têm mais tempo para se concentrar nas apps.
  • Custo-benefício: com o modelo de pagamento por utilização, só é necessário pagar apenas pelo tempo de execução real das funções, diminuindo os custos dos recursos não usados.
  • Desenvolvimento e implantação mais rápidos: a produtividade dos desenvolvedores aumenta porque há menos gerenciamento de infraestrutura e as implantações exigem o mínimo de configuração.
  • Escalabilidade automática: é possível aumentar ou diminuir a escala das funções automaticamente com base na demanda.
  • Segurança integrada: o provedor gerencia as atualizações e patches de segurança, diminuindo os riscos associados aos erros de configuração de servidores.

Desvantagens

  • Complexidade da arquitetura: os fluxos de trabalho orientados a eventos podem se tornar complexos, já que várias funções interagem entre si de maneira assíncrona.
  • Restrições na interação: os provedores de nuvem podem impor limites em relação a como você usa os componentes deles, o que diminui a flexibilidade.
  • Dependência de fornecedor: os serviços serverless estreitamente integrados aos ecossistemas de provedores de nuvem podem dificultar a migração.

Casos de uso do modelo serverless

A arquitetura serverless é ideal para apps assíncronas e stateless que podem ser iniciadas instantaneamente. Ela é ideal para casos de uso que envolvem aumentos imprevisíveis e aleatórios de demanda.

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 converter as modificações automaticamente.

As apps 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 apps web e interfaces de programação de aplicações (APIs) de back-end, automação de processos de negócios, sites serverless e integração de diversos sistemas.

No modelo serverless, um provedor de nuvem executa servidores físicos e aloca os recursos deles em nome dos usuários, que podem implantar código diretamente na produção.

O FaaS é o modelo serverless mais comum e se concentra em funções orientadas a eventos. Com ele, os desenvolvedores podem produzir uma lógica personalizada no lado do servidor, que é implantada em containers totalmente gerenciados por um provedor de serviços de nuvem. Esses containers são: 

  • Stateless, o que simplifica a integração dos dados.
  • Temporários, para que sejam executados por muito pouco tempo.
  • Acionados por eventos, para que sejam executados automaticamente quando necessário.
  • Totalmente gerenciados, para você pagar somente pelo que usar.

Com o FaaS, os desenvolvedores têm mais controle e podem chamar funções usando APIs, que são gerenciadas pelo provedor de nuvem com um gateway de API.

Os principais provedores de nuvem oferecem soluções de FaaS, como o AWS Lambda, Azure Functions, Google Cloud e IBM Cloud Functions. Para executar os próprios ambientes de FaaS, algumas empresas usam plataformas open source como o Red Hat® OpenShift® Serverless (baseado no Knative).

O FaaS tem um equivalente voltado a serviços de back-end: o BaaS. Ele oferece aos desenvolvedores acesso a serviços de terceiros, como autenticação, criptografia e bancos de dados, normalmente por meio de APIs. O BaaS simplifica as tarefas de back-end, mas concede menos controle sobre a lógica personalizada da aplicação.

Descubra mais sobre o FaaS

O Kubernetes é uma plataforma muito usada para gerenciar apps em containers, mas não oferece suporte nativo a cargas de trabalho serverless. O Knative é um projeto open source que disponibiliza os componentes necessários para implantar, executar e gerenciar apps serverless no Kubernetes.

O Knative possibilita ambientes serverless porque oferece a você a capacidade de implantar código em plataformas do Kubernetes como o Red Hat OpenShift. Com o Knative, você empacota seu código como uma imagem de container, e o sistema inicia e interrompe automaticamente as instâncias com base na demanda.

O Knative tem três componentes principais:

Ao contrário das soluções serverless tradicionais, o Knative oferece suporte a uma ampla variedade de cargas de trabalho, como apps monolíticas, microsserviços e funções pequenas. Ele pode ser executado em qualquer plataforma compatível com o Kubernetes, como ambientes on-premises.

O Knative oferece benefícios importantes, como:

  • Cargas de trabalho serverless e microsserviços com suporte: é possível implantar funções stateless orientadas a eventos no Kubernetes. Você também pode implantar microsserviços de longa duração, que são escalados dinamicamente sem exigir a manutenção manual das instâncias do servidor.
  • Otimização dos custos e do uso de recursos: ao contrário dos microsserviços tradicionais, em que os pods estão sempre em execução, o Knative é compatível com a redução da escala a zero. Isso significa que os recursos são desalocados quando nenhuma solicitação é recebida, o que diminui os custos.
  • Flexibilidade e APIs padronizadas: o Knative segue os padrões do Kubernetes e funciona com diferentes provedores de nuvem.

O Knative incorpora o poder da computação serverless ao Kubernetes, simplificando a implantação e o gerenciamento de cargas de trabalho serverless.

Crie uma arquitetura serverless com o Knative

Com o Red Hat OpenShift Serverless, você cria e implanta aplicações serverless sem se preocupar com o gerenciamento da infraestrutura. Ele oferece uma plataforma serverless empresarial que proporciona portabilidade e consistência em ambientes híbridos e de multicloud. 

Com o OpenShift Serverless, os desenvolvedores podem criar aplicações nativas em nuvem e voltadas à fonte usando uma série de definições de recurso personalizadas (CRDs) e controladores associados no Kubernetes. E para as equipes de operações, o OpenShift Serverless oferece uma experiência simplificada porque ele é facilmente instalado no Red Hat OpenShift, foi testado com outras soluções Red Hat e inclui acesso ao nosso suporte premiado

O OpenShift Serverless proporciona uma solução completa de desenvolvimento e implantação de apps serverless porque integra as aplicações aos outros serviços do Red Hat OpenShift Container Platform, como o Red Hat OpenShift Service Mesh e o monitoramento de clusters. Os desenvolvedores podem usar a mesma plataforma para hospedar microsserviços e aplicações serverless e legadas. As apps são empacotadas como containers Linux® que podem ser executados em qualquer ambiente. 

Crie uma função do OpenShift Serverless

Hub

Blog da Red Hat

Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.

Teste as soluções da Red Hat

Você sabia que a Red Hat oferece versões de teste gratuitas de suas soluções? Aproveite e obtenha experiência prática, prepare-se para uma certificação da Red Hat ou avalie na prática se a solução é adequada para ao caso de uso.

Leia mais

O que é migração de aplicações?

A migração de aplicações é o processo de transferir uma aplicação de um ambiente para outro, melhorando as cargas de trabalho.

O que é IDE (ambiente de desenvolvimento integrado)

Ambiente de desenvolvimento integrado (IDE) é um software para desenvolvimento de aplicações que reúne ferramentas de desenvolvimento em uma interface única.

O que é Quarkus?

Quarkus é um stack Java nativo do Kubernetes que foi desenvolvido para máquinas virtuais Java (JVMs) e compilação nativa, otimizando essa linguagem especificamente para containers.

Desenvolvimento e entrega de aplicações: leitura recomendada

Artigos relacionados