Aplicações Serverless: quais as vantagens de usar esta arquitetura? - Viceri
Aplicações Serverless: quais as vantagens de usar esta arquitetura?
Neste texto vamos falar sobre aplicações serverless, o que são e quais as vantagens de usar esta arquitetura. O principal ponto de uma Arquitetura Serverless, é propiciar que empresas de software criem e mantenham aplicativos web sem se preocupar com a infraestrutura em que eles estão funcionando. Mas antes de entrar neste tema, vamos recapitular algumas coisas que já falamos aqui no blog e falar sobre as arquiteturas existentes.
Arquitetura Monolítica é quando uma única aplicação de software em camadas contém a interface do usuário, as regras de negócio e código de acesso a dados. Tudo isso são combinados em apenas um único programa e uma única plataforma. Então, uma aplicação monolítica é autônoma e independente de outras aplicações.
É uma arquitetura simples de desenvolver, simples de testar e de implementar, porém, tem também suas desvantagens. É difícil de escalar: quando você precisar escalar essa aplicação ou fazer com que ela tenha maior disponibilidade, precisa escalar a aplicação inteira. Isso se torna inviável, o custo fica muito alto, e conforme essa aplicação cresce, complica a manipulação. Depois disso vieram os microsserviços, para solucionar esses problemas.
A Arquitetura de Microsserviços é uma arquitetura de software diferente do monolito, no qual sistemas grandes e complexos são transformados em componentes individuais. Eles são quebrados e cada um fica espalhado com sua responsabilidade. As vantagens dos microsserviços são a sua escalabilidade distribuída, ou seja, não é preciso crescer a aplicação inteira para solucionar um problema, podemos escalar apenas recursos específicos. Deploys mais rápidos e não ficamos presos a uma linguagem de programação.
Ou seja, se quisermos fazer um componente em java, um outro componente em C# (C Sharp), podemos porque eles são diversas soluções com pequenas responsabilidades. As desvantagens dos microsserviços são: a complexidade de se manter, e se os serviços não forem bem definidos, viram uma bagunça.
◼️ Leia também: Como transformar seu monolito em microsserviço
Iniciamos falando dessas arquiteturas porque elas enfrentam um problema ainda com o gerenciamento e controle de servidores, ou seja, você precisa de um servidor em funcionamento para que a aplicação continue em funcionamento, independente se está em uso ou não. Os microsserviços já solucionam muitos problemas em relação a escalabilidade, porém, ele ainda não solucionou o problema da ociosidade, ou seja, se o microsserviço está ativo, ele está ocupando recursos gerando custos mesmo em ociosidade.
Então, aí entra a Arquitetura Serverless. Embora o seu nome signifique "sem servidor", na tradução literal, não é bem assim que funciona. A aplicação continua funcionando em um servidor, porém o gerenciamento do servidor ficará por conta de um provedor de nuvem. Um desenvolvedor não precisará se preocupar com configurações relacionadas a infraestrutura em que sua aplicação irá funcionar. Essas decisões ficarão por conta da nuvem.
Existem algumas formas de construir aplicações serverless. Vamos tratar sobre BaaS (Backend as a Service). Backend as a Service é uma plataforma que automatiza o desenvolvimento de backend e gerencia a infraestrutura na nuvem. Com o BaaS você precisará apenas focar em desenvolvimento no core do seu sistema. O Backend as a service possui um conjunto de recursos para agilizar o desenvolvimento como APIs, integração com mídia social, armazenamento de arquivos e notificações push.
E quais são as razões para utilizar o Backend as a Service? O objetivo do BaaS é de reduzir o tempo total de desenvolvimento da aplicação, dando velocidade ao desenvolvimento de um sistema e reduzindo custos. Você foca apenas no core do sistema se preocupando apenas com a necessidade real do seu cliente. E por ser serverless, não tem gerenciamento sobre infraestrutura, isso fica por conta do Backend as a Service.
Além do BaaS existe também o FaaS, ou Function as a Service. É um modelo de execuções de funções orientados a eventos executado em containers stateless, ou seja, não armazena dados, apenas os processam. Simplificando um pouco, FaaS é uma maneira de executar funções de negócio acionadas por um determinado evento.
Quais as vantagens de usar FaaS? Um dos principais motivos para utilizar FaaS, é seu modelo de cobranças, as cobranças são feitas em relação ao tempo de processamento dessas funções, ou seja, caso elas estejam ociosas, não será cobrado valor algum, diferentemente das arquiteturas monolítica e de microsserviços que precisam de servidores e clusters ativos para mantê-los ativos mesmo sem uso.
Agora que sabemos de serverless, abaixo vou citar algumas ferramentas que possibilitam a construção de uma arquitetura onde não precisaremos nos preocupar com infraestrutura.
O AWS Lambda é a ferramenta de FaaS da AWS no qual permite executar código backend sem precisar provisionar ou gerenciar servidores cobrando apenas pelo tempo de processamento das funções.
O Google Firebase é a ferramenta de BaaS da Google. Com ele é possível agilizar o desenvolvimento de sistemas web ou mobile. No Firebase temos a possibilidade de facilitar o envio de notificações push, ter uma análise do comportamento dos usuários do seu aplicativo utilizando o Firebase Analytics e com o Firebase Authentication é possível fazer o controle de autenticações do seu sistema de uma forma segura e dinâmica. Essas são algumas das ferramentas que o Firebase possui para agilizar o desenvolvimento backend do seu sistema e, claro, tudo isso sem gerenciar infraestrutura.
O S3 é uma ferramenta da AWS para armazenamento de objetos. Tem uma interface simples e você consegue armazenar e recuperar qualquer quantidade de arquivos. Sua precificação fica por conta da quantidade de arquivos armazenados nessa plataforma, ou seja, será pago apenas pelos arquivos armazenados.
O DynamoDB é um serviço de banco de dados nosql, que possui uma capacidade escrita e leitura muito rápida e segura, e é totalmente gerenciado com segurança e backups. Sua precificação pode ser controlada de duas maneiras, em uma delas, é cobrado por leituras e gravações que a aplicação faz nas tabelas, não será necessário especificar uma taxa de transferência para essas execuções, pois o Dynamo irá se ajustar de acordo com a demanda. E no outro modo é possível especificar a taxa de transferência da sua aplicação e seu custo pode ser controlado.
O API Gateway é um serviço que permite desenvolvedores criar APIs REST (Representational State Transfer) totalmente escalável e distribuído sem ter que cuidar de infraestrutura. Sua precificação fica por conta do número de chamadas que suas APIs recebem e quantidade de dados que são transferidas.
Para concluir, vimos que com a arquitetura serverless é possível ter as vantagens da escalabilidade e a computação distribuída, sem necessidade de provisionamento e gerenciamento de infraestrutura, e o custo da sua aplicação será proporcional a sua utilização.
Gostou deste conteúdo? Confira outros conteúdos no nosso Instagram ou fale com um de nossos especialistas.