O que é FaaS(function-as-a-service)?

Faas

 

Todo mundo sabe que “as a service” é uma tendência – pelo menos é o que se espera dos leitores do nosso blog. Mas agora, e o FaaS (Function as a Service)?

Neste conteúdo vamos explorar o Faas, explicando o que é e porquê você deve entender melhor esta tendência.

Function as a Service (FaaS) é um serviço de computação em nuvem que busca abstrair a questão de servidor e máquinas onde rodam os seus programas.

Em detalhes, ela deriva da filosofia Servless, que delega ao provedor de computação em nuvem (Cloud Provider) provisionar uma plataforma que permita ao cliente: desenvolver, rodar e gerenciar aplicações.

Nestes moldes, reduz-se a complexidade de uma pessoa ter que montar e manter a infraestrutura, atual padrão de todo mercado corporativo. Montando uma aplicação com este padrão, implementamos a teoria Servless e criamos uma arquitetura nativa de microsserviços.

Provedores de Function-as-a-Service

A FaaS é muito recente. Primeiramente fora disponibilizado pela Hook.io em 2014 e seguido por grandes players: Amazon AWS Lambda, Google Cloud Functions, MS Azure Functions, IBM / Apache OpenWhisk e recentemente até Oracle Cloud Fn.

Usando FaaS, seu código é executado em resposta a eventos definidos por você. Porém, os recursos computacionais você não administra ou controla. Deve-se focar na construção de aplicações que respondam mais rápido às mudanças e às novas informações.

Um evento que inicia a execução citada acima seria a de parâmetros escolhidos pelo desenvolvedor, como por exemplo: uma chamada de URL, um timer, um upload de imagem, um dispositivo conectado.

Benefícios do Faas

Outro ponto interessante é o modelo de cobrança baseado em tempo de execução, diferente dos custos de manter máquinas virtuais com clusters e hosts de container. Você tem a cobrança ligada ao que executou, seja algumas vezes por dia ou milhares de vezes por segundo.

De forma bem simplificada, FaaS é um jeito de executar uma regra de negócio, a partir de algum outro evento que a dispare.

Um exemplo em Amazon Lambda para quem curte código é o famoso “Hello, world!”:

==================================================================

exports.handler = function (event, context) {

   context.succeed(‘hello world’);

};

==================================================================

Ao chamar a URL associada a essa function, ela retorna uma página escrita “Hello, world!”, algo que, para quem bota a mão na massa, realmente não há um código menor que esse.

Desenvolvedores “raiz” não se preocupam com servidores. Portanto, por ser algo que ajuda a abstrair o servidor, essa tecnologia ganha força. Mas isto é diferente do DevOps, que sabe e se preocupa com a trajetória do ambiente de Produção.

Pontos relevantes a considerar

Muita inovação surge nesta área e as coisas estão sempre mudando e evoluindo.

Lembre-se: nem todo App vai encaixar bem no modelo FaaS.

Se você tem foco na arquitetura de microsserviços, então o FaaS nasceu para você.

Caso de Uso

O Netflix, maior serviço de streaming de filmes, documentários e séries do mundo, presente em mais de 130 países, usa FaaS em AWS Lambda para gerenciar toda a sua infraestrutura AWS. Vale ressaltar que a AWS é a maior infraestrutura provida em cloud para empresas.

Pegando carona nesse exemplo, muitas outras empresas estão neste momento estudando e se estruturando para usar esse poder de simplificar código e suportar um alto volume de transações. Seus serviços que normalmente executam centenas de vezes por hora, estariam prontos para suportar uma escalada de milhões de execuções por segundo (famoso caso da Black Friday).

Isso é muito valioso! Ter o poder de isolar lógicas em funções que escalem sem ninguém ter que reescrever código ou montar máquinas. Ou ainda, de forma fácil garantir que nenhuma exceção consiga interromper e parar seus serviços num momento crucial para o negócio.

Melhores Práticas de Faas

1- Reutilize conexões (HTTP, banco de dados, etc) que forem estabelecidas em chamadas anteriores da função.

2- Use variáveis de ambiente para passar parâmetros para a função. Por exemplo, para configurar um acesso ao storage.

3- Tenha controle das bibliotecas da sua função, evite que mudanças e updates mudem algum comportamento.

4- Reduza a complexidade das dependências, prefira frameworks simples e de rápido carregamento.

5- Evite código recursivo (a função chamando a si própria), por causa do risco de um descontrole nas chamadas das funções.

Alguns pontos críticos da FaaS

É preciso analisar a viabilidade do uso da FaaS, para avaliar se sua utilização é estratégica para seu negócio. Por isso, ressaltamos abaixo alguns pontos críticos que merecem atenção:

1- Ficar preso a um único fornecedor de cloud, pois as empresas que citamos fornecem como bem entendem a implementação do FaaS e a mudança de cloud pode ser complicada.

2- “Cold Start” fenômeno em que uma função demora a começar a responder. Ocorre em duas situações. No primeiro caso, quando, você acaba de publicar ou atualizar uma função, porque a nuvem está subindo o ambiente de execução. No segundo caso, sua função não teve chamadas por muito tempo e acabou tendo o ambiente de execução encerrado pelo fornecedor de cloud.

3- Você paga por chamada o lado bom do preço baixo em Produção, pode vir a ser um preço alto durante Desenvolvimento, Testes e Homologação, porque você está pagando cada chamada do mesmo jeito.

4- Cada fornecedor escolhe como os logs serão coletados ou exibidos e pode ter um custo escondido por usar serviços de monitoria.

O FaaS mostra-se promissor, pois diversifica as opções com o intuito de melhorar o desenvolvimento de aplicações.

Num próximo artigo, destrinchamos uma outra visão do modelo FaaS atrelado ao Docker.

Acompanhe nosso blog e fique por dentro das novidades.

Rubens Freitas
Rubens Freitas
Rubens Freitas (Rubão) é gerente de infraestrutura da Vertigo Tecnologia. Apaixonado por Docker e café, gosta de assistir séries e colecionar coisas estranhas. Formado em ciência da computação pela UFF, já programou em Java, iOS e é consultor especialista em integração de sistemas. Diz que gosta de correr e surfar. Mas esta parte carece de confirmação. 😉