Você provavelmente já ouviu falar em SaaS, e você pode ter ouvido falar em PaaS e IaaS, mas você já ouviu falar em 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. Espera-se que este número cresça para US$ 24 bilhões até 2026 – o que significa que a indústria crescerá a uma Taxa de Crescimento Anual Composto (CAGR) de 29,7% de 2020 a 2026.

Olhando para esse crescimento, é seguro dizer que o FaaS é um grande negócio.

Mas o que é FaaS, e como ele funciona? Para ajudá-lo a responder essas perguntas, este artigo irá cobrir 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 é Function as a Service (FaaS)?

Function as a Service (FaaS) é uma forma de computação em nuvem que ajuda os desenvolvedores a trabalharem melhor, removendo a necessidade de manter a infraestrutura do aplicativo. Quando os desenvolvedores utilizam FaaS, eles usam uma plataforma FaaS para construir, 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 aos desenvolvedores terceirizar o gerenciamento de bancos de dados, gateways de API, armazenamento, mensagens e outras infraestruturas para um provedor terceirizado. O FaaS é um tipo de computação sem servidor.

Como funciona a computação sem servidor
Como funciona a computação sem servidor (Fonte: iviewlabs)

Embora esta possa ser a primeira vez que você está lendo sobre o FaaS, você provavelmente já o encontrou na natureza. Muitos programas e aplicativos populares usam o FaaS – como o Alexa da Amazon.

Se você está familiarizado com o Alexa, você saberá que pode expandir as funções do Alexa através da construção de “habilidades” Como 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 administra todas as habilidades do Alexa através da AWS Lambda. Quando você constrói uma nova habilidade, você a cria como uma função que você implanta através da AWS Lambda. AWS Lambda então executa a função para você e lida com preocupações de infraestrutura como segurança e gerenciamento do banco de dados.

Então, como o FaaS funciona passo a passo? Vamos cobrir isso a seguir.

Como o FaaS funciona?

Para entender o FaaS, você precisa conhecer dois termos chave:

  1. “Arquitetura monolítica” = um aplicativo autocontido que roda independentemente de outros aplicativos. Estes aplicativos gerenciam a interface do usuário, as funções de negócios e a interface de dados internamente. O código da arquitetura monolítica se baseia em outros pedaços de código.
  2. Arquitetura de micro serviços” = um pedaço de código que lida com algumas pequenas tarefas. Estes micros serviç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 dos micros serviços diferem:

Arquitetura monolítica vs. arquitetura de micro serviços
Arquitetura monolítica vs. arquitetura de micro serviços (Fonte: BMC)

Você pode ver a principal diferença na prática entre micro serviços e arquiteturas monolíticas quando você executa ou atualiza uma função. Com uma arquitetura monolítica, o programa inteiro executa a função de uma vez (como atualizar um aplicativo, por exemplo). Com uma arquitetura de micro serviço, você pode executar a função de micro serviço de forma independente.

FaaS é a coisa que ajuda as arquiteturas de micro serviços para funcionar.

Quando você executa cada nova função de micro serviço, você só precisa criar a função. Então, seu provedor FaaS assume a função, executa-a e cuida do gerenciamento da função a partir de então.

Como o FaaS é uma ferramenta que funciona com a sua contribuição, é crucial notar que cada função FaaS deve ser responsável apenas por uma tarefa. Esta tarefa então é 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 “download receipt”

O FaaS usa o “modelo de execução dirigida por eventos”, o que significa que suas funções só são ativadas quando acionadas. Da mesma forma, elas não são executadas em segundo plano.

Então, o que mais FaaS pode fazer?

Quais serviços o FaaS inclui?

