Serverless Architectures 101

O que significa “Serverless Architecture”? BaaS? FaaS?

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?

Em Resumo
  • O conceito

    Serverless architectures são aquelas onde os processos e o hardware necessários no "lado do servidor" não são responsabilidade do time que está desenvolvendo a solução. Há duas variantes populares para essa ideia: BaaS e FaaS
  • O Insight

    Serverless architectures podem reduzir a complexidade para desenvolver e manter soluções distribuídas complexas. Também são uma boa alternativa para iniciar a decomposição de monolitos. Entretanto, implica na adoção de outro mindset e pode conduzir a dificuldades geralmente associadas a EDA.
  • Os benefícios

    De forma geral, soluções serverless são potencialmente mais baratas de desenvolver e manter. Também são alternativa "econômica" para experimentar microsserviços. Entretanto, é importante ter consciência de potencial "lock-in".

Mais posts da série Serverless Architectures 101

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *