Prós e Contras da Arquitetura Serverless
Conceito
Em tradução livre, Arquitetura sem Servidor, é uma estrutura de aplicativos que hospeda serviços do tipo “Backend-as-a-Service” (BaaS) de terceiros, podendo executar ou incluir código personalizado em containers gerenciados a partir de uma plataforma "Function-as-a-service” (FAAS), que permite aos desenvolvedores executarem códigos que reajam a eventos sem a complexidade de construir e manter uma infraestrutura propriamente dita.
Embora o nome sugira o contrário, o modelo Serverless não exclui a utilização de servidores, ao invés disso funciona como uma espécie de extensão do conceito de computação em nuvem.
Principais Vantagens da Arquitetura
Podemos começar citando a redução e melhora na previsibilidade de custos, visto que os provedores destes serviços só irão cobrar pelos recursos que a aplicação utilizar. Uma vez que o site possua poucos acessos, o provedor diminui os recursos atrelados à ele (podendo escalar à zero) e só cobrará pelo usado (incluindo nada, se ninguém utilizou).
O oposto também acontece: se o seu site sofre um pico de acessos, o provedor criará mais containers (escalonamento horizontal) em máquinas gerenciadas por eles para atender todas as requisições e irá te cobrar mais por isso.
Podemos citar ainda, o fato da possibilidade de um processo mais simples de DEVOPS: o deploy envolverá apenas enviar a nova versão do código para o provedor, e este cuidará do resto. Além disso, chamo atenção ainda para a escalabilidade e aumento de produtividade do time de desenvolvedores, que não precisarão preocupar-se com a infraestrutura do site, já que toda a responsabilidade nesse caso é do provedor.
A diminuição dos riscos de ameaças à infraestrutura também passa a ser uma realidade, uma vez que retirar o gerenciamento de dentro da organização ajudará a diminuir brechas de seguranças, às quais todo o sistema está exposto. Bons provedores de Serverless contam com equipes especializadas no assunto e em proteção geral contra ataques.
Principais Desvantagens da Arquitetura
Lock-in, ou seja, dependência de ter um único provedor fornecendo todos os serviços de backend para seu aplicativo. Além disso, construir funções do tipo Serverless em uma plataforma pode tornar-se uma dor se, por alguma razão, houver a necessidade de migração para outra plataforma. O código pode precisaria ser reescrito, APIs que existem em uma plataforma podem não existir na outra e muito mais horas de desenvolvimento extras podem acabar comprometidas para mover, por exemplo, da AWS para Microsoft Azure ou Google Cloud.
Podem ocorrer também debugs mais complexos, já que os desenvolvedores não têm visibilidade dos processos de back-end. Fazer o debug de funções Serverless é possível, mas não é uma tarefa simples e pode consumir muito tempo e recursos.
Não esqueçamos ainda que a dificuldade com o suporte passa a ser uma possibilidade. Estes serviços estão constantemente em mudanças e há menos conteúdo disponível sobre os mesmos.
No fim das contas, faz-se necessária uma análise minuciosa sobre qual solução melhor se adequa a realidade de cada demanda.
Provedores de Serverless com opções gratuitas
1. Back4App: Backend-as-a-Service (BAAS) de código aberto desenvolvido para oferecer flexibilidade e escalabilidade para desenvolvedores de aplicativos. Conta com recursos de Banco de dados SQL e NoSQL, APIs REST e GrapQL, serviços de autenticação, notificações e armazenamento. Possui camada gratuita disponível;
2. AWS Lambda: Serviço de computação sem servidor que monitora funções lambda. Conta com escalabilidade e lógica customizada. Disponibiliza 1 milhão de solicitações de forma gratuita;
3. Firebase: Plataforma móvel desenvolvida pelo Google que ajuda os desenvolvedores de aplicativos móveis e da web a desenvolver rapidamente aplicativos de alta qualidade. Os recursos do Firebase podem ser integrados aos aplicativos desenvolvidos por meio da adição de códigos do lado do servidor. A plataforma conta com bancos de dados NoSQL, Google Analytics e serviço de notificações. Camada Gratuita disponível.