A revolução Serverless

Resumo

O modelo de arquitetura Serverless (Do inglês “sem servidor”) é a base de serviços conhecidos como Backend as a Service (BaaS) e Function as a Service (FaaS). O termo Serverless pode soar muito estranho para pessoas que não o conhecem mas que têm vivência com os modelos de arquitetura já existentes, isso porquê o servidor de aplicação é uma parte fundamental em praticamente em todos os modelos de sistemas distribuídos já existentes. A verdade é que ainda há sim um servidor por trás de tudo, mas toda a gestão deste é repassada para terceiros, incumbindo a empresa que deseja ter um serviço no ar apenas de desenvolver o código fonte e fornecê-lo para ser executado pela plataforma que provém o serviço.

Sistemas Distribuídos

Um sistema distribuído consiste de diversos computadores independentes entre si, inclusive podendo estar em locais distantes uns dos outros, ligados através de uma rede que se apresentam aos usuários como um sistema único e coerente.

Representação ilustrativa de um sistema distribuído

Sistemas distribuídos estão por toda parte no cotidiano de todos, um exemplo simples é um website. Páginas da web se apresentam para os usuários como um lugar endereçavel onde os usuários podem ir a fim de consumir um serviço ou de obter informações, mas por trás desse endereço existe uma rede enorme de computadores que se organizam para que aquela página possa chegar no computador de cada usuário com segurança e os dados corretos. Um dos principais computadores que permitem isto é o Servidor daquele site, é para ele que comumente todas as requisições são endereçadas, e dele que partem todas as respostas aos clientes, sendo que sem ele dificilmente é possível haver uma troca de dados.

Serverless

Se o servidor de aplicação é a parte mais importante dos sistemas distribuídos então como é possível que uma arquitetura que se auto-intitula “sem servidor” funcione? Bem, a questão é que por mais que o nome indique que não haja um servidor a verdade é que há sim um, a diferença existe é na forma em que este servidor é gerenciado. Como falei anteriormente o servidor de aplicação é uma das partes mais importantes de serviços distribuídos, por causa disso se há algum problema ou então um fluxo de dados muito grande de forma repentina, é possível que o serviço saia do ar.

Como então é que os administradores de sistema mantém os servidores rodando independente do quê aconteça? Através de um trabalho árduo de monitoramento, proteção e constante melhoria dos servidores, garantindo que independente do fluxo de dados que entra no serviço o servidor de aplicação seja capaz se manter “de pé” e processando tudo. A questão é que todo esse processo demanda uma equipe dedicada e equipamentos de ponta, o que custa muito dinheiro e tempo.

A grande sacada dos serviços que fornecem um produto Serverless é que eles abstraem dos seus clientes, empresas que têm sistemas e que querem mantê-los no ar a qualquer custo, toda essa dor de cabeça de gerência dos servidores, facilitando a vida dos seus clientes e reduzindo drasticamente os custos de fazer isto, além de garantir resultados muito bons.

Os diferentes tipos de serviços Serverless

Serverless é um conceito bastante vago, uma vez que define apenas que a gestão dos servidores seja feita por terceiros, mas para entender como isso é feito na prática é necessário explorar alguns tipos de serviço Serverless que existem no mercado.

Backend as a Service (BaaS): Serviços BaaS são serviços que recebem dos clientes uma base de código que pode ser de uma ou várias aplicações e os executa na sua infraestrutura própria, oferecendo serviços como escalabilidade automática, que permite com que os servidores se adaptem ao fluxo de informações demandado deles e possuam mais ou menos poder computacional e diversas medidas de proteção contra ataques como DOS ou DDOS entre outras atividades maliciosas que podem acontecer com serviços expostos à rede.

Function as a Service (FaaS): Serviços FaaS vão um passo à frente dos BaaS, possibilitando ao cliente subir apenas pequenos trechos de código, encapsulados em funções, que são executados de maneira reativa e sob demanda, a partir de diversos tipos de eventos que podem acontecer em um sistema como o upload de arquivos, mudanças no banco de dados ou até requisições HTTP(S), tornando extremamente fácil granularizar sistemas a fim de obter melhores performances, mantendo as garantias de escalabilidade e segurança presentes nos serviços BaaS.

Conclusão

Podemos concluir que ao que parece o conceito de Serverless veio para ficar, a partir dos produtos que vêm facilitando e muito a vida das pessoas encarregadas de manter os diversos serviços digitais que acessamos diariamente,garantindo uma web mais segura e confiável para todos, além de reduzir os custos de todo esse trabalho.

Perguntas Relacionadas

1 – O servidor de aplicação é extremamente importante para os sistemas distribuídos mas não é o único envolvido, quais são outros dois servidores que são cruciais para manter um site web?

2 – Qual a importância de escalar um servidor de acordo com o tráfego que ele recebe e quais os riscos de não fazer isto?

Autor: Pedro Henrique Lacerda de Carvalho

Estudante de Engenharia de Controle e Automação no IFMG - Betim e Desenvolvedor de Software na Dito