Serverless, BaaS & FaaS, o que são e o que fazem?

03 out 2022
  • TI

Muitas novidades surgem no mercado de tecnologia e desenvolvimento de sistemas, principalmente no contexto de Cloud Computing. Uma das últimas novidades é a utilização de arquiteturas Serverless, assunto que hoje entenderemos melhor.

Uma das definições mais completas de Serverless é a de Mike Roberts, um desbravador desse assunto:

Arquiteturas Serverless referem-se a aplicativos que dependem significativamente de Third party Services (Backend como Serviço - “BaaS”) ou código personalizado que é executado em contêineres efêmeros (Função como Serviço - “FaaS”).Third party Services? Contêineres efêmeros? Mas afinal o que são esses conceitos? Antes de entendê-los é necessário relembrarmos de alguns dos velhos níveis de abstrações ofertados por plataformas de Cloud Computing.

A Sopa de Letrinhas

Na lista de serviços de Cloud Computing, diversos níveis de abstração na administração de recursos são oferecidos aos clientes, como por exemplos:

IaaS ou Infraestrutura como um Serviço: Quando é abstraída a administração da parte física de servidores, memória, processadores, disco e rede:

  • AWS EC2: Uma plataforma de servidores na nuvem;
  • Google Cloud Compute Engine:  Uma outra plataforma de servidores na nuvem.

PaaS ou Plataforma como um Serviço: Além do nível de abstração do IaaS, é abstraído o sistema operacional:

  • SAP HANA Cloud: SAP HANA na plataforma em nuvem da SAP;
  • AWS EMR: Plataforma de desenvolvimento, deploy e execução de aplicações de AI & Machine Learning.

SaaS ou Solução como um Serviço: Quanto é abstraído todos os outros aspectos e é necessário ao cliente apenas configurar e administrar os dados do serviço:

  • SAP Analytics Cloud: Plataforma de Planning, Predictive e Analytics da SAP em nuvem;
  • Office 365: Plataforma de Colaboração da Microsoft.

Uma bela representação dos descritivos acima pode ser obtida no quadro abaixo:

Third party Services ou Backends as a Service - BaaS

Podemos imaginar um contexto que depende significadamente de um Third party Services como, por exemplo, uma aplicação SAP UI5 que depende de uma API do Success Factors como repositório de dados e de regras de negócio, mensageiraa no SAP Enterprise Messaging e governança e autenticação no SAP Identity Authentication Service. Nesse contexto não utilizamos nenhum servidor administrado a nível de sistema operacional (IaaS) ou Banco de dados (PaaS), portanto estamos utilizando uma arquitetura baseada em BaaS, ou Backend como um Serviço. Observe ainda que utilizamos um serviço para cada necessidade, sem a tentativa de usar um martelo para apertar um parafuso: O remédio adequado para cada dor.

Contêineres Efêmeros ou Functions as a Service - FaaS

Um contêiner efêmero é um tipo de servidor de curto ciclo de vida, ou seja, estará disponível só e somente enquanto for estritamente necessário, ou parafraseando um dos mantras da Toyota: just in time

Abordando, portanto, o ciclo de vida de um contêiner efêmero, o mesmo nasce em estado letárgico, é desperto ao ser ativado pelo provedor de Cloud Computing, ao, por exemplo, receber uma chamada http. Caso não receba mais chamadas em um curto espaço de tempo, voltará para o estado letárgico, onde aguardará por uma nova chamada que o tornará novamente ativo. Importante salientar que a cobrança é baseada somente nos segundos em que o contêiner efêmero estiver no estado ativo.

FaaS x BaaS

Diferentemente de BaaS, que é apenas um conceito de arquitetura de sistemas, as FaaS ou Funções como um Serviço é um tipo de produto ofertado pelos principais provedores de Cloud Computing.

Em uma FaaS, genericamente o desenvolvedor se preocupará somente com o código-fonte da função necessária, e não haverá nenhuma preocupação com o sistema operacional, drivers, ciclo de vida e escalabilidade.

Imaginemos o seguinte cenário: No último dia útil do mês, usuário final fará o upload de um documento a uma aplicação web, o qual deverá ser convertido para PDF e armazenado em um diretório virtual. Vejamos como ficaria essa solução usando três tipos de abordagens:


Abordagem Monolítica, Highlander, Megazord ou só pode haver um:


 A própria aplicação web ou seu Backend será responsável pela conversão e transporte do arquivo, tornando a aplicação essencialmente mais complexa que o necessário e que pode demorar mais que o confortável para o usuário final. Além disso, escalar uma aplicação Highlander pode ser caro, demorado e complexo. 


Abordagem Microsserviço: 


Uma aplicação apartada da web é criada para conversão e transporte do arquivo. A mesma deverá ficar ativa 24 horas do dia, 7 dias por semana, monitorando se há arquivos para converter e transportar, utilizando desnecessariamente recursos computacionais, o que em Cloud Computing significa desperdício de dinheiro. Pode-se também ligar a aplicação somente no último dia do mês, mas isso consumirá recursos humanos ou computacionais para ser implementado ou configurado, criando mais um ponto de processo, manutenção e possivelmente de falha.  

Abordagem FaaS ou Função como um Serviço:

 

É criada uma função computacional somente para efetuar a conversão e transporte. Essa função é configurada para executar somente quando um serviço de mensageria como o SAP Enterprise Messaging, AWS SNS, RabbitMQ ou Kakfa a chamar, ficando em estado letárgico fora destes períodos, e escalando computacionalmente nos picos de acesso. Tudo isso de maneira standard, sem necessidade de configuração adicional. 

Vantagens e Desvantagens na utilização de FaaS

Vantagens:

  • Complexidade e manutenção diminuída ou abstraída, uma vez é desnecessária a administração ou configuração do ambiente onde a Function executa;
  • Modelo de cobrança baseada nos segundos em que a o serviço FaaS está ativo, o que é muito mais barato que a abordagens IaaS e PaaS;
  • Triggers standards de execução: via mensagem, acesso http ou agendamento.


Desvantagens:


  • Um serviço FaaS pode demorar alguns segundos para responder caso esteja anteriormente em estado letárgico. Isso acontece porque o provedor de Cloud Computing precisa “acordar” o serviço sob demanda;
  • Serviços FaaS não são projetados para executar longas cargas de trabalho, ele deve responder em poucos segundos à chamada;
  • Uma vez que o pagamento se dá através do tempo ativo, FaaS consomem quotas de serviço mesmo em ambientes de Desenvolvimento e Qualidade;
  • Ao construir um serviço FaaS em um provedor de Cloud Computing, a mesma fica altamente acoplado a esta plataforma, tornando complexa a migração desta função para outro provedor ou para nuvem privada;

Quem está oferecendo Serviços FaaS?  

Os principais provedores de Cloud Computing já oferecem serviços FaaS em suas plataformas:


  • Amazon AWS: Lambda Service;
  • SAP Cloud Platform, Cloud Foundry environment: Functions Service ;
  • Google Cloud Platform: Cloud Functions;
  • Microsoft Azure: Functions Service;
  • Alibaba Cloud Platform: Elastic Container Instance Service;
  • Red Hat OpenShift: OpenFaaS.


Onde praticar FaaS?

  • Tutorial SAP Cloud Platform, Cloud Foundry environment: Functions Service: https://blogs.sap.com/2018/10/07/exploring-sap-cloud-platforms-faas-functions-as-a-service-serverless-coding-use-cases-how-tos-with-examples-part-1/
  • Tutorial Amazon AWS: Lambda Service: https://docs.aws.amazon.com/pt_br/lambda/latest/dg/with-s3-example.html
  • Tutorial Google Cloud Platform: Cloud Functions: https://cloud.google.com/functions/docs/how-to

Paulo Ruiz

Solution Manager for Data Solutions at delaware 

Com grande experiência em SAP Data Solutions, Big Data, Data Lakes e Cloud Computing. Irá gerir equipes de delivery na área de Big Data Analytics e na criação de produtos inovadores voltados à Inteligência de Dados.