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

10 de julho de 2021

O que é FaaS?

Função como serviço (FaaS) é 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 aplicações de microsserviços.

Hospedar uma aplicação de software na internet geralmente envolve a criação e o gerenciamento de um servidor virtual ou físico, bem como a gestão de um sistema operacional e de 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. Esta funcionalidade permite que os desenvolvedores se concentrem exclusivamente em funções individuais no código da sua aplicação.

Vista aérea de rodovias

Fique por dentro da nuvem 


Receba o boletim informativo semanal do Think para ver orientações especializadas sobre a otimização das configurações multinuvem na era da IA.

FaaS versus 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 Serverless é dedicado a qualquer categoria de serviço, seja computação, armazenamento, banco de dados, mensagens e API Gateway, em que a configuração, o gerenciamento e o faturamento dos servidores são invisíveis para o usuário.

No entanto, o FaaS, embora seja talvez a tecnologia mais central em arquiteturas serverless, está concentrado no paradigma de computação baseada em eventos, onde o código da aplicação ou os containers são executados somente em resposta a eventos ou solicitações.

Benefícios do FaaS

O FaaS é uma ferramenta valiosa para a migração eficiente e econômica de aplicações para a nuvem. Veja a seguir mais alguns benefícios:

  • Concentre-se mais no código, 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 você não ter que gerenciar a infraestrutura. Esse recurso permite que você se concentre no código da aplicação e pode reduzir drasticamente o tempo de colocação no mercado.

  • Pague apenas pelos recursos que utilizar, quando utilizar: Com o FaaS, você paga somente quando uma ação acontecer. Quando a ação é concluída, tudo para: nenhum código é executado, nenhum servidor fica ocioso e não é gerado nenhum custo. Portanto o FaaS é 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.

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

  • Receba 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

Há várias práticas recomendadas que você pode seguir para facilitar a implementação e tornar o uso do FaaS mais eficaz:

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

  • Não faça funções chamarem outras funções: O valor do FaaS está no isolamento das funções. Muitas funções aumentam seus custos e removem o valor do isolamento das 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 com facilidade, o FaaS é adequado para cargas de trabalho de alto volume e paralelizáveis de maneira simples. Também pode ser usado para criar sistemas de back-end ou para atividades como processamento de dados, conversão de formatos, codificação ou agregação de dados.

O FaaS também é uma ótima ferramenta para aplicativos da web, backends, processamento ou fluxos de dados, ou para criar chatbots online ou back-ends para dispositivos IoT. O FaaS pode ajudá-lo a gerenciar e usar serviços de terceiros. Se você pretende desenvolver aplicativos para Android, por exemplo, pode adotar uma abordagem FaaS para manter seus custos sob controle. Como você só paga 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 com 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 usar 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 permitiu que se concentrassem na lógica de negócios. Com o FaaS, a equipe concluiu uma simulação de Monte Carlo inteira em cerca de 90 segundos com mil invocações simultâneas. Comparativamente, a execução do mesmo fluxo em um laptop com quatro núcleos da CPU consumiu 247 minutos e quase 100% de utilização da CPU.

FaaS versus PaaS, contêineres e VMs

FaaS, PaaS (plataforma como serviço)contêineres e máquinas virtuais (VMs) todos 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, passando de fácil para difícil para PaaS, containers e VMs.

  • Dimensionamento elástico: cada ação é dimensionada de forma instantânea e inerente, ao contrário de outros modelos que oferecem dimensionamento automático, mas lento, que exige ajuste minucioso das regras de auto-scaling.

  • Planejamento da capacidade: nenhum é necessário, ao contrário de outros modelos que exigem uma combinação de alguma escalabilidade automática e planejamento de capacidade.

  • Conexões e estado persistentes: a capacidade limitada de persistir conexões e estado deve ser mantida em um serviço ou recurso externo. Os outros modelos podem usar http, manter um socket ou ou conexão abertos por longos períodos e podem armazenar estado em memória entre as chamadas.

  • Manutenção:o provedor de FaaS gerencia toda a manutenção. Isso também vale para o PaaS. Contêineres e VMs exigem manutenção considerável, que inclui atualização e gerenciamento de sistemas operacionais, imagens de contêiner, conexões e outros.

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

  • Utilização de recursos: os recursos não ficam ociosos, são invocados somente quando solicitados. Todos os outros modelos apresentam pelo menos algum grau de capacidade ociosa.

  • Limites de recursos: o 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 e outros.

  • 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 das implementações de "estrutura básica" por trás do FaaS. Kubernetes é uma ferramenta de orquestração de contêiner de código aberto essencial para o gerenciamento de aplicações na nuvem. O Knative permite a execução de serverless dentro de um cluster do Kubernetes.

A combinação do Knative e Kubernetes possibilita que você utilize as funções do Kubernetes, como monitoramento, segurança, registro e autenticação, e as combine com os benefícios do Knative, como construção automática 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 construírem aplicativos em nuvem. O objetivo era aumentar a disponibilidade e a consistência dos contêineres com o dimensionamento poderoso e o acesso serverless sob demanda.

Soluções relacionadas
Serviços de consultoria de nuvem

Utilize nossos serviços de nuvem, desenvolvidos com a nossa plataforma IBM® Consulting Advantage para acelerar sua jornada para a nuvem híbrida, gerando eficiência de custos, aumento da produtividade, sustentabilidade e menor tempo de lançamento no mercado.

Explore os serviços de nuvem
Soluções de hospedagem de servidores dedicados

A hospedagem de servidores dedicados da IBM oferece isolamento total, controle e segurança para cargas de trabalho de missão crítica com opções personalizáveis.

Explore soluções de servidores dedicados
IBM Cloud Virtual Server for VPC

O IBM Cloud Virtual Server for VPC é uma linha de virtual servers Intel x86, IBM® Z e IBM® LinuxONE construídos na IBM® Cloud Virtual Private Cloud.

Explore o virtual server na nuvem
Dê o próximo passo

Fortaleça sua presença na web com soluções de hospedagem na web confiáveis e seguras da IBM Cloud. Desde sites de alto tráfego até aplicações corporativas, os IBM Cloud Bare Metal Servers oferecem flexibilidade, transferência ilimitada de dados e alcance global, sob medida para suas necessidades de hospedagem.

Explore a hospedagem na web do IBM Cloud Crie sua conta gratuita na IBM Cloud