Serverless Computing, o que é?

Renicius Pagotto Fostaini
4 min readSep 21, 2020

--

Você já ouviu falar em computação sem servidores ou mais comumente chamado de Serverless Computing? Esse novo modelo de nuvem está se consolidando com rapidez no mercado por oferecer mais flexibilidade e economia.

É uma arquitetura em que a execução de códigos é totalmente gerenciada por um provedor em nuvem, ao contrário do método tradicional de desenvolvimento de aplicativos e a instalação direta em servidores.

Antes do serverless

No início das aplicações web, era comum utilizar um hardware contendo um sistema operacional e a aplicação. Alguns chamam essa abordagem de “infraestrutura in-house“. Em muitos casos, esse hardware era hospedado em um data center, e a software house pagava pelo espaço e infra que utilizava.

Com o ganho de performance em virtualização de máquinas, começamos a trabalhar com a computação cloud. Na computação cloud tradicional, nossas aplicações ficam em máquinas virtuais onde era possível aumentar (upgrade) ou diminuir (downgrade) o poder de processamento.

Atualmente, a maiorias das aplicações online estão em máquinas virtuais.

O que é serverless?

O modelo serverless, ou sem servidor em tradução literal, se refere ao modelo de oferta de cloud computing no qual os desenvolvedores não precisam provisionar ou gerenciar os servidores. Essas tarefas são abstraídas pelo servidor de nuvem (Microsoft, Google, Amazon, entre outros) e os desenvolvedores se concentram especificamente no código.

Em resumo, com o modelo serverless, os desenvolvedores possuem mais tempo para se preocupar com o que é mais importante, ou seja, na qualidade e evolução do software ao invés de se preocupar com a infraestrutura. A responsabilidade por provisionar recursos computacionais, gerenciar e escalar as aplicações ficam por conta do provedor de nuvem.

Existem dois métodos principais de computação serverless. O primeiro é o Baas (Back-end as a Service) no qual os serviços disponibilizados por aplicações de terceiro compõe a aplicação. O segundo é o FaaS (Function as a Service) no qual os desenvolvedores implementam determinadas tarefas a nível de código, porém sua execução é gerenciado pelo provedor de nuvem.

Back-end as a Service (BaaS)

O BaaS é um modelo de serviço em nuvem, no qual os desenvolvedores de aplicativos móveis ou web, utilizam uma plataforma terceirizada como back-end. Com a ajuda do BaaS, eles apenas precisam se concentrar e manter os serviços de front-end para o usuário. Com a ajuda do modelo BaaS, as organizações podem atribuir a responsabilidade dos serviços de back-end a terceiros.

Um exemplo de BaaS é o Firebase, pois ele possui uma gama de serviços prontos para serem utilizados pela sua aplicação.

Function as a Service (FaaS)

O FaaS (Função como Serviço) é um tipo de serviço de computação em nuvem que permite executar trechos de código em resposta a eventos sem a necessidade de configurar a infraestrutura ou manter a mesma.

Portanto, com o FaaS, toda a infraestrutura (Hardware, OS, etc) necessária para executar sua função, é fornecida e gerenciada automaticamente pelo seu provedor de serviços em nuvem (Microsoft Azure, Google Cloud, AWS). Isso permite que desenvolvedores tenham foco total no negócio e na implementação dessas funções.

Alguns exemplos de FaaS são o AWS Lambda, Azure Functions e o Google Cloud Functions.

Vantagens

As principais vantagens da Arquitetura Serverless são o escalonamento automático (auto scaling) e a redução de custo, porém, tem alguns outros pontos interessantes também.

Redução de custo

Toda vez que uma determinada tarefa é executada, a cobrança é feita apenas pelo recurso computacional consumido. Com isso, você não paga pelo tempo ocioso, ou seja, pelo tempo em que sua função não esta sendo executada, o que é uma grande vantagem frente aos outros modelos existentes como máquinas virtuais.

Escalonamento Automático

Em serverless, a escalabilidade é feita de forma automática, ou seja, quanto mais consumo em suas tarefas, maior será a disponibilidade, porém isso também pode afetar os custos pagos pela execução dessa tarefa.

Menos código e menos complexidade

As aplicações serverless possuem um complexidade bem menor de evolução e manutenção devido a sua natureza de funcionamento. Não é necessário implementar um sistema com várias camadas conforme estamos habituados a fazer.

Alguns pontos de atenção necessários

Em serverless, nem tudo são flores e algumas características precisam ser levadas em consideração.

Dependência de Provedor (Vendor lock-in)

Esse é um dos problemas que encontramos quando queremos utilizar esse tipo de tecnologia em nossas aplicações. Os detalhes de funcionamento é diferente para cada provedor de nuvem (Microsoft, Google, AWS, etc…), o que nos obriga a trabalhar exclusivamente com um desses provedores e impossibilita uma migração facilitada para outro provedor.

Para superar isto, existem alguns framework — o mais famoso é o Serverless Framework. Mas mesmo assim, evitar ficar fortemente acoplado a um fornecedor é difícil, pois em conjunto com as functions normalmente utilizamos outros serviços, como por exemplo de armazenamento de arquivos(p.e S3), proxy de API(p.e Aws API Gateway) entre outros.

Cold Start

É quando um função fica por um determinado tempo sem processar e começa o processo de inativação, ou seja, os recursos são desalocados. Quando ela se encontra em inatividade e é requisitada pela primeira vez, o tempo de resposta possivelmente demore um pouco mais do que o habitual, devido a função precisar realizar todo a alocação de recursos necessária para depois ser executada.

Para evitar isso, um solução paliativa seria criar eventos agendados para chamar a função de tempos em tempos.

Funções Efêmeras

Uma característica que temos que levar em consideração, é que as funções possuem limite de tempo para processamento (timeout) que na maioria dos servidores não ultrapassa 15 minutos, o que garante que elas sejam leves, rápidas e escaláveis.

Considerações Finais

Serverless Computing é um assunto relativamente novo, porém que vem ganhando o mercado rapidamente devido a sua facilidade de implementação e seu baixo custo comparado ao uso de servidores. Porém deixo um alerta aqui, não existe bala de prata e nem sempre o uso de serverless pode beneficiar sua aplicação, portanto é sempre bom a escolha estar atrelada ao contexto do projeto.

Ficou com dúvida? Deixe nos comentários

Até mais!

--

--

Renicius Pagotto Fostaini
Renicius Pagotto Fostaini

Written by Renicius Pagotto Fostaini

Solutions Architect | Speaker | Community Manager

No responses yet