O que é Funções como serviço (FaaS)?

Função como serviço (FaaS) é um modelo de computação em nuvem em que você desenvolve pequenos códigos modulares chamados de funções, e um provedor de nuvem os executa em resposta a eventos específicos. Nesse modelo, você se concentra totalmente na lógica do código, enquanto o ambiente de execução sem servidor gerencia a infraestrutura. O provedor de nuvem lida com o hardware físico, o sistema operacional e o software do servidor da Web.

Isso é diferente dos aplicativos tradicionais baseados em servidor ou das arquiteturas monolíticas. Nesses modelos mais antigos, você geralmente gerencia um servidor que é executado continuamente, mesmo quando ninguém usa seu aplicativo. Com o FaaS, a plataforma executa seu código apenas quando um evento específico o aciona. Isso permite uma maneira eficiente de criar aplicativos, já que você consome recursos apenas quando necessário.

FaaS x PaaS x IaaS

É útil entender como a FaaS se compara a outros modelos de serviço de nuvem, como plataforma como serviço (PaaS) e infraestrutura como serviço (IaaS). Embora a FaaS pertença à categoria mais ampla "sem servidor", em que o provedor gerencia os servidores, ela oferece um nível distinto de abstração. A computação sem servidor abrange qualquer serviço, como bancos de dados, armazenamento ou computação, em que o provedor gerencia os servidores. A FaaS é especificamente a parte de computação sem servidor que executa o código em resposta a eventos.

  • A FaaS se concentra em código orientado a eventos. Você implanta uma única função que executa uma tarefa específica em resposta a um evento, como o upload de um arquivo. A plataforma lida com o escalonamento automaticamente, muitas vezes até zero quando está ociosa.
  • A PaaS oferece uma plataforma para criar e executar aplicativos inteiros. Embora a PaaS também elimine a necessidade de gerenciar hardware e sistemas operacionais, ela normalmente mantém seu aplicativo em execução contínua, aguardando solicitações do usuário. Ela é mais adequada para aplicativos da Web completos do que para gatilhos de eventos individuais.
  • A IaaS oferece mais controle, mas exige mais gerenciamento. Você aluga máquinas virtuais (VMs) e armazenamento, mas é responsável por gerenciar o sistema operacional, os ambientes de execução e o middleware.

Comparação de modelos de serviço em nuvem

Recurso

FaaS (função como serviço)

PaaS: plataforma como serviço

IaaS: infraestrutura como serviço

Unidade principal

Uma única função (pequeno snippet de código)

Um app inteiro

Máquinas virtuais (VMs)

Escalonabilidade

Escalonamento instantâneo por solicitação (inclusive para zero)

Mais lento, escalona com base nas regras configuradas

Escalonamento automático manual ou pré-configurado

Modelo de preços

Pagamento por tempo de execução (milissegundos)

Pague pelos recursos em execução (tempo de atividade)

Pague pelos recursos alocados (tamanho/tempo)

Manutenção

Nenhum (o provedor gerencia tudo)

Menor (o provedor gerencia o SO/ambiente de execução)

Maior (você gerencia SO, atualizações e patches)

Ideal para

Tarefas orientadas a eventos, código de ligação, processamento de dados

Apps da Web, serviços de longa duração

Apps legados, infraestrutura personalizada complexa

Recurso

FaaS (função como serviço)

PaaS: plataforma como serviço

IaaS: infraestrutura como serviço

Unidade principal

Uma única função (pequeno snippet de código)

Um app inteiro

Máquinas virtuais (VMs)

Escalonabilidade

Escalonamento instantâneo por solicitação (inclusive para zero)

Mais lento, escalona com base nas regras configuradas

Escalonamento automático manual ou pré-configurado

Modelo de preços

Pagamento por tempo de execução (milissegundos)

Pague pelos recursos em execução (tempo de atividade)

Pague pelos recursos alocados (tamanho/tempo)

Manutenção

Nenhum (o provedor gerencia tudo)

Menor (o provedor gerencia o SO/ambiente de execução)

Maior (você gerencia SO, atualizações e patches)

Ideal para

Tarefas orientadas a eventos, código de ligação, processamento de dados

Apps da Web, serviços de longa duração

Apps legados, infraestrutura personalizada complexa

Como funciona a função como serviço

O fluxo de trabalho de FaaS pode ser simples e eficiente. Ele geralmente depende de um modelo orientado a eventos em que as ações acionam seu código.

  1. Implantação de código: você escreve um pequeno código ou uma função que executa uma única tarefa e faz upload para o provedor de nuvem.
  2. Gatilho de evento: um evento ocorre, como um usuário clicar em um botão, um arquivo ser enviado para o armazenamento ou uma mensagem chegar a uma fila.
  3. Alocação de recursos: o provedor de nuvem reconhece o evento e provisiona instantaneamente o ambiente de execução necessário.
  4. Execução da função : seu código é executado, realiza a tarefa e produz um resultado, como processar dados ou enviar uma notificação.
  5. Desativação e faturamento: quando a tarefa é concluída, os recursos são liberados imediatamente, e você só paga pelos milissegundos em que o código foi executado.

