Serverless - O Que É - Quais Prós e Contras
Serverless - O Que É - Quais Prós e Contras
Serverless - O Que É - Quais Prós e Contras
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.
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.
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.
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.
Embora possam existir, eles são gerenciados pela plataforma de nuvem e completamente
inacessíveis por você.
Você não paga pelo tempo que sua aplicação fica ociosa.
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.
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.
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.
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.
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.
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).
🔒️ 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.
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.
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.
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.
1. AWS: Lambda
2. Google Cloud: Cloud Functions
3. Microsoft Azure: Azure Functions
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:
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.
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.
Fazer login
Continue lendo
Ver mais
EdukTI
Sua dose semanal de conhecimento sobre Cloud Computing e
DevOps
© 2024 EdukTI.
Impulsionado por Beehiiv
Política de privacidade Termos de uso