Login / Registre-se Account

Aplicações nativas em nuvem

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

Uma função como serviço, ou FaaS na sigla em inglês, é um modelo de execução computacional 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. 

Com uma FaaS, os desenvolvedores podem criar, executar e gerenciar pacotes de aplicações como funções, sem a necessidade de se preocupar com a manutenção da infraestrutura.

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, essa plataforma reside na nuvem, mas o modelo está sendo expandido para incluir implantações on-premise e híbridas.

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ócio.

Uma função é um software que executa a lógica de negócios. 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.

Alguns exemplos mais conhecidos de FaaS são:

  • AWS Lambda
  • Google Cloud Functions
  • Microsoft Azure Functions (open source)
  • OpenFaaS (open source)

Como uma Função como Serviço funciona?

Uma FaaS retira dos desenvolvedores a tarefa de executar aplicações 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, 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 as aplicações modernas 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 de nuvem torna sua função disponível e gerencia a alocação de recursos. Como as funções são orientadas a eventos, e não recursos, elas podem ser escaladas com facilidade.

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 de ser 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 do 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, ou seja, 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.

Benefícios da FaaS

  • 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 quando necessário.
  • As funções podem ser escritas em quase todas as linguagens de programação.

Qual a diferença entre FaaS e serverless?

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.

A base Kubernetes para a computação serverless

Red Hat OpenShift Logo

Uma plataforma de containers e Kubernetes para acelerar a implantação de aplicações nativas em nuvem.

Red Hat OpenShift Application Runtimes logo

Uma seleção de ambientes de execução e frameworks para desenvolver aplicações nativas em nuvem.

Você pode fazer muito mais com uma FaaS