Embora todos os provedores sejam diferentes, os provedores da FaaS geralmente oferecem estes serviços:

  • Serviços de autenticação. Estes tratam dos processos de login e autenticação para os usuários do seu programa.
  • Serviços de banco de dados. Estes ajudam você a arquivar informações em bancos de dados para que seu programa possa usá-los. Os provedores FaaS gerenciam alguma manutenção de banco de dados para você.
  • Armazenamento de arquivos. Os provedores de FaaS podem armazenar dados e arquivos para seu aplicativo, assim você não precisa hospedá-lo em seu próprio servidor.
  • Relatórios. Os provedores de FaaS podem vigiar por erros ou ameaças à 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 cobrir a seguir os prós do FaaS.

Os prós de um modelo FaaS

Com o FaaS, os desenvolvedores não precisam se preocupar com infraestrutura ou implantação – apenas escrever lógica de aplicativo. Assim, quando implementado atualmente, o FaaS pode reduzir muito o tempo que leva para construir e implantar um programa.

Construir e implantar também é mais fácil com o FaaS. O tempo de provisionamento leva apenas alguns segundos ao invés de horas de cada vez. Você também não está limitado a ling ou recursos particulares. Os provedores de FaaS podem executar código na maioria das linguagens, e você pode acelerar o processo de construçã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 você precisar de mais recursos, você pode simplesmente consultar as instruções do seu fornecedor FaaS para atualizar seu uso. Muitos fornecedores de FaaS oferecem escalas horizontais, ou seja, se o seu uso atingir picos, o fornecedor irá simplesmente lhe fornecer recursos extras para lidar com os picos.

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 fornecedores só cobram pelos recursos que você usa, então você provavelmente pagará muito menos pelo FaaS do que você pagaria pelo seu próprio hardware. Da mesma forma, suas funções não funcionam em segundo plano e, ao invés disso, ficam ociosas. Você também não precisa pagar para que elas fiquem ociosas.

Então, o FaaS é tudo-pros? Não é bem assim.

Contras de um modelo FaaS

O modelo FaaS remove alguns dos maiores desafios associados ao desenvolvimento de programas, mas também requer 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. Ao invés disso, cabe ao seu provedor.

Em uma veia semelhante, a depuração é muitas vezes um pouco mais difícil, pois você não tem controle total sobre o seu sistema. Os testes também são difíceis, pois o código FaaS nem sempre se traduz suavemente para o ambiente de testes.

Além disso, você deve aderir aos requisitos rigorosos do seu fornecedor FaaS. As funções FaaS só podem completar uma ação, então se você não estiver acostumado a isso, você precisará mudar como você e sua equipe escrevem o código. Da mesma forma, você pode precisar reescrever o código em aplicativos existentes para torná-lo adequado para a implantação do FaaS – assim, o FaaS é frequentemente mais adequado para novos programas do que para os antigos.

Finalmente, escolher o FaaS muitas vezes significa comprometer-se com um único fornecedor a longo prazo. Você trabalha com o sistema e requisitos do seu fornecedor quando você constrói seus programas. Naturalmente, mudar de provedor pode exigir que você refaça parte de seu trabalho e potencialmente interromper suas funções.

Prós vs. Contras

Prós Contras
Implanta o código mais rápido

O provisionamento leva milissegundos

Código em qualquer linguagem

Recuperação Automatizada de Desastres (DR)

Custo-eficiente

Escalável

Perda do controle sobre o servidor

A depuração é mais difícil

Os testes levam mais tempo

Você está preso ao seu fornecedor

Você deve escrever o código FaaS-suitable

FaaS vs SaaS, PaaS e IaaS

Agora que você sabe mais sobre FaaS, você pode se perguntar como ele se relaciona com outras opções de Anything as a Service (XaaS) como IaaS, SaaS e PaaS.

Os serviços IaaS, PaaS e FaaS têm propósitos similares: eles ajudam as empresas a gerenciar aplicativos mais baratos e mais efetivamente. No entanto, cada opção oferece algo diferente.

Infrastructure as a Service (IaaS) permite que você alugue energia de computação (como RAM e CPU). Com o IaaS, você ainda precisa gerenciar algumas funções do aplicativo (como segurança) internamente.

