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