Serverless Architecture é tema recorrente em eventos e discussões sobre tendências em arquitetura de software. Entretanto, como ocorre com outros trending topics, é cercado de informações desencontradas.
O termo serverless, sozinho, induz à confusão. Diferente do que pode ser entendido em um primeiro momento, arquiteturas Serverless não implicam na inexistência de um servidor. Pelo contrário, há processos e hardware, no lado servidor, funcionando em “algum lugar” mas mantidos por um “terceiro.
Uma arquitetura é considera serverless quando a gestão da infraestrutura do servidor não será aspecto relevante para quem desenvolve a solução nem para quem a opera, ficando relegado a algum provedor de serviços na nuvem.
Inicialmente, o termo foi usado para descrever aplicações ricas (SPA, mobile, etc) que consumiam plenamente soluções e serviços de terceiros, na nuvem, para compor lógica de negócio e persistência. Firebase, Cognito, Salesforce, etc, foram algumas das tecnologias utilizadas e esse modelo ficou conhecido como Backend as a Service, ou BaaS.
Recentemente, o termo serverless também passou a ser utilizado para soluções onde o código que roda no lado do servidor também é escrito pelo time. Entretanto, este código é distribuído com um mínimo de configuração e é acionado através de eventos (como requisições HTTP), sem manter qualquer estado, sendo completamente gerenciado, inclusive no que tange a escala, por terceiros. AWS Lambda e Azure Functions são dois examplares de tecnologias para desenvolvimento nesse modelo que ficou conhecido como Function as a Service, ou FaaS.
Não é raro que aplicações Serverless utilizem recursos FaaS e BaaS simultaneamente. Podemos usar o CosmosDB, por exemplo (como BaaS), tanto para acionar quanto para persistir dados de código rodando como Azure Functions (como FaaS).
Com frequência, temos encontrado, em nossas consultorias, soluções híbridas, adotando serverless em combinação com estratégias tradicionais. Também temos visto abordagens FaaS como alternativa para acelerar microsserviços.
Arquiteturas Serverless geralmente reduzem o custo de desenvolvimento e de manutenção de software. Entretanto, também apresentam novos desafios e riscos. Dentre os maiores problemas está o potencial lock-in a um fornecedor de tecnologia.
Você tem experiência com Serverless?