Executando verificação de segurança...
1
frazao
1 min de leitura ·

O que realmente é serverless na AWS?

Ando estudando conceitos para melhorar custos e performance das aplicacoes que minha empresa mantém, e ja à algum tempo houvia dizer sobre ambientes e desenvolvimento pensando em arquiteturas serverless, e, ao primeiro momento me foi explicado que serverless seria "basicamente" a execução da minha aplicação em servidores com infraestrutura abstraída, ou seja, na é necessario me preocupar com escalabilidade, performance, gerenciamento de recursos, dentre outras coisas, e que geralmente não há um servidor dedicado para a minha aplicação.

Fazendo uma correlação, é como se sempre que uma requisição chegasse ao servidor ele levantasse um container da minha aplicação e depois o abaixava após o processamento.

Estudando serviços da AWS me deparei com o Lambda, que é "exatamente" o que descrevi acima, porém ao avaliar serviços como Fargate e o RDS Aurora, percebi que nao é exatamente assim que eles funcionam. Basicamente eles somente abstraem a instancia de uma máquina, configurações de ambientes, etc...

A minha principal dúvida é, qual a real definição de serverless no mundo AWS, e em um caso de uma aplicação serverless com lambda, eu posso utilizar bancos RDS Aurora, ou seria melhor um servico especifico para serverless, como Planetscale ou Neon?

Agradeço desde já a interação e peço desculpas por qualquer falta de boas práticas ou erros de português, esse é o meu primeiro post.

Carregando publicação patrocinada...
2

"em um caso de uma aplicação serverless com lambda, eu posso utilizar bancos RDS Aurora, ou seria melhor um servico especifico para serverless"

depende...essa sua aplicação serverless faz o que exatamente?

serverless não é bala de prata, tem casos de uso especificos (como por exemplo demanda imprevisivel)

1

É um backend de uma aplicação gerencial servindo uma API pra um front, nada de processamentos pesados, basicamente um monte de CRUD.

Sendo mais específico, utilizando PHP com Laravel.

A dúvida veio, pois abordamos a migração de uma instância que hospedava uma aplicação NextJs para o front e tivemos uma economia considerável com isso.

1

Não sei se sou indicado para te dizer o que "é" o serverless em detalhes, não sei se posso fórmular melhor do que você mesmo disse. Mas diria para ter cuidado com o quesito baixar custos. Existe apenas uma situação em que um AWS lambda custa menos que um EC2: baixo número de requisições. A medida que isso escala o preço sobe absurdamente. Vale lembrar que a AWS ganha dinheiro com seu software ineficiente. Então não existe milagre. Faça bem as contas antes de decidir se vai migrar para o serverless. Mas só o fato de estar aqui perguntando como funciona já é um bom sinal que vai ser responsável com isso.

1

Exatamente essa a minha "preocupação", pois alterando do modelo ec2 para containers com fargate "serverless" obtivemos zero otimizações em relação à custos, ganhamos em relação à escalabilidade facilitada e o fluxo de deploy sem interrupções, mas em relação à custos n tivemos alterações.

E pelo que vi isso se dá ao fato de que com o Fargate executamos a aplicação da mesma forma que seria em uma instância ec2, só nao temos o trabalho de gerenciar essa instância, n temos uma cobrança por requisições por exemplo.

1

Se a situação não mudou diria que testes maiores são necessários. Saber quais instâncias estão sendo sub ou super utilizadas. Quais serviços possuem um número baixo de requisições e podem ser migradas para um lambda. Quais instâncias podem ser mudadas para versões menos potentes. Você perde as facilidades do fargate. Mas ganha sua diminuição de custos. Nada é uma bala de prata, não sei sua situação atual então não posso afirmar que o que estou dizendo está certo. Mas é uma alternativa.

1

RDS é bem caro, eu fiquei encantado com isso de servidor escalonável, pague só o que usar, blá, blá, blá
Então peguei minha humilde aplicação onde eu sou o único usuário e migrei para a AWS, RDS, EC2, etc.
Primeiro ano super tranquilo, eu estava dentro do plano gratuito.
Meu pensamento inocente: "Poxa, uma aplicação só para mim, onde só eu faço requisições, vai sair de graça.".
Primeiro mês de pagamento R$ 400,00 para pagar.
Corri para derrubar tudo para no final usar AWS Lightsail, minha aplicação funciona, mas todo aquele sonho de escalabilidade, usar nuvem como grandes empresas fazem, foi por água abaixo.
Se fosse para usar AWS Lightsail que é um (VPS) servidor virtual privado, eu teria ficado no meu antigo provedor.
Como mencionaram cuidado com Lambda, dependendo do número de requisições a brincadeira pode sair cara.
Algo horrível de cloud é isso, super ultra complexo, saber quanto você vai pagar no final do mês.

1

Sobre serverless. Já trabalhei com o framework serverless pra node.js.
Parece não ser o caso.
Mas vou deixar aqui minhas impressões.
Pra aplicações com poucas requisições o custo vale a pena.
Com relação ao banco de dados. Um rds simples resolve problema. Aurora é pra alta escalabilidade.
Nunca usei o planet scale então não saberia dizer qual é mais viável.
Veja no planet scale é cobrado por linha acessada do banco. Tu precisa de entender bastante e otimizar todas suas queries.
No caso de aplicações serverless tu precisa de abrir e fechar a conexão com o banco pra evitar conexões fantasmas.
Quando trabalhei com serverless tinha cerca de 250 lambdas pra 2 ambientes. Sempre tinha cerca de 40 conexões com o banco. As vezes gargalava, mas era imperícia da minha parte.
Tive uma outra situação de migração de framework...
Saímos do sistema serverless pra um ec2, o framework que iríamos utilizar solicitava acessos demais e o cliente solicitou a troca.
Fizemos a troca em 2 dias, a arquitetura hexagonal que aplicamos no sistema ajudou bastante.
Trabalhar com serverless sem automação é bem inviável. Tu vai gastar muito tempo fazendo as configurações.
Quando não se tem know-how é preciso ir fazendo testes, espero ter ajudado em algo.