O que é FaaS (Função como Serviço)?
O FaaS torna mais simples para desenvolvedores de aplicativos em nuvem executar e gerenciar aplicativos de microsserviços.
Assine a newsletter da IBM
Fundo preto e azul com formas geométricas interconectadas
O que é FaaS?

FaaS, ou Function-as-a-Service (função como serviço), é um serviço de computação em nuvem que permite que os clientes executem códigos em resposta a eventos, sem gerenciar a infraestrutura complexa normalmente associada à criação e ao lançamento de aplicativosde microsserviços.

Hospedar um aplicativo de software na internet geralmente envolve a criação e gerenciamento de um servidor virtual ou físico, bem como a gestão de um sistema operacional e dos processos de hospedagem do servidor web.Com o FaaS, o hardware físico, o sistema operacional de máquina virtual e o gerenciamento de software de servidor da Web são tratados automaticamente pelo provedor de serviços de nuvem. Isso permite que os desenvolvedores concentrem-se exclusivamente em funções individuais no código de sua aplicação.

 

FaaS vs. serverless

Serverless e função como serviço (FaaS) são frequentemente confundidos, mas a verdade é que o FaaS é, na realidade, um subconjunto do conceito de serverless.

O foco do Serverless é qualquer categoria de serviço, seja computação, armazenamento, banco de dados, mensagens, gateways de API, etc. onde configuração, gerenciamento e faturamento de servidores são invisíveis para o usuário final.

Já o FaaS, que talvez seja a tecnologia mais essencial em arquiteturas serverless, está concentrado no paradigma de computação orientada por eventos, onde o código da aplicação ou os containers só são acionados em resposta a eventos ou solicitações.

Benefícios do FaaS

O FaaS é uma ferramenta valiosa se você estiver procurando migrar aplicativos para a nuvem de forma eficiente e econômica. A seguir estão alguns benefícios que você poderá aproveitar:

  • Concentrar-se mais no código e não na infraestrutura: com o FaaS, você pode dividir o servidor em funções que podem ser dimensionadas de forma automática e independente, para que você não precise gerenciar a infraestrutura. Isso permite que você se concentre no código do aplicativo e pode reduzir drasticamente o tempo de lançamento no mercado.

  • Pague apenas pelos recursos que usar, quando usá-los: Com o FaaS, você paga apenas quando uma ação ocorre. Quando a ação é concluída, tudo para: nenhum código é executado, nenhum servidor fica ocioso e nenhum custo é incorrido. O FaaS é, portanto, econômico, especialmente para cargas de trabalho dinâmicas ou tarefas agendadas. O FaaS também oferece um custo total de propriedade superior para cenários de alta carga.

  • Dimensionar ou reduzir automaticamente: com FaaS, as funções são dimensionadas automaticamente, de forma independente e instantânea, conforme necessário. Quando a demanda cai, o FaaS diminui automaticamente.

  • Obtenha todos os benefícios da robusta infraestrutura de nuvem: o FaaS oferece alta disponibilidade inerente, pois está distribuído em várias zonas de disponibilidade por região geográfica e pode ser implantado em qualquer número de regiões sem custos adicionais.
Princípios e melhores práticas de FaaS

Existem várias práticas recomendadas que você pode seguir para tornar o uso do FaaS mais fácil de implantar e mais eficaz:

  • Faça com que cada função execute apenas uma ação: as funções de FaaS devem ser projetadas para realizar uma única parte do trabalho em resposta a um evento. Torne seu escopo de código limitado, eficiente e leve para que as funções sejam carregadas e executadas rapidamente.

  • Não faça com que as funções chamem outras funções: O valor do FaaS está no isolamento das funções. Muitas funções aumentarão seus custos e removerão o valor do isolamento de suas funções.

  • Use o menor número possível de bibliotecas em suas funções: O uso de muitas bibliotecas pode tornar as funções mais lentas e mais difíceis de escalar.
Casos de uso de FaaS

Devido à sua capacidade de isolar e dimensionar transações facilmente, o FaaS é adequado para cargas de trabalho de alto volume e paralelizáveis de maneira simples.Também pode ser utilizado para criar sistemas de back-end ou para tarefas como processamento de dados, conversão de formatos, codificação ou agregação de dados.

O FaaS também é uma boa ferramenta para aplicativos da Web, backends, processamento de dados/stream ou para criar chatbots online ou back-end para dispositivos IoT. O FaaS pode ajudá-lo a gerenciar e usar serviços de terceiros. Se você está pensando em desenvolver aplicativos para Android, por exemplo, você pode adotar uma abordagem FaaS para manter seus custos sob controle. Como você só é cobrado quando seu aplicativo se conecta à nuvem para uma função específica, como processamento em lote, os custos podem ser consideravelmente mais baixos do que seriam usando uma abordagem tradicional.

O FaaS também pode impulsionar drasticamente o desempenho da computação. Por exemplo, dois alunos trabalharam recentemente com engenheiros da IBM para explorar como aproveitar as funções do IBM Cloud para simulações de Monte Carlo (métodos matemáticos usados para estimar os resultados futuros de determinados eventos difíceis de prever) para estimar os preços das ações. As simulações do Monte Carlo são consideradas uma importante carga de trabalho de computação de alto desempenho. A combinação do Monte Carlo com o IBM Cloud Functions permitiu que a equipe executasse cálculos em grande escala e permitisse que eles se concentrassem na lógica de negócios. Usando o FaaS, a equipe concluiu uma simulação de Monte Carlo inteira em cerca de 90 segundos com 1.000 invocações simultâneas. Comparativamente, executar o mesmo fluxo em um laptop com quatro núcleos da CPU levou 247 minutos e quase 100% de utilização da CPU.

