Serverless - O Que É - Quais Prós e Contras

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 14

EdukTI Sobre Quero Acesso →

EdukTI Posts Serverless: O que é? Quais Prós e Contras?

Serverless: O que é? Quais Prós e


Contras?
Conheça os principais detalhes sobre Serverless: a definição, vantagens
e desvantagens, diferenças entre modelos e muito mais.
Sérgio Francisco
February 02, 2023

No primeiro artigo desta série, eu contei uma breve história sobre a evolução da
implantação e execução de aplicações ao longo do tempo, começando com os Mainframes
até os dias de hoje, utilizando a abordagem Serverless.

Esse retorno ao passado serviu para “preparar o terreno” para falarmos de Serverless no
presente, tentando desmistificar esse termo.

Neste segundo artigo da série você irá entender de maneira clara e descomplicada o que é
Serverless e como essa abordagem pode te ajudar a desenvolver e executar aplicações mais
economicamente eficientes.

Tabela de conteúdo
O que é Serverless?
O que torna um serviço Serverless?
Nada para provisionar, nada para gerenciar
Preços baseados no uso sem mínimos
Pronto com uma única chamada de API
Escala conforme o uso
Sem downtime planejado
Nenhuma instância
Por que adotar uma arquitetura Serverless?
Desvantagens no uso de Serverless
Vendor lock-in
Testar e Debugar é mais difícil
Cuidado com processos de longa duração
BaaS vs FaaS - o que é?
Backend as a Service (BaaS)
Function as a Service (FaaS ou Função como Serviç …
Quais Empresas Usam Serverless?
Conclusão

❓️ O que é Serverless?
Serverless é um modelo computacional voltado para você criar e executar aplicações nativas
de nuvem sem se preocupar com servidores, máquinas virtuais ou contêineres para
provisionar ou gerenciar.

Esses componentes de infraestrutura ainda existem “debaixo” da aplicação em execução,


mas a presença deles é abstraída, sendo de responsabilidade da plataforma de nuvem e não
sua.

Victor Shinya, que trabalha na AWS, escreveu a seguinte frase em um post no seu blog:
“Assim como a internet sem fio tem fios em algum lugar, a arquitetura Serverless
ainda tem servidores em algum lugar”
Victor Shinya

Se você executou alguma máquina virtual em um serviço como Amazon EC2, Azure Virtual
Machines ou Google Compute Engine, percebeu que o hardware para executar suas
máquinas virtuais não era sua preocupação, certo?

O mesmo acontece com Serverless, só que com uma camada de abstração maior: você só
se preocupa com o código a ser executado.

🪄 O que torna um serviço Serverless?


A melhor forma que encontrei para definir se um serviço é de fato Serverless ou não foi a
partir de um teste criado pela Momento, solução de cache realmente Serverless, chamado
de "Litmus Test for Serverless" ou, traduzindo, "Teste Decisivo Para Serverless".
O Teste Decisivo Para Serverless

Achei este teste muito útil pois, uma vez que Serverless está em alta, é comum ver alguns

🤷‍♂️
provedores aplicando a etiqueta "Serverless" em serviços que, convenhamos, não são tão
Serverless assim...

Esse mesmo fato aconteceu com Computação em Nuvem, assim que esse modelo passou a
se tornar popular.

Era muito comum ver os provedores de data center ofertar serviços de "nuvem" que não
atendiam a proposta de computação em nuvem.

Com Serverless não está sendo diferente.

Essa deturpação do que realmente é Serverless está causando uma confusão generalizada e,
por isso, atualmente não há uma visão muito bem clara sobre o que de fato é Serverless.
Voltando a falar do teste... de acordo com a Momento, estes são os 5 princípios que um
serviço precisa atender para ser considerado Serverless.

❌ Nada para provisionar, nada para gerenciar


Com Serverless, você não gerencia servidores, máquinas virtuais ou contêineres.

Embora possam existir, eles são gerenciados pela plataforma de nuvem e completamente
inacessíveis por você.

Isso reduz a complexidade operacional.

💰️ Preços baseados no uso sem mínimos


Você paga pelos recursos que consome e não pela capacidade provisionada.

Você não paga pelo tempo que sua aplicação fica ociosa.

Isso geralmente reduz os custos da nuvem.

✨ Pronto com uma única chamada de API


Um serviço Serverless deve permitir que desenvolvedores possam provisionar recursos com
uma única chamada de API.

Não deve ser necessário esperar que instâncias sejam ativadas, inicializadas, etc.

Por exemplo, quando você cria um bucket no S3, você não precisa esperar que um cluster
seja criado antes de você poder começar a enviar solitações para o bucket.

Outro exemplo é quando você cria uma função no Lambda.

Você possivelmente realizou uma única chamada para o endpoint CreateFunction (ou fez
isso via alguma ferramenta de IaC, como o Terraform e, em seguida, pode começar a invocar
sua função imediatamente.

De forma resumida, esses serviços simplesmente funcionam. Quase magicamente. 🪄✨


📈 Escala conforme o uso
Serviços e aplicações Serverless possuem o escalonamento automático integrado.

À medida que as solicitações são recebidas, um serviço ou aplicação é dimensionado para


atender a essa demanda.

Isso permite que você atenda rapidamente ao crescimento no uso de sua aplicação.
🆙 Sem downtime planejado
Você já percebeu que serviços como S3, SQS, Cloud Functions, Big Query, entre outros,
simplesmente funcionam o tempo todo (exceto em casos de falhas imprevistas)?

Isso acontece pois não há espaço para downtime (tempo de inatividade) para estes tipos de
serviços nos dias de hoje.

Todos estes serviços são implantados usando arquiteturas com alta disponibilidade e
tolerância a falhas embutidas e você não precisa se preocupar com isso.

Por trás dos bastidores, há sim atualizações, deploys, escalonamento de infraestrutura, mas
você, mero mortal, não precisa saber que eles acontecem.

Isso reduz a complexidade da engenharia e o tempo gasto para manter sua aplicação
no ar.

0️⃣ Nenhuma instância


Você sabe me dizer quantas instâncias estão em execução nesse momento para suportar a
sua fila no SQS, tabela no DynamoDB ou bucket S3?

Provavelmente, muitas.

Porém, o que torna estes serviços Serverless é que você não tem a menor ideia da
capacidade necessária para executar esses serviços.

E, o melhor: você não precisa se preocupar com isso, afinal, tem mais o que fazer.

Por que adotar uma arquitetura Serverless?


A maior vantagem da arquitetura Serverless é a possibilidade de redução significativa do
tempo necessário para operação da infraestrutura em nuvem, uma vez que a maioria das
tarefas de administração são de responsabilidade da plataforma de nuvem utilizada.

Isso concede mais tempo para você e seu time trabalhar em atividades ligadas ao core
business da organização, em atividades que geram valor direto ao negócio.

Desvantagens no uso de Serverless


É impossível negar que a vantagem e as características ao utilizar Serverless são ótimas para
qualquer time de tecnologia e empresa que saiba tirar proveito do seu uso, não é mesmo?

Porém, como nem tudo são flores, as desvantagens desse modelo também são relevantes e
precisam ser consideradas antes da sua adoção.
A decisão de adotar Serverless te coloca em um típico cenário de trade-off (decisão que
consiste na escolha de uma opção em detrimento de outra).

Listo abaixo algumas das principais desvantagens a serem avaliadas:

🔒️ Vendor lock-in
O risco de enfrentar Lock-in (dependência do fornecedor) é alto ao quando se utiliza
Serverless, pois é muito provável que os serviços que você esteja usando de uma plataforma
de nuvem sejam implementados de maneira diferente por outra plataforma.

Essa diferença te coloca em um cenário complicado: caso opte por mudar de fornecedor, você
provavelmente precisará alterar seu código, suas ferramentas de operação (CI/CD,
monitoramento, etc.) e, em casos mais complexos, até mesmo a arquitetura da aplicação.

🧪 Testar e Debugar é mais difícil


Testar e “Debugar” uma aplicação Serverless não é uma tarefa fácil, pois a aplicação é
dividida em funções menores que executam de maneira independente (com base nos eventos
que as acionam) e geralmente os desenvolvedores não possuem visibilidade dos processos
no backend.

⌛️ Cuidado com processos de longa duração


Por exemplo, o tempo limite de execução de uma função no AWS Lambda atualmente é
de 15 minutos, o que pode ser útil para algumas cargas de trabalho cujo processamento é
mais demorado, como análises de big data, transformações de dados em massa e
processamento de eventos em lotes.

Porém, vale ressaltar que as plataformas Serverless cobram pelo tempo de execução do
código e pelos recursos de hardware utilizados para execução do código.

No final, pode custar mais caro executar uma aplicação com processo de longa execução em
um serviço Serverless do que em outros serviços.

BaaS vs FaaS - o que é?


Os serviços Serverless podem ser divididos em duas categorias:

1️⃣ Backend as a Service (BaaS)


É a categoria de serviços administrados pela plataforma de nuvem cujo objetivo é atender as
nossas necessidades de “serviços acessórios”, na camada de dados (armazenamento e
banco de dados) ou integração de aplicações (plataforma de mensagens, gerenciamento de
usuários, etc.)

Nessa categoria, destacam-se serviços como:

1. AWS: S3, SQS, SNS, DynamoDB, EventBridge, Step Functions, API Gateway,
etc.
2. Google Cloud: Cloud Storage, BigQuery, Firestore, Cloud Run, etc.
3. Microsoft Azure: Event Grid, Cosmos DB, Armazenamento de Blobs, etc.

2️⃣ Function as a Service (FaaS ou Função como Serviço)


Segundo a AWS, FaaS é a camada de computação de uma arquitetura Serverless.

Os serviços desta categoria permitem que você desenvolva uma função (menor objeto de
uma aplicação), faça deploy facilmente e configure este software para ser acionado a partir de
determinados eventos.

Em aplicações Serverless, o Lambda costuma ser utilizado para conectar serviços,


transformar dados e implementar a lógica do negócio.

A responsabilidade de implantação, alocação e provisionamento de recursos,


dimensionamento da infraestrutura, manutenção do sistema operacional e monitoramento de
processos é delegada para a plataforma de nuvem.

Nesta categoria, os principais serviços são:

1. AWS: Lambda
2. Google Cloud: Cloud Functions
3. Microsoft Azure: Azure Functions

Quais Empresas Usam Serverless?


Não é difícil encontrar alguns casos de estudo que ajudam a entender de como outras
empresas estão criando e executando aplicações com arquitetura Serverless.

No re:Invent 2022, a diretora de Engenharia da Trustpilot, Angela Timotfe, compartilhou como


o time que ela lidera desenhou e implantou uma arquitetura orientada a eventos (Event-driven
Architecture ou EDA) na AWS.

Veja no vídeo abaixo:


AWS re:Invent 2022 - Customer Keynote Trustpilot

No re:Invent 2020, o Sheen Brisals, Gerente Sênior de Engenharia no grupo LEGO e AWS
Serveless Hero, mostra como a LEGO.com reconstruiu um monólito em uma arquitetura
orientada a eventos com Amazon EventBridge e Step Functions em seu núcleo:

AWS re:Invent 2020: How LEGO.com accelerates inno…


inno…

Aqui no Brasil, um caso muito bacana para estudar é o da implementação do Pix no Itaú,
apresentado no AWS Summit 2022.

O Itaú desenhou uma arquitetura orientada a eventos que combina serviços como AWS
Fargate, AWS Lambda e Amazon Simple Notification Service (Amazon SNS) com serviços
gerenciados como o Amazon Kinesis.
AWS Summit SP 2022 - Como o Itaú construiu o maio…
maio…

Conclusão
Serverless é uma tendência crescente no mundo de TI que permite que aplicações e serviços
sejam executados sem que você precise gerenciar ou provisionar servidores, máquinas
virtuais ou contêineres.

Isso traz vantagens como redução de custos, flexibilidade e escalabilidade, em contrapartida,


há o custo de dependência (lock-in) de fornecedores, preocupações com segurança,
dificuldades para realizar testes, etc.

Este artigo tem o objetivo de explicar de maneira descomplicada sobre esse modelo
computacional e listar os principais motivos no qual Serverless tem se tornado cada vez mais
popular para muitos times de tecnologia e empresas.

Agora eu quero saber mais sobre você.

Você já utiliza algum serviço Serverless na sua infraestrutura?


Já implantou alguma aplicação orientada a Eventos?
Qual é a sua plataforma de nuvem favorita para executar aplicações Serverless?

Deixe seu comentário compartilhando sua experiência com Serverless. 😉


Junte-se à conversa

Adicione seu comentário...

Fazer login

Fazer login ou Inscrever-se participar.

Continue lendo

Dos Mainframes até Serverless: Como o


Mundo da Computação Mudou
Relembre como a computação evoluiu dos
antigos mainframes até as tecnologias
Serverless e mudou o jeito de trabalhar e pensar
sobre TI.

🇲🇽 🇸🇦 AWS anuncia novas regiões em 2025


e 2026
MAIS: Resultados da pesquisa anual da AWS,
parceria do GCP com Elastic, ferramentas,
conteúdos e eventos da comunidade.
Terraform: O que é? Por que usar? Como
funciona?
Uma visão geral da ferramenta de infraestrutura
como código mais poderosa e utilizada do
mercado

Ver mais

EdukTI
Sua dose semanal de conhecimento sobre Cloud Computing e
DevOps

Insira seu email Quero Acesso →

© 2024 EdukTI.
Impulsionado por Beehiiv
Política de privacidade Termos de uso

Você também pode gostar