O que é serverless? Esse negócio é para mim?

O que é serverless? Esse negócio é para mim?

·

6 min read

🛂 English Version

Você sabia que, com a arquitetura serverless, é possível simplesmente esquecer as preocupações relacionadas à infraestrutura / hardware, liberar seus desenvolvedores para se dedicarem a escrever códigos e pagar pelos serviços de servidores somente quando forem acionados… tudo isso ao mesmo tempo?

Talvez você já tenha vivido - ou ainda vive - essa história…

Surge um problema ou nova demanda em seu negócio. Entram em cena os desenvolvedores, que passam dias (às vezes semanas) tentando resolver o desafio a partir de seus códigos.

Logo depois vem a equipe de infraestrutura, com duas tarefas pesadas pela frente:

  1. levantar os códigos escritos pelos desenvolvedores e fazê-los funcionar em todos servidores disponíveis;

  2. garantir que tudo siga funcionando, mantendo a disponibilidade e assegurando a escalabilidade conforme aumenta o consumo - e tudo isso ainda com o custo otimizado...

Daí vem a pergunta inevitável:

**Você já pensou em terceirizar essa trabalheira toda? **

Se sim, você não está sozinho.

Nas duas últimas décadas, boa parte das inovações em TI miravam um objetivo principal: garantir que as pessoas não precisem pensar muito no hardware onde o código é executado.

O ápice desta forma de operação se chama arquitetura serverless (ou serverless computing). A tradução literal do nome é auto explicativa: “computação sem servidor”.

...

**OBSERVAÇÃO: ** *talvez “serverless” não seja o melhor nome para essa tecnologia, porque os servidores continuam sendo utilizados. Só passam a ser desnecessários os esforços para configurá-los. Tem gente que brinca que "DevOpsLess" (sem DevOps) ou "NoOps" (sem operadores) seriam expressões mais adequadas. Faz sentido. *🤔

...

Com o serverless, o desejo por independência - tanto do hardware quanto do sistema operacional em que o código é executado - encontra sua solução ideal:

Você não precisa saber nada sobre essas coisas, já que o serviço é prestado por empresas especializadas no assunto.

De acordo com a definição da InfoWorld, “serverless computing é um modelo de execução para a nuvem em que um provedor de cloud aloca dinamicamente - e depois cobra do usuário - apenas os recursos de computação e armazenamento necessários para executar um determinado código. Naturalmente, ainda existem servidores envolvidos, mas seu provisionamento e manutenção são inteiramente gerenciados pelo provedor”.

A liberdade é um dos pontos positivos do serverless. A redução de custos é outro (e bem representativo, por sinal). A soma destes fatores torna a ideia praticamente irrecusável.

tabela serverless 2.png

*Gráfico mostra a facilidade de configuração e o foco na lógica de negócios do serverless computing. Fonte da imagem: Plutora. *

Serverless e a quebra de paradigmas

Para entender como funciona o serverless computing, pense nele como a quebra de uma aplicação em várias funções.

No conceito serverless, você não gerencia nada em termos de infraestrutura. Esqueça preocupações como em quantos servidores a aplicação vai rodar ou quais são as necessidades de memória RAM, capacidade de disco ou de processador.

O que você precisa fazer é desenvolver um trecho de código e entregar para o seu provedor de cloud. O resto do processo é responsabilidade da empresa contratada.

Na prática, o processo funciona assim:

No momento em que alguém acessa o seu site / aplicação, é como se um servidor que estava parado fosse acionado na hora. Esse provedor de cloud entrega o site / aplicação para o seu cliente e desliga o servidor de volta. E todo esse processo é realizado em milissegundos.

Por isso, as funções serverless são chamadas de event-driven (“orientadas por eventos”, em livre tradução), pois o código só entra em ação quando é acionado por uma solicitação.

Bernard Golden, CEO da empresa de soluções para a web Navica, exemplificou as vantagens das aplicações event-driven:

Imagine ter um aplicativo que fica inativo a maior parte do tempo, mas que, ocasionalmente, recebe muitas solicitações de eventos ao mesmo tempo, ou até um aplicativo que processa dados enviados de dispositivos IoT com conectividade à Internet limitada ou intermitente.

Em ambos os casos, a abordagem tradicional exigiria o provisionamento de um servidor robusto, que pudesse lidar com as capacidades de pico de trabalho - mas esse servidor seria subutilizado na maior parte do tempo.

Já com a arquitetura serverless, você pagaria apenas pelos recursos do servidor que realmente está usando.

Esse jogo de ativar servidor parado / desativar servidor depois de usado é o que proporciona as principais vantagens do serverless. Entenda como.

Serverless = processo transparente + economia de recursos

O modelo serverless quebra muitos paradigmas. Um dos principais é justamente relativo à redução de custos.

Antes do conceito serverless, os custos de infraestrutura na nuvem eram cobrados por hora. Havia sempre um servidor específico à disposição, e isso gerava custos constantes. Além disso, o uso excedente de memória RAM era cobrado por fora.

Isso causava uma enorme distorção na relação entre o serviço prestado e o valor pago. Por exemplo: se em 90% do período noturno ninguém acessasse o seu site, você pagaria pelo servidor do mesmo jeito.

Já quando havia um pico de acessos, excedendo o plano contratado, o valor era majorado.

Por outro lado, a tecnologia serverless é genuinamente auto escalável: o servidor é capaz de aumentar e diminuir sozinho sua capacidade de processamento e de memória, de acordo com a demanda.

Enfim, você paga pelo que consome, sem desperdício de recursos.

tabela serverless 1.png

*Gráfico ilustra a economia de recursos com o serverless computing. Fonte da Imagem: Cloudflare. *

Serverless e as linguagens de programação

Como no serverless há várias funções envolvidas, é possível usar linguagens distintas. O mesmo microsserviço pode ter um pouco de JavaScript, Python, PHP e Node.js, entre outras, e tudo ao mesmo tempo.

Isso facilita bastante o processo, uma vez que você pode usar a linguagem de programação mais adequada para cada parte específica do trabalho, sem perder a integração com as demais etapas do projeto como um todo.

Conclusão

Resumindo tudo, estes são os principais benefícios do serverless computing:

  • os desenvolvedores podem se concentrar nos códigos que estão escrevendo, sem precisar se preocupar com assuntos relacionados à infraestrutura;

  • as empresas contratantes pagam apenas pelos recursos de computação que realmente estão usando, de forma totalmente transparente, deixando de gastar com hardware ou aluguel de espaços em nuvem que geralmente ficam ociosos.

Em termos de infraestrutura de tecnologia, o serverless veio para ficar. É natural que, nos próximos anos, haja um verdadeiro êxodo de empresas para essa arquitetura, especialmente pela redução de custos proporcionada.

Este artigo deve ter dado uma ideia geral sobre como funciona o serverless e quais são as suas principais vantagens. Mas é provável que você esteja pensando: “Tá, ok, mas como seria feita a transição da minha arquitetura atual para o serverless?”.

A sua dúvida pode ser resolvida com uma boa conversa.

Deixe o seu comentário ou, se preferir, entre no servidor do bohr.io no Discord. Vamos ouvir as particularidades do seu negócio e apontar a solução mais adequada. Além do mais, esse é um assunto que o nosso time adora tratar.

Por isso, não se acanhe. 😉