Para ver mais exemplos de casos de uso de FaaS, confira “Uma recapitulação das principais vantagens oferecidas pelo IBM Cloud Functions”.

FaaS versus PaaS, contêineres e VMs

FaaS, PaaS (plataforma como serviço)contêineresmáquinas virtuais (VMs) desempenham um papel fundamental no ecossistema serverless. Uma vez que a FaaS é o elemento central e mais definidor do serverless stack, vale a pena examinar como o FaaS difere de outros modelos comuns de computação disponíveis hoje em dia, considerando atributos-chave:

  • Tempo de provisionamento: milissegundos, em comparação com minutos e horas para os outros modelos.

  • Administração contínua: nenhuma, em comparação com uma escala crescente de fácil para difícil para PaaS, containers e VMs, respectivamente.

  • Dimensionamento elástico: cada ação é sempre dimensionada de forma instantânea e inerente, em comparação com outros modelos que oferecem dimensionamento automático, mas lento, que requer ajuste cuidadoso das regras de dimensionamento automático.

  • Planejamento de capacidade: nenhum é necessário, em comparação com os outros modelos que exigem uma combinação de dimensionamento automático e planejamento de capacidade.

  • Conexões persistentes e estado: a capacidade limitada para manter conexões persistentes, sendo necessário armazenar o estado em um serviço ou recurso externo. Os outros modelos podem aproveitar o http, manter uma tomada aberta ou uma conexão por longos períodos de tempo e armazenar o estado na memória entre as chamadas.

  • Manutenção: toda a manutenção é gerenciada pelo provedor FaaS. Isso também é verdade para PaaS; contêineres e VMs exigem manutenção significativa, que inclui atualizar/gerenciar sistemas operacionais, imagens de contêiner, conexões, etc.

  • Alta disponibilidade (HA) e recuperação de desastres (DR): Novamente, a HA é inerente ao modelo FaaS sem nenhum esforço ou custo extra. Os outros modelos exigem custos adicionais e esforço de gestão. Tanto no caso de VMs quanto de contêineres, a infraestrutura pode ser reiniciada automaticamente.

  • Utilização de recursos: os recursos nunca estão ociosos - eles são invocados apenas quando solicitados.Todos os outros modelos apresentam pelo menos algum grau de capacidade ociosa.

  • Limites de recursos: FaaS é o único modelo que tem limites de recursos sobre o tamanho do código, ativações simultâneas, memória, comprimento da execução, etc.

  • Cobrança de granularidade e faturamento: por blocos de 100 milissegundos, em comparação com a hora (e às vezes minuto) de outros modelos.
Kubernetes/Knative e FaaS

Kubernetes e Knative são uma implementação de "encanamento" atrás de FaaS. Kubernetes é uma ferramenta de orquestração de contêiner de código aberto que é essencial para o gerenciamento de aplicativos na nuvem. O Knative permite executar serverless dentro de um cluster do Kubernetes.

A combinação de Knative e Kubernetes permite que você aproveite as funcionalidades do Kubernetes, como monitoramento, segurança, registro e autenticação, e as combine com os benefícios do Knative, como a construção automatizada de contêineres, portabilidade completa e operação em ambientes híbridos.

Os criadores dessa tecnologia acreditavam que os desenvolvedores não deveriam ter que escolher entre serverless e contêineres ao criar aplicativos na nuvem. O objetivo era aumentar a disponibilidade e a consistência dos contêineres com o dimensionamento poderoso e o acesso sob demanda serverless.

Assista a este vídeo para saber mais sobre Knative:

Soluções relacionadas
IBM Cloud Code Engine

Execute imagens de contêiner, trabalhos em lote ou código-fonte como cargas de trabalho serverless — sem dimensionamento, implantação, rede ou dimensionamento necessários. 

Explore o IBM Cloud Code Engine
IBM Cloud Functions

Desenvolva código leve que execute de forma escalável sob demanda com esta plataforma de programação de função como serviço (FaaS).

Explore as funções da IBM Cloud
Recursos O que é "serverless"?

O Serverless é um modelo de execução e desenvolvimento de aplicativos na nuvem que permite aos desenvolvedores criar e executar códigos de aplicativos sem provisionar ou gerenciar servidores ou infraestrutura de back-end.

O que são contêineres?

Os contêineres são unidades executáveis de software que empacotam código de aplicativo junto com suas bibliotecas dependências, e podem ser executados em qualquer lugar, seja no desktop, TI tradicional ou na nuvem.

O que é PaaS?

A PaaS, ou Plataforma como Serviço, fornece uma plataforma de nuvem completa, flexível e econômica para desenvolver, executar e gerenciar aplicativos.

Dê o próximo passo

Uma plataforma serverless totalmente gerenciada, o IBM Cloud® Code Engine permite que você se concentre em escrever código, não em gerenciar infraestrutura. Use suas imagens de contêiner, suas tarefas em lote ou seu código-fonte. O IBM Cloud Code Engine gerencia e protege a infraestrutura subjacente para você. Você não precisa dimensionar, implementar ou escalar clusters de contêineres por conta própria. Também não é preciso ter qualificação em redes.

Explore o IBM Cloud Code Engine