Account Login
Jump to section

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
  • Amazon's AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions (open source)
  • OpenFaaS (open source)

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.

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 em fluxos de trabalho comuns que os desenvolvedores podem usar para implantar aplicações, eliminando a distinção entre uma PaaS e uma 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 torna sua função disponível 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á algumas restrições relacionadas à arquitetura para que alguns desses benefícios sejam possíveis, como limite de tempo de execução de uma função. Portanto, é necessário que uma função seja 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

Uma FaaS funciona bem com transações de alto volume e cargas de trabalho que ocorrem 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 formada por elementos de microsserviços parcialmente serverless e parcialmente tradicionais para aproveitar as vantagens da tecnologia mais recente e sistemas de orquestração de container como o Kubernetes.

  • Aumento da produtividade dos desenvolvedores e do tempo de desenvolvimento
  • 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.

Leitura recomendada

ARTIGO

Stateful x stateless

Para determinar se algo é stateful ou stateless, basta considerar o tempo em que seu estado de interação é registrado e como essas informações precisam ser armazenadas.

ARTIGO

O que é Quarkus?

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

ARTIGO

O que é serverless?

Serverless é um modelo de desenvolvimento nativo em nuvem para criação e execução de aplicações sem o gerenciamento de servidores.

Leia mais sobre aplicações nativas em nuvem

Soluções Red Hat

Red Hat OpenShift

Uma plataforma empresarial de aplicações em container Kubernetes com um stack completo de operações automatizadas para gerenciar implantações de nuvem híbrida, multicloud e edge.

Conteúdo adicional

Ebook

Tecnologia nativa em nuvem e a nuvem híbrida: um guia estratégico

VÍDEO - THE SOURCE TV

O futuro da nuvem: a evolução das soluções cloud

Aprenda mais sobre a evolução e o futuro das soluções em nuvem com os especialistas da Red Hat

E-book

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

Treinamentos Red Hat

Treinamento gratuito

Developing Cloud-Native Applications with Microservices Architectures

Illustration - mail

Quer receber mais conteúdo deste tipo?

Cadastre-se para receber a nossa newsletter Red Hat Shares.