Você sabe o que é Arquitetura Serverless?

Serverless Architecture dogs

Em meados de 2006 a empresa Fotango pertencente ao grupo Canon Europe, lançava uma plataforma diferente de tudo que se conhecia no mercado. Ela prometia fazer todo trabalho repetitivo para o desenvolvimento e implantação de uma aplicação javascript cobrando apenas pelo código que fosse executado.

A plataforma Zimki parecia realmente uma boa ideia, porém, na véspera de natal de 2007, os usuários da plataforma foram presenteados com o encerramento do serviço.
O Zimki não deu certo, mas ela representa o nascimento de um novo conceito de serviço de cloud computer, o PaSS e consequentemente um novo modelo de arquitetura, o Serverless.

O que é arquitetura Serverless?

É um pouco complicado explicar o que é exatamente o Serverless, mas eu gosto bastante da definição que o Mike Roberts usou para explicar, que em tradução livre é mais ou menos isso:

As arquiteturas Serverless referem-se a aplicativos que dependem significativamente de serviços de terceiros (conhecido como Backend como Serviço ou “BaaS”) ou no código personalizado que é executado em contêineres efêmeros (Função como Serviço ou “FaaS”)

Tá.. Ainda não entendi, afinal o que isso quer dizer?? Backend como serviço, contêiners efêmeros.. Melhor explicar isso por partes.

BaaS (Backend como Serviço)

Um bom exemplo para explicar BaaS é você imaginar um aplicativo feito em apenas uma página, os chamados SPA(Single Page Application) conectado diretamente a algum sistema de banco de dados na nuvem, como o Firebase ou com seu sistema de login inteiramente dependente de um serviço como o Auth0.com

Em ambos os casos, a lógica que torna a sua aplicação única está implementada no javascript da SPA em sua página HTML, dependendo de um serviço de terceiros para api backend. Neste caso você não escreve o código backend, apenas faz configurações básicas e utiliza o serviço de backend. Por isso é chamado de “Backend como Serviço” .

FaaS (Função como Serviço)

Aqui as coisas ficam um pouco mais interessantes e também é aqui que entram os contêiners efêmeros….

No FaaS o serviço provê toda a interface necessária para a resposta de requisições HTTP, se preocupando apenas em escrever a parte fundamental de seu código para cada rota separadamente. Cada rota HTTP é enxergada como um serviço, e cada serviço é escrito em apenas uma função em seu código. Os chamados “Nanoserviços”. Sim! Menor ainda que Microserviços.

Atualmente, os serviços mais conhecidos do mercado que trabalham com FaaS são AWS Lambda e Google Cloud Functions.

E os contêiners efêmeros?

Contêiner efêmeros não é nada mais que um contêiner com pouca duração ou com pouco tempo de vida. Trata-se de um contêiner iniciado apenas para executar o código que foi solicitado e depois de pouco tempo ele já será desligado ou destruído.

Caso você não saiba o que é um contêiner, pode imagina-lo como uma máquina de servidor muito pequena ou como uma máquina virtual.

Algumas considerações

Serverless é um assunto novo, porém muito extenso e seria impossível tratar tudo em um post só.

Ainda tenho muitas perguntas para responder do tipo: Como trabalhar com arquitetura Serverless? Quais as vantagens do Serverless? Quais suas desvantagens? Existe algum framework pra trabalhar com isso?

Em breve pretendo escrever mais posts sobre este assunto, então sinta-se livre para deixar sugestões nos comentários, seu feedback é muito importante pra mim! Blz?

Fontes

martinfowler.com/articles/serverless.html

youtu.be/aIuCJmFVqwc