Casos de uso comuns da FaaS

A FaaS é versátil e se encaixa bem em muitas arquiteturas de aplicativos modernas.

Você pode dividir aplicativos complexos em partes pequenas e independentes que se comunicam por meio de eventos.

A FaaS funciona bem para tarefas como redimensionar uma imagem imediatamente após o upload do usuário ou limpar os dados assim que eles chegam.

É possível usar funções para implementar a lógica por trás de apps móveis ou processar dados de dispositivos da Internet das Coisas (IoT).

Tarefas que podem ser divididas em muitos jobs pequenos e simultâneos, como codificação de vídeo, são executadas de maneira muito eficiente no FaaS.

Você pode substituir tarefas programadas tradicionais por funções que são executadas em horários específicos para realizar manutenção ou gerar relatórios.

Principais vantagens da adoção da FaaS

A adoção da tecnologia de nuvem FaaS oferece vários benefícios para desenvolvedores e empresas.

Escalonamento automático e instantâneo

Seu aplicativo pode lidar com um aumento repentino no tráfego, de um usuário para milhares, sem que você precise configurar nada manualmente.

Controle de custos superior (pagamento por uso)

Você só paga quando o código é executado, o que pode resultar em economias significativas em comparação com o pagamento por servidores ociosos.

Aumento da velocidade do desenvolvedor

Os desenvolvedores podem escrever código e implantá-lo rapidamente sem gastar tempo no gerenciamento de servidores ou na configuração da infraestrutura.

Foque no código do aplicativo, não no gerenciamento da infraestrutura

As equipes podem gastar energia criando valor para os clientes em vez de corrigir servidores ou gerenciar sistemas operacionais.

Alta disponibilidade e resiliência

As plataformas FaaS normalmente executam seu código em várias zonas, então, se uma área falhar, seu aplicativo continua funcionando.

Problema comum para desenvolvedores: "inicialização a frio"

Um dos problemas mais comuns que os desenvolvedores enfrentam com o FaaS é a "inicialização a frio". Quando a função não é executada por um tempo, o provedor de nuvem desativa o ambiente para economizar recursos. Na próxima vez que um evento acionar essa função, haverá um pequeno atraso enquanto o sistema configura o ambiente e carrega o código. Esse atraso, chamado de inicialização a frio, pode deixar o aplicativo mais lento.

Como reduzir inicializações a frio

Se o aplicativo exige respostas instantâneas, você pode usar estas etapas para minimizar a latência.

  1. Reduza o tamanho do código: revise o código e remova bibliotecas ou dependências grandes que não são estritamente necessárias. Quanto menor a função, mais rápido ela carrega.
  2. Use o carregamento lento : estruture seu código para que ele carregue variáveis ou conexões pesadas apenas quando forem realmente necessárias na lógica da função, em vez de carregá-las imediatamente quando a função é iniciada.
  3. Configurar instâncias mínimas: a maioria dos principais provedores de nuvem permite definir uma contagem de "instâncias mínimas". Isso mantém pelo menos uma instância da sua função em modo de espera e pronta para ser usada a qualquer momento, eliminando o atraso na inicialização.
  4. Escolha um ambiente de execução mais rápido: algumas linguagens de programação, como Go ou Python, geralmente iniciam mais rápido do que outras, como Java. Se a velocidade for essencial, considere escrever funções sensíveis à latência em uma linguagem mais leve.

Resolva seus desafios comerciais com o Google Cloud

Clientes novos recebem US$ 300 em créditos para usar no Google Cloud.

FaaS e Cloud Run functions

Função como serviço descreve um modelo de computação em nuvem, e o Cloud Run functions é o produto do Google Cloud que coloca esse conceito em prática. Ele serve como uma solução FaaS escalonável e de pagamento por utilização que permite executar código sem gerenciamento de servidor.

Ao escolher as funções do Cloud Run, você adota uma abordagem sem servidor em que o Google Cloud lida com a infraestrutura subjacente. Você fornece o código, e a plataforma gerencia o ambiente de execução, as atualizações do sistema operacional e os recursos de escalonamento automático. Com essa integração, você pode implantar funções de finalidade única que respondem a eventos, como solicitações HTTP ou mudanças de dados, sem provisionar uma única máquina virtual.

Esse serviço combina a simplicidade da implantação de funções com o poder da tecnologia do Cloud Run. Os desenvolvedores podem criar aplicativos orientados a eventos usando linguagens como Python, Node.js, Go, Java, .NET e Ruby. Como ele é executado na infraestrutura robusta do Google, suas funções podem ser escalonadas de 0 a milhares de instâncias automaticamente para atender à demanda.

Outros recursos

Para saber mais sobre a função como serviço e a computação sem servidor, confira estes recursos.

Vá além

Comece a criar no Google Cloud com US$ 300 em créditos e mais de 20 produtos sem custo financeiro

Google Cloud