Eu sou relativamente novo no mundo dos servidores, então me perdoe se isso é básico (e o primeiro bit do texto será explicando minha lógica para ter certeza de que não é falho). Todas as minhas perguntas ficarão em negrito para facilitar sua ajuda:).
Estou pesquisando e ensinando algumas das tecnologias da AWS, e notei no seu Hub Móvel que, se você quiser a lógica da nuvem, elas só permitem a configuração "automática" das funções do Lambda. Depois de ler e pesquisar, descobri alguns recursos que apontam para a arquitetura "sem servidor" (que a introdução do Lambda suporta). No passado, entendi que o Elastic Beanstalk foi introduzido para ajudar a tornar o gerenciamento de servidores (especialmente para dispositivos móveis) significativamente mais simples.
Para dispositivos móveis, há duas opções (obviamente mais, mas, para simplificar, vamos concordar):
- Configure um Elastic Beanstalk que tenha pelo menos 1 instância sendo executada 24/7 e tenha vários pontos de extremidade para cada URL
- Com o API Gateway, podemos rotear URLs facilmente para funções específicas do Lambda. Com isso, podemos atender a qualquer solicitação (muito parecido com a configuração de um aplicativo do Elastic Beanstalk).
Tudo isso me leva a acreditar que um back-end completo do Lambda seria completamente possível e fácil de criar por uma fração do custo de ter um servidor rodando 24/7. Isso está correto?
Agora, supondo que o acima esteja correto, precisamos determinar se o uso do Lambda é realmente benéfico em relação ao Elastic Beanstalk.
Para servidores simples, podemos configurar algumas funções do Lambda e chamá-lo um dia (e é provavelmente muito mais simples e barato (pelo menos para projetos pequenos) do que usar o Elastic Beanstalk).
No entanto, para servidores mais complexos com mais URLs e conexões de banco de dados, as coisas ficam mais interessantes.
Estes são os problemas que vejo com o uso do Lambda na situação acima
- Cada URL teria seu próprio gateway de API com sua própria função do Lambda. Se algum código ou módulo é usado em múltiplas funções, nós teríamos que copiar e colar isso em cada função.
- Gerenciar várias funções do Lambda (e Gateways de API) é simplesmente mais trabalho do que gerenciar um único projeto / repositório / como você quiser chamar sua base de código.
- Cada função que requer uma conexão com o banco de dados precisa se conectar dentro da função (por exemplo, ter uma conexão constante em um aplicativo Node.js).
A única maneira (que eu poderia pensar) de evitar os dois primeiros problemas é fazer uma função robusta que atua como um despacho (a função principal pega um parâmetro do gateway da API e determina qual arquivo será executado na função do Lambda) .
Existem alguns pontos importantes que eu estou perdendo para determinar se vale a pena usar o Lambda sobre o Elastic Beanstalk?