Platform as a Service (PaaS) permite que você alugue ferramentas de hardware e software para construir seu aplicativo. Um exemplo comum é AWS Elastic Beanstalk.

Ao contrário do IaaS e do PaaS, o FaaS permite que você alugue espaço para executar funções de forma independente. Este recurso o torna mais escalável.

Aqui está um pequeno resumo de como os três funcionam de forma diferente:

Como FaaS difere do IaaS e PaaS
Como FaaS difere do IaaS e PaaS (Fonte: thenewstack.io)

Software as a Service (SaaS) não é voltado para a construção de aplicativos ou programas. Ao invés disso, ele permite que você alugue aplicativos para que você não precise construí-los internamente. Há milhares de opções de SaaS disponíveis – desde ferramentas de análise de dados até plugins de SEO para WordPress.

Tamanho do mercado, participação e principais fornecedores

O crescimento do FaaS reflete uma mudança geral na maneira 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 Operações de Desenvolvimento (DevOps ) para o desenvolvimento. O DevOps prioriza o desenvolvimento e melhoria contínua de um programa pouco a pouco.

Como funciona o DevOps
Como funciona o DevOps (Fonte: Atlassian)

Da mesma forma, as organizações usam cada vez mais os serviços da nuvem para tornar as coisas mais seguras e mais eficientes. De acordo com a Oracle, as organizações irão em breve armazenar 600 vezes mais dados sensíveis na nuvem.

Você pode ver esta tendência em dados coletados de 7.164 executivos de suítes C da Statista. De 2019 a 2021, o uso de um único serviço público ou privado na nuvem caiu, e a maioria das organizações adotaram múltiplas soluções de nuvem.

Uso da tecnologia de nuvem
Uso da tecnologia de nuvem (Fonte: Statista)

Os investimentos em computação em nuvem também estão crescendo. Outro estudo do Statista sobre centenas de grandes empresas no mundo todo mostrou que 83% das empresas pesquisadas investiram mais de US$ 1,2 milhões em computação em nuvem pública anualmente. Este número subiu de 50% em 2019.

As pessoas estão se voltando para o FaaS porque ele é à prova de futuro e escalável. Da mesma forma, ele proporciona melhor produtividade e desempenho, um time-to-market mais rápido para aplicativos e uma maneira mais econômica de produzir novos programas.

Estes benefícios atraem muitas indústrias, incluindo organizações bancárias (ou organizações “BFSI”), bens de consumo e varejo, entretenimento, telecomunicações, serviços de informação e tecnologia habilitados (ITES), saúde e manufatura. Aqui está o quanto cada indústria contribui para o mercado de FaaS:

Quais indústrias usam FaaS
Quais indústrias usam FaaS (Fonte: MarketsandMarkets)

Ao contrário do SaaS, não há milhares de fornecedores FaaS para as organizações escolherem entre eles. A grande maioria dos FaaS utiliza soluções oferecidas pelos principais players, incluindo AWS Lambda, Azure Functions, IBM Cloud Functions, Google Cloud Functions, Alibaba Cloud, e Cloudflare Workers.

Nós cobriremos cada um desses provedores agora.

AWS Lambda

Lançado pela Amazon em novembro de 2014, AWS Lambda é uma ferramenta FaaS extremamente popular. A partir do quarto trimestre de 2021, 33% dos usuários da nuvem usaram um serviço AWS.

AWS Lambda
AWS Lambda

AWS Lambda oferece suporte nativo para muitas linguagens de programação, incluindo Node.js, C#, Python, Ruby, Go, Java, e Powershell. Como mencionamos em “What Is Function as a Service (FaaS)”? O Alexa usa AWS Lambda para habilidades.

