O que é função como serviço (FaaS)?

Copiar URL

Uma função como serviço, ou FaaS, é um tipo de serviço de cloud computing que permite que os desenvolvedores criem, executem e gerenciem pacotes de aplicações como funções, sem a necessidade de se preocupar com a manutenção da infraestrutura.

Ela é um modelo de execução orientado a eventos que é executado em containers stateless. Essas funções gerenciam a lógica e o estado no lado do servidor usando serviços de um provedor de FaaS.

As principais nuvens públicas oferecem soluções de FaaS. Essas soluções também podem ser provisionadas on-premise, dando à TI corporativa novos recursos substanciais para o desenvolvimento de aplicações. Obtenha um guia estratégico de TI nativa em nuvem para que sua empresa esteja preparada para implementar uma abordagem serverless com uma FaaS.

Alguns exemplos mais conhecidos de FaaS são:

  • IBM Cloud Functions
  • AWS Lambda da Amazon
  • Google Cloud Functions
  • Microsoft Azure Functions (open source)
  • OpenFaaS (open source)
Tecnologia nativa em nuvem e a nuvem híbrida: um guia estratégico

Usar uma FaaS é uma maneira de implementar a computação serverless, em que os desenvolvedores escrevem a lógica de negócios que, por sua vez, é executada em containers Linux totalmente gerenciados por uma plataforma.

Normalmente, trata-se de uma plataforma de cloud computing que usa serviços correspondentes, mas o modelo está se expandindo para incluir implantações on-premises e híbridas também.

A computação serverless retira das mãos dos desenvolvedores as tarefas de infraestrutura, como gerenciamento ou provisionamento de servidores e alocação de recursos, que passam a ser realizadas por uma plataforma, como o Red Hat OpenShift. Assim, os desenvolvedores ficam livres para concentrar os esforços na escrita do código e geração de valor de negócios.

Uma função é um software que executa a lógica de negócios em um sistema operacional. As aplicações podem ser compostas de muitas funções.

Usar um modelo de FaaS é uma maneira de criar uma aplicação com uma arquitetura serverless. No entanto, como o paradigma da eliminação do servidor está se tornando cada vez mais popular, os desenvolvedores estão buscando soluções que sejam compatíveis com a criação de microsserviços serverless e containers stateless.

Leia o artigo O caminho para a adoção de aplicações nativas em nuvem

Recursos da Red Hat

Uma FaaS retira dos desenvolvedores a tarefa de executar aplicações web em resposta a eventos, sem gerenciar servidores. Por exemplo, o carregamento de um arquivo pode acionar um código personalizado que transcodifica o arquivo em vários formatos.

Normalmente, o uso de uma infraestrutura de FaaS é medido sob demanda pelo provedor do serviço, principalmente por meio de um modelo de execução orientado a eventos. Portanto, ela está lá quando você precisa, mas não exige a execução constante de processos de servidor em segundo plano, como é o caso de uma Plataforma como Serviço (PaaS)

As soluções modernas de PaaS oferecem recursos serverless como parte de fluxos de trabalho comuns que os desenvolvedores podem usar para implantar aplicações, eliminando a diferença entre PaaS e FaaS. 

Na realidade, a tendência é que aplicações inteiras sejam compostas de uma combinação destes três tipos de soluções: funções, microsserviços e serviços de execução prolongada.

Um provedor disponibiliza sua função por meio de uma interface de programação de aplicações (API) e gerencia a alocação de recursos. Como as funções são orientadas a eventos, e não recursos, elas podem ser escalonadas com facilidade. Isso permite que elas sejam mais eficientes e valiosas.

Há restrições de arquitetura para habilitar alguns desses benefícios, como limites de tempo na execução de uma função, então uma função precisa ser algo que possa ser iniciado e executado rapidamente. 

As funções são iniciadas em questão de milissegundos e processam solicitações individuais. Caso haja várias solicitações simultâneas a serem processadas por uma função, o sistema criará um número de cópias suficientes dela para atender à demanda.

Quando a demanda cai, a aplicação reduz a escala automaticamente. O escalamento dinâmico é um benefício da FaaS. Além disso, ele é econômico, pois os provedores cobram apenas pelos recursos efetivamente usados, e não pelo tempo ocioso.

Quando esse tipo de solução é executado em um ambiente on-premise, essa natureza dinâmica também pode aumentar a densidade da sua plataforma, permitindo a execução de mais cargas de trabalho e a otimização da funcionalidade e consumo de recursos.

Um serviço orientado a eventos que necessita de escalamento horizontal pode funcionar bem como uma função, assim como as aplicações RESTful

A FaaS funciona bem com transações de alto volume e cargas de trabalho que ocorrem apenas de tempos em tempos, como geração de relatórios, processamento de imagens ou quaisquer tarefas programadas. Alguns casos de uso comuns de FaaS incluem processamento de dados, serviços de Internet das Coisas (IoT) e aplicações web ou mobile.

É possível criar uma aplicação totalmente serverless usando FaaS ou uma com componentes de microsserviços parcialmente serverless e tradicionais para aproveitar as tecnologias mais recentes e os sistemas de orquestração , como o Kubernetes.

  • Maior produtividade do desenvolvedor e tempo de desenvolvimento mais rápido
  • Sem responsabilidade pelo gerenciamento de servidores
  • Escala fácil e escala horizontal gerenciada pela plataforma
  • Consumo e cobrança de recursos apenas conforme necessário
  • As funções podem ser escritas em quase todas as linguagens de programação

Inicialmente, FaaS e serverless significam mais ou menos a mesma coisa. No entanto, o significado de computação serverless expandiu para incluir um conjunto maior de práticas e padrões de arquitetura que fazem amplo uso de serviços comuns, além da lógica de serviço personalizada codificada na FaaS.

A computação serverless pode ser usada por microsserviços e, até mesmo, aplicações tradicionais, desde que estas sejam colocadas em containers e sigam os requisitos de gerenciamento de estado e ajuste dinâmico de escala. 

O termo "serverless" também é usado para representar serviços gerenciados, como sistemas de mensageria e bancos de dados, em que um desenvolvedor ou administrador não precisa operar o sistema porque este é gerenciado por um provedor de nuvem ou outra empresa.  

A combinação de uma FaaS e serviços de back-end comuns, como sistemas de mensageria, autenticação e bancos de dados, conectada principalmente por meio de uma arquitetura orientada a eventos, é o que resulta nos melhores benefícios para os desenvolvedores que trabalham com computação serverless.

Saiba mais sobre computação 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

Red Hat Cloud Services - Serviços de nuvem da Red Hat

Red Hat® Cloud Services oferece serviços gerenciados para containers, aplicações e dados com hospedagem nas principais nuvens públicas.

O que são provedores de serviços em nuvem?

Provedores de serviços em nuvem são empresas que oferecem infraestrutura, plataformas e/ou software por uma rede. Veja como escolher um provedor de serviços em nuvem.

O que é PaaS? | Plataforma como serviço

PaaS ou plataforma como serviço (Platform-as-a-service) é um modelo de cloud computing onde as plataformas de hardware e software são fornecidas por provedores de serviços de nuvem.

Serviços de nuvem: leitura recomendada