Função como serviço (FaaS): tudo o que você precisa saber
Publicados: 2022-06-09Você provavelmente já ouviu falar de SaaS e pode ter ouvido falar de PaaS e IaaS, mas já ouviu falar de Function as a Service (FaaS)?
O mercado FaaS está crescendo rapidamente. De acordo com a Allied Market Research, o mercado valia US$ 3,01 bilhões em 2018. Esse número deve crescer para US$ 24 bilhões até 2026 - o que significa que o setor crescerá a uma taxa de crescimento anual composta (CAGR) de 29,7% de 2020 a 2026.
Olhando para esse crescimento, é seguro dizer que FaaS é um grande negócio.
Mas o que é FaaS e como funciona? Para ajudá-lo a responder a essas perguntas, este artigo abordará os fundamentos do FaaS, por que as pessoas devem (e não devem) usar o FaaS e o estado do mercado global de FaaS a partir de 2022.
Vamos lá.
O que é a Função como Serviço (FaaS)?
Function as a Service (FaaS) é uma forma de computação em nuvem que ajuda os desenvolvedores a trabalhar melhor, eliminando a necessidade de manter a infraestrutura do aplicativo. Quando os desenvolvedores aproveitam o FaaS, eles usam uma plataforma FaaS para criar, executar e supervisionar pacotes de aplicativos para eles.
Neste ponto, você pode pensar que FaaS soa como computação sem servidor – e é. A computação sem servidor permite que os desenvolvedores terceirizam o gerenciamento de bancos de dados, gateways de API, armazenamento, mensagens e outras infraestruturas para um provedor terceirizado. FaaS é um tipo de computação sem servidor.

Embora esta possa ser a primeira vez que você está lendo sobre FaaS, você provavelmente o encontrou em estado selvagem. Muitos programas e aplicativos populares usam FaaS – como o Alexa da Amazon.
Se você estiver familiarizado com o Alexa, saberá que pode expandir as funções do Alexa desenvolvendo “habilidades”. Assim como os aplicativos, as habilidades permitem que o Alexa faça coisas fora de sua configuração básica. Coisas como verificar notificações em seu aplicativo, iniciar um novo bate-papo ou reproduzir áudio personalizado.
A Amazon executa todas as habilidades do Alexa por meio do AWS Lambda. Ao criar uma nova habilidade, você a cria como uma função implantada por meio do AWS Lambda. O AWS Lambda executa a função para você e lida com questões de infraestrutura, como segurança e gerenciamento de banco de dados.
Então, como o FaaS funciona passo a passo? Vamos cobrir isso a seguir.
Como funciona o FaaS?
Para entender o FaaS, você precisa conhecer dois termos principais:
- “Arquitetura monolítica” = um aplicativo independente que é executado independentemente de outros aplicativos. Esses aplicativos gerenciam a interface do usuário, as funções de negócios e a interface de dados internamente. O código de arquitetura monolítica depende de outros pedaços de código.
- “Arquitetura de microsserviços” = um pedaço de código que lida com algumas pequenas tarefas. Esses microsserviços são separados (embora eles formem um aplicativo inteiro juntos).
Aqui está um diagrama que mostra como a arquitetura monolítica e a arquitetura de microsserviços diferem:

Você pode ver a principal diferença na prática entre arquiteturas de microsserviço e monolíticas ao executar ou atualizar uma função. Com uma arquitetura monolítica, o programa inteiro executa a função de uma só vez (como atualizar um aplicativo, por exemplo). Com uma arquitetura de microsserviço, você pode executar a função de microsserviço de forma independente.
FaaS é o que ajuda as arquiteturas de microsserviços a funcionar.
Ao executar cada nova função de microsserviço, você só precisa criar a função. Em seguida, seu provedor de FaaS pega a função, a executa e lida com o gerenciamento da função a partir de então.
Como o FaaS é uma ferramenta que funciona com a sua entrada, é crucial observar que cada função do FaaS deve ser responsável apenas por uma tarefa. Essa tarefa é executada quando seu gatilho é ativado. Por exemplo, uma função que produz uma cópia do recibo do usuário só funcionará se o usuário pressionar “baixar recibo”.
O FaaS usa o “modelo de execução orientado a eventos”, o que significa que suas funções só são ativadas quando acionadas. Da mesma forma, eles não são executados em segundo plano.
Então, o que mais o FaaS pode fazer?
Quais serviços o FaaS inclui?
Embora todos os provedores sejam diferentes, os provedores de FaaS geralmente oferecem estes serviços:
- Serviços de autenticação. Eles tratam dos processos de login e autenticação para os usuários do seu programa.
- Serviços de banco de dados. Eles ajudam você a arquivar informações em bancos de dados para que seu programa possa usá-las. Os provedores de FaaS gerenciam alguma manutenção de banco de dados para você.
- Armazenamento de arquivo. Os provedores de FaaS podem armazenar dados e arquivos para seu aplicativo, para que você não precise hospedá-lo em seu próprio servidor.
- Comunicando. Os provedores de FaaS podem observar erros ou ameaças de segurança em seu programa e alertá-lo quando encontrarem algo errado.
No geral, esses serviços ajudam os desenvolvedores a trabalhar de forma mais inteligente. Vamos abordar os prós do FaaS a seguir.
Prós de um modelo FaaS
Com o FaaS, os desenvolvedores não precisam se preocupar com infraestrutura ou implantação, apenas escrevendo a lógica do aplicativo. Assim, quando implementado atualmente, o FaaS pode reduzir bastante o tempo necessário para construir e implantar um programa.
A construção e a implantação também são mais fáceis com o FaaS. O tempo de provisionamento leva apenas alguns segundos em vez de horas de cada vez. Você também não está limitado a idiomas ou recursos específicos. Os provedores de FaaS podem executar código na maioria dos idiomas e você pode acelerar o processo de criação usando os caches e bancos de dados que seu provedor oferece.
O modelo FaaS é muito escalável e o planejamento de capacidade é muito mais fácil. Se precisar de mais recursos, você pode simplesmente consultar as instruções do seu provedor de FaaS para atualizar seu uso. Muitos provedores de FaaS oferecem escalabilidade horizontal, o que significa que, se seu uso aumentar, o provedor simplesmente fornecerá recursos extras para lidar com o pico.
Além disso, você não precisa se preocupar com manutenção, recuperação de desastres (DR) ou segurança.
Finalmente, o FaaS é muito eficiente. Os provedores cobram apenas pelos recursos que você usa, portanto, você provavelmente pagará muito menos pelo FaaS do que pelo seu próprio hardware. Da mesma forma, suas funções não são executadas em segundo plano e ficam ociosas. Você também não precisa pagar para que eles fiquem ociosos.
Então, o FaaS é totalmente profissional? Não exatamente.
Contras de um modelo FaaS
O modelo FaaS remove alguns dos maiores desafios associados ao desenvolvimento de programas, mas também exige que você limite substancialmente seu controle. Você não pode tomar muitas decisões sobre o servidor, segurança ou banco de dados que seu código usa. Em vez disso, cabe ao seu provedor.
De maneira semelhante, a depuração geralmente é um pouco mais difícil, pois você não tem controle total sobre seu sistema. O teste também é difícil, pois o código FaaS nem sempre se traduz suavemente no ambiente de teste.
Além disso, você deve seguir os requisitos rigorosos do seu fornecedor de FaaS. As funções FaaS só podem concluir uma ação, portanto, se você não estiver acostumado com isso, precisará alterar a forma como você e sua equipe escrevem o código. Da mesma forma, pode ser necessário reescrever o código em aplicativos existentes para torná-lo adequado para implantação de FaaS – portanto, o FaaS geralmente é mais adequado para novos programas do que para os antigos.
Por fim, escolher o FaaS geralmente significa comprometer-se com um único fornecedor a longo prazo. Você trabalha com o sistema e os requisitos do seu provedor quando cria seus programas. Naturalmente, mudar de provedor pode exigir que você refaça parte do seu trabalho e potencialmente interrompa suas funções.
Prós vs. Contras
Prós | Contras |
Implante o código mais rapidamente O provisionamento leva milissegundos Código em qualquer idioma Recuperação de desastres automatizada (DR) Custo benefício Escalável | Perder o controle sobre o servidor A depuração é mais difícil O teste demora mais Você está preso ao seu fornecedor Você deve escrever um código adequado para FaaS |
FaaS vs SaaS, PaaS e IaaS
Agora que você sabe mais sobre o FaaS, pode se perguntar como ele se relaciona com outras opções do Anything as a Service (XaaS), como IaaS, SaaS e PaaS.
Os serviços IaaS, PaaS e FaaS têm finalidades semelhantes: ajudam as empresas a gerenciar aplicativos de maneira mais barata e eficaz. No entanto, cada opção oferece algo diferente.
A infraestrutura como serviço (IaaS) permite que você alugue poder de computação (como RAM e CPU). Com o IaaS, você ainda precisa gerenciar algumas funções do aplicativo (como segurança) internamente.
A plataforma como serviço (PaaS) permite que você alugue ferramentas de hardware e software para criar seu aplicativo. Um exemplo comum é o AWS Elastic Beanstalk.
Ao contrário de IaaS e PaaS, o FaaS permite alugar espaço para executar funções de forma independente. Esse recurso o torna mais escalável.
Aqui está um breve resumo de como os três funcionam de forma diferente:

O software como serviço (SaaS) não é voltado para a criação de aplicativos ou programas. Em vez disso, permite alugar aplicativos para que você não precise construí-los internamente. Existem milhares de opções de SaaS disponíveis – desde ferramentas de análise de dados até plugins WordPress SEO.
Tamanho do mercado, participação e fornecedores líderes
O crescimento do FaaS reflete uma mudança geral na forma como as organizações estão desenvolvendo novos programas.
Nas décadas anteriores, os desenvolvedores criaram grandes sistemas como projetos de vários anos. Hoje, muitas organizações favorecem uma abordagem de desenvolvimento de operações de desenvolvimento (DevOps). O DevOps prioriza o desenvolvimento e a melhoria contínua de um programa pouco a pouco.

Da mesma forma, as organizações usam cada vez mais os serviços em nuvem para tornar as coisas mais seguras e eficientes. De acordo com a Oracle, as organizações em breve armazenarão 600 vezes mais dados confidenciais na nuvem.
Você pode ver essa tendência nos dados coletados de 7.164 executivos C-suite da Statista. De 2019 a 2021, o uso de um único serviço de nuvem pública ou privada caiu e a maioria das organizações adotou várias soluções de nuvem.

Os investimentos em computação em nuvem também estão crescendo. Outro estudo da Statista em centenas de grandes empresas em todo o mundo mostrou que 83% das empresas pesquisadas investiram mais de US$ 1,2 milhão em computação em nuvem pública anualmente. Esse número é superior a 50% em 2019.
As pessoas estão recorrendo ao FaaS porque é à prova de futuro e escalável. Da mesma forma, oferece melhor produtividade e desempenho, um tempo de lançamento mais rápido para aplicativos e uma maneira mais econômica de produzir novos programas.
Esses benefícios atraem muitos setores, incluindo organizações bancárias (ou organizações “BFSI”), bens de consumo e varejo, entretenimento, telecomunicações, Serviços de Informação e Tecnologia (ITES), saúde e manufatura. Veja quanto cada setor contribui para o mercado FaaS:


Ao contrário do SaaS, não há milhares de fornecedores de FaaS para as organizações escolherem. A grande maioria do FaaS usa soluções oferecidas pelos principais players, incluindo AWS Lambda, Azure Functions, IBM Cloud Functions, Google Cloud Functions, Alibaba Cloud e Cloudflare Workers.
Abordaremos cada um desses provedores agora.
AWS Lambda
Lançado pela Amazon em novembro de 2014, o AWS Lambda é uma ferramenta FaaS extremamente popular. No quarto trimestre de 2021, 33% dos usuários da nuvem usavam um serviço da AWS.

O AWS Lambda oferece suporte nativo para várias linguagens de programação, incluindo Node.js, C#, Python, Ruby, Go, Java e Powershell. Como mencionamos em “O que é função como serviço (FaaS)?” Alexa usa o AWS Lambda para habilidades.
Características e funções:
- Conecta-se a outras ferramentas da AWS
- Monitora o desempenho do seu programa com o Amazon CloudWatch
- Mais de 200 integrações com ferramentas SaaS
- Você pode implantar contêineres do docker (a AWS introduziu esse recurso em dezembro de 2020)
Prós:
- Você pode criar seu próprio back-end usando a API Lambda ou o gateway de API da Amazon
- Você pode implantar funções como imagens de contêiner
- Você pode se conectar a bancos de dados relacionais com o Amazon RDS Proxy
- Você pode escolher quanta memória dedicar a cada função
Contras:
- Se você ainda não usa a AWS, configurá-la levará muito tempo e esforço
Funções do Microsoft Azure
O Microsoft Azure Functions é um recurso do Microsoft Azure, que a Microsoft lançou pela primeira vez como “Windows Azure” em fevereiro de 2010. O Azure Functions permite que você execute código orientado a eventos via FaaS. No quarto trimestre de 2021, 21% dos usuários de nuvem usavam o Azure.

Características e funções:
- Você pode conectar suas funções a mais de 250 conectores nos Aplicativos Lógicos do Azure
- Suporta JavaScript, C#, F#, Powershell, PHP, Python e Java
- Fornece muitos tutoriais para novos usuários
- Ajuda você a analisar seu programa por meio do Azure Application Insights
Prós:
- O Azure Functions usa um modelo de programação integrado
- Adequado para equipes que usam DevOps
- Vários planos disponíveis
Contras:
- O Azure Functions não dá suporte a Node.js ou Ruby
Funções do Google Cloud
O Google Cloud é a terceira solução de computação em nuvem mais popular, atrás da AWS e do Azure. Atualmente, possui uma participação de mercado de 10%. O Google Cloud Functions é um recurso FaaS do Google Cloud — um serviço que oferece mais de 100 produtos para uma ampla variedade de usos.

Características e funções:
- A depuração e o registro são integrados ao Google Cloud Functions (via CloudTrace e CloudDebugger)
- Você usa acionadores do Google Assistant, Google Cloud, Firebase ou qualquer aplicativo usando HTTP
- O Google Cloud Functions se integra a muitos parceiros do Google
Prós:
- Aqueles que desejam recursos multinuvem ou híbridos podem usá-lo
- É de código aberto, para que você possa migrar facilmente para outra plataforma FaaS, se preferir
- É muito fácil de usar
- O Google oferece muitos recursos gratuitos para novos usuários
Contras:
- Os serviços baseados em contêiner do Google Cloud Functions são menos avançados do que outros provedores de FaaS
Nuvem IBM
A IBM Cloud veio da SoftLayer, uma plataforma de nuvem pública que a IBM comprou em junho de 2013. A IBM transformou a plataforma em Bluemix e a lançou como uma ferramenta PaaS em julho de 2014. Desde então, a IBM renomeou o serviço como IBM Cloud e expandiu seus recursos para FaaS.

No quarto trimestre de 2021, 4% dos usuários de nuvem usaram o IBM Cloud. Ele é executado no ecossistema Apache OpenWhisk.
Características e funções:
- Você pode pesquisar conteúdo de vídeo
- Você pode conectar seu programa a outros programas por meio de APIs do IBM Watson
- A IBM oferece funções pré-construídas para algumas tarefas comuns
- Suporta Node.js, Python, Swift, PHP, Go, Ruby, Java e .NET Core
Prós:
- Ótimo para criar aplicativos móveis
- Fácil de aprender a usar
- Monitora seu aplicativo por meio do IBM Cloud Monitoring
Contras:
- Limita o tempo de memória da sua função a dez minutos ou 2048 MB
Nuvem Alibaba
O Alibaba Cloud não é tão conhecido quanto outras opções de computação em nuvem, mas ainda detém uma participação de mercado decente de 6%. Lançado pelo Alibaba em 2008, o Alibaba Cloud é voltado para negócios online e para aqueles que usam outros serviços do Alibaba.

FaaS é uma das ofertas do Alibaba Cloud, juntamente com uma Content Delivery Network (CDN), armazenamento de dados e processamento de big data.
Características e funções:
- Integra-se com outros serviços de computação do Alibaba
- À prova de desastres, pois o Alibaba hospeda funções em clusters em várias áreas
- Transcodificação de vídeo
- Raciocínio de IA
- Suporta Node.js, Python, Java, PHP e C#
Prós:
- Fornece uma opção gratuita para aqueles que não precisam executar muito código
- Altamente escalável
- Você pode usar muitos tipos de gatilhos
Contras:
- Pode ser difícil mover funções do Alibaba para outro provedor de FaaS
Trabalhadores da Cloudflare
Executado pela Cloudflare, o Cloudflare Workers é um sistema FaaS adequado para novos desenvolvedores e para aqueles que desejam executar código quase instantaneamente. O Cloudflare Workers oferece um plano gratuito e preços escaláveis.

Características e funções:
- Suporta JavaScript, C++, Rust e C
- Você pode armazenar imagens, PDFs e outros arquivos no Cloudflare Workers para implantar como ativos estáticos
- À prova de desastres, pois Cloudflare Workers usa uma rede global de servidores
- Integra-se com outros produtos Cloudflare
Prós:
- É mais barato do que muitas outras opções de FaaS
- É fácil para os desenvolvedores mais novos aprenderem a usar
- Você pode começar muito rapidamente
- A Cloudflare oferece tutoriais e recursos detalhados que podem ajudá-lo a criar seu aplicativo
Contras:
- O Cloudflare Workers é menos robusto do que outras opções e mais adequado para projetos de pequena escala
Práticas recomendadas da Faas
Sim, FaaS é uma tecnologia, mas também é uma mentalidade que os desenvolvedores precisam adotar para o desenvolvimento de programas e aplicativos.
Para aproveitar ao máximo o FaaS, siga estas práticas recomendadas:
- Lembre-se das limitações do FaaS. O FaaS não é adequado para todos os programas e, se você tentar criar um programa não compatível com FaaS com FaaS, isso custará tempo, esforço e dinheiro.
- Execute apenas funções de ação única no FaaS. Se você executar funções com várias ações, interromperá o ambiente isolado em que as funções de FaaS funcionam melhor. Essa interrupção tornará seu aplicativo lento e reduzirá a eficiência.
- Não execute funções com dependências. As dependências criarão erros e um problema de escalabilidade posteriormente.
- Observe o tempo de carregamento com cuidado. Seu tempo de carregamento vem de suas bibliotecas ou funções que exigem muita memória. Um tempo de carregamento alto retardará seu programa e, em última análise, frustrará os usuários.
- Reduza o número de conexões do RDBMS (Relational Database Management System) que você usa. Essas conexões aumentarão o tempo necessário para que as funções funcionem e introduzirão um ponto de falha em seu programa.
Você precisa de FaaS?
O FaaS é uma tecnologia inovadora e revolucionária para alguns, mas não funcionará para todos.
As organizações que aproveitam ao máximo o FaaS estão dispostas a criar programas com arquiteturas de microsserviços em que cada função faz apenas uma coisa. Essas funções devem funcionar de forma independente — se forem dependentes, você terá problemas de escalabilidade.
Se você deseja criar um aplicativo com uma arquitetura monolítica ou funções que se baseiam umas nas outras, o FaaS pode não funcionar bem. Da mesma forma, se você não quiser se comprometer com um único fornecedor a longo prazo, o FaaS pode ser uma escolha míope.
Claro, você ainda pode aproveitar a tecnologia de nuvem sem FaaS. Você pode, por exemplo, investir em PaaS ou IaaS para terceirizar algumas das funções do seu aplicativo para a nuvem. Essa opção lhe daria alguns dos benefícios de custo e eficiência da computação em nuvem, mas você não precisaria construir seu programa dentro das restrições do modelo FaaS.
Como alternativa, se você não precisar criar um programa que faça algo altamente especializado ou de nicho, considere investir em uma ferramenta SaaS. Algumas ferramentas SaaS são até de código aberto, então você pode adaptar uma ferramenta existente para suas necessidades.
Resumo
FaaS não é technobabble ou uma nova tendência. É uma tecnologia escalável que você deve esperar ver mais na próxima década.
Explicar o FaaS às vezes pode parecer difícil, mas o FaaS é apenas um serviço que permite aos desenvolvedores escrever e executar código usando a infraestrutura mantida por outra pessoa. Muitos serviços que você usa regularmente, como Alexa, usam FaaS. Os fornecedores comuns de FaaS incluem IBM Cloud Functions, AWS Lambda, Alibaba Cloud, Google Cloud Functions e Microsoft Azure Functions.
Embora o FaaS seja altamente eficaz para algumas empresas, não é adequado para todos. O FaaS funciona melhor para executar código isolado e sem estado que executa uma única função.
Gostaríamos de passar o microfone (ou o teclado) para você. Como você usa o FaaS em seu negócio e você tem algum conselho para outras pessoas que estão explorando a tecnologia pela primeira vez? Por favor, conte-nos nos comentários abaixo.