Características e funções:

  • Conecta-se a outras ferramentas AWS
  • Monitora o desempenho do seu programa com o Amazon CloudWatch
  • Mais de 200 integrações com ferramentas SaaS
  • Você pode implantar contêineres portuários (AWS introduziu este recurso em dezembro de 2020)

Prós:

  • Você pode construir seu próprio backend usando o Lambda API ou o Amazon API gateway
  • Você pode implantar funções como imagens de contêineres
  • 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 AWS, a configuração levará muito tempo e esforço

Microsoft Azure Functions

Microsoft Azure Functions é uma capacidade 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 o código orientado a eventos através do FaaS. A partir do quarto trimestre de 2021, 21% dos usuários da nuvem usaram o Azure.

Funções do Microsoft Azure
Funções do Microsoft Azure

Características e funções:

  • Você pode conectar suas funções a mais de 250 conectores no Azure Logic Apps
  • Suporta JavaScript, C#, F#, Powershell, PHP, Python, e Java
  • Fornece muitos tutoriais para novos usuários
  • Ajuda você a analisar seu programa através do Azure Application Insights

Prós:

  • As funções Azure usam um modelo de programação integrada
  • Bem adequado para equipes que utilizam DevOps
  • Múltiplos planos disponíveis

Contras:

  • As funções Azure não suportam Node.js ou Ruby

Google Cloud Functions

O Google Cloud é a terceira solução de computação em nuvem mais popular atrás de AWS e Azure. Atualmente, ela tem uma participação de mercado de 10%. Google Cloud Functions é um recurso FaaS do Google Cloud – um serviço que oferece mais de 100 produtos para uma ampla gama de usos.

Google Cloud
Google Cloud

Características e funções:

  • A depuração e registro é integrado às funções do Google Cloud (via CloudTrace e CloudDebugger)
  • Você usa gatilhos do Google Assistant, Google Cloud, Firebase, ou qualquer aplicativo que use HTTP
  • Google Cloud Functions se integra com muitos parceiros do Google

Prós:

  • Aqueles que desejam capacidades multi-nuvem ou híbridas podem usá-lo
  • É de código aberto, então você pode facilmente mudar para outra plataforma FaaS, se preferir
  • É muito fácil de usar
  • O Google fornece muitos recursos gratuitos para novos usuários

Contras:

  • Os serviços baseados em contêineres do Google Cloud Function são menos avançados do que outros fornecedores de FaaS

IBM Cloud

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 rebatizou o serviço como IBM Cloud e expandiu suas funcionalidades para o FaaS.

IBM Cloud
IBM Cloud

A partir do quarto trimestre de 2021, 4% dos usuários das nuvens têm usado o IBM Cloud. Ela roda no ecossistema Apache OpenWhisk.

Características e funções:

  • Você pode pesquisar por conteúdo de vídeo
  • Você pode conectar seu programa a outros programas através das APIs 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 construir aplicativos móveis
  • Fácil de aprender a usar
  • Monitora seu aplicativo através do IBM Cloud Monitoring

Contras:

  • Limita o tempo de memória da sua função a dez minutos ou 2048 MB

Alibaba Cloud

Alibaba Cloud não é tão conhecido como outras opções de computação em nuvem, mas ainda detém uma quota de mercado decente de 6%. Lançado pelo Alibaba em 2008, o Alibaba Cloud é voltado para negócios online e para aqueles que utilizam os outros serviços do Alibaba.

Alibaba Cloud
Alibaba Cloud

FaaS é uma das ofertas do Alibaba Cloud, juntamente com uma Rede de Entrega de Conteúdo (CDN), armazenamento de dados, e grande processamento de dados.

Características e Funções:

  • Integra-se com os outros serviços de informática da Alibaba
  • À prova de desastres, pois Alibaba hospeda funções em clusters em múltiplas áreas
  • Transcodificação de vídeo
  • Raciocínio AI
  • 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 de Alibaba para outro fornecedor de FaaS

Cloudflare Workers

Executado pelo Cloudflare, o Cloudflare Workers é um sistema FaaS que é adequado para novos desenvolvedores e para aqueles que procuram executar o código quase instantaneamente. O Cloudflare Workers oferece um plano gratuito e um preço escalável.

Cloudflare Workers
Cloudflare Workers

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, já que os trabalhadores do Cloudflare usam uma rede global de servidores
  • Integra-se com outros produtos Cloudflare

Prós:

  • É mais barato do que muitas outras opções FaaS
  • É fácil para os desenvolvedores mais novos aprenderem a usar
  • Você pode começar muito rapidamente
  • Cloudflare oferece tutoriais detalhados e recursos que podem ajudar você a construir seu aplicativo

Contras:

  • O Cloudflare Workers é menos robusto que outras opções e mais adequado para aqueles com projetos de pequena escala

Melhores práticas do Faas

Sim, FaaS é uma tecnologia, mas também é uma mentalidade que os desenvolvedores precisam adotar para o desenvolvimento de programas e aplicativos.

Para obter o máximo da FaaS, siga estas melhores práticas:

  • Lembre-se das limitações do FaaS. FaaS não é adequado para todos os programas, e se você tentar criar um programa não amigável ao FaaS com FaaS, isso lhe custará tempo, esforço e dinheiro.
  • Execute apenas funções de ação única no FaaS. Se você executar funções com múltiplas ações, você perturba o ambiente isolado no qual as funções de FaaS funcionam melhor. Esta interrupção irá retardar seu aplicativo e reduzir a eficiência.
  • Não execute funções com dependências. Dependências irão criar erros e um problema de escalabilidade mais tarde.
  • Observe seu tempo de carregamento com cuidado. Seu tempo de carga vem de suas bibliotecas ou funções que requerem muita memória. Um alto tempo de carga irá diminuir a velocidade do seu programa e, em última instância, frustrar os usuários.
  • Reduza o número de conexões do Sistema de Gerenciamento de Banco de Dados de Relacionamento (RDBMS) que você usa. Estas conexões irão aumentar o tempo que leva para as funções funcionarem e introduzir um ponto de falha em seu programa.

Você precisa do FaaS?

FaaS é uma tecnologia inovadora e que muda o jogo para alguns, mas não vai funcionar para todos.

As organizações que mais recebem do FaaS estão dispostas a construir programas com arquiteturas de micro serviços onde cada função só faz uma coisa. Estas funções devem funcionar independentemente – se elas forem dependentes, você terá problemas de escalabilidade.

Se você quiser construir um aplicativo com uma arquitetura monolítica ou funções que desenham uma da outra, FaaS pode não funcionar bem. Da mesma forma, se você não quer se comprometer com um único fornecedor a longo prazo, o FaaS pode ser uma escolha míope.

É claro, você ainda pode alavancar a tecnologia das nuvens sem o FaaS. Você poderia, por exemplo, investir no PaaS ou IaaS para terceirizar algumas das funções do seu aplicativo para a nuvem. Esta 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.

Alternativamente, se você não precisa construir um programa que faça algo altamente especializado ou especializado, considere investir em uma ferramenta SaaS. Algumas ferramentas SaaS são até mesmo de código aberto, então você pode ser capaz de adaptar uma ferramenta existente para suas necessidades.

Resumo

FaaS não é um tecnobababble ou uma nova tendência. É uma tecnologia escalável da qual 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 o 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, ele não vai agradar a todos. O FaaS funciona melhor para executar código isolado, sem estado, que desempenha uma única função.

Nós gostaríamos de virar o microfone (ou o teclado) para você. Como você usa o FaaS em seu negócio, e você tem algum conselho para outros que exploram a tecnologia pela primeira vez? Por favor, diga-nos nos comentários abaixo.

Matteo Duò Kinsta

Editor-chefe da Kinsta e consultor de marketing de conteúdo para desenvolvedores de plugins do WordPress. Conecte-se com Matteo no Twitter.