Serverless é uma tecnologia que se utiliza da computação em nuvem para o desenvolvimento de aplicações com alto desempenho.
Um de seus princípios é garantir o melhor funcionamento de aplicações sem a necessidade de gerenciamento de servidores.
Pensando nisso, esse artigo foi desenvolvido para apresentar o que é Serverless, as vantagens de utilização e para que ele é indicado.
Continue acompanhando esse material e fique por dentro do assunto!
Por que utilizar tecnologias como Serverless?
Um arquiteto de software irá se deparar com diversos tipos de projeto durante sua carreira e precisará ter as habilidades necessárias para decidir quais serão os melhores padrões a serem adotados para resolver certos problemas.
Para clarificar isso, é necessário perceber que o mundo teórico é muito diferente da prática e dependendo da sua corporação é necessário lidar com sistemas legados.
Estes monolitos mantêm todas as operações acopladas em um único lugar, e nem sempre as corporações estão dispostas a gastar alguns milhões para reescrevê-lo a fim de incorporar novas tecnologias aderentes aos padrões do mercado.
Implementar tais tecnologias se tornam muito mais simples quando projetamos uma aplicação do zero porque temos a oportunidade de analisar cada aspecto deste software e como pode ser projetado para ter alta disponibilidade, escalabilidade e manutenibilidade.
Cada projeto é único e a experiência do arquiteto e seu conhecimento em diferentes cases, considerando aspectos positivos e negativos, devem ser levados em consideração.
Sua experiência vai auxiliar na identificação dos gargalos da aplicação, desacoplando-os, evitando sua degradação e diminuindo o investimento necessário para mantê-la estável.
Use Serverless para desacoplar sua aplicação e aumentar sua disponibilidade
Alguns tipos de arquiteturas podem ser levadas em consideração para realizar este desacoplamento, sendo importante conhecê-las para saber como e quando utilizá-las.
Entre diversos padrões podemos destacar microservices e serverless.
Arquitetura monolítica, de micro serviços e serverless:
Fonte: Do Autor, 2021
Os microservices baseiam-se em múltiplos componentes para desenvolver uma estrutura modular, decompondo a aplicação em funções básicas que permitem sua implantação de forma isolada.
Eles garantem que mesmo em caso de falhas os demais recursos do sistema não sejam comprometidos.
Já a monolítica mantém todos os serviços concorrendo entre si e permite que o desempenho de um processo interfira no outro, comprometendo sua estabilidade.
Apesar do microservice ser uma boa opção para permitir auto scaling, existem funções que podem demandar muitos recursos computacionais para completar uma carga de trabalho.
Também podem haver picos de processamento com muita sazonalidade, podendo gerar alto custo com infraestrutura cloud.
Nestes cenários, mas não se limitando a isso, podemos considerar o uso de Serverless, que na sua tradução liberal significa sem servidor, mas não é bem isso que significa, conforme veremos a seguir:
Desafios da solução Serverless
O Serverless permite que recursos de cluster sejam alocados apenas no momento que são requisitados a partir de provedores de eventos.
Isso significa que não exigirá cobranças adicionais pelas horas ociosas, ou preocupação com a escalabilidade da sua aplicação, pois os provedores de serviços (IaaS) irão gerenciar de forma automática isso para você.
Então você pode ter um provisionamento gradativo onde em dados momentos podem ser processados centenas ou milhares de requisições.
No final, você irá pagar apenas pela fração de recursos utilizada em cada processamento, de acordo com a necessidade exigida, com a vantagem de que os momentos ociosos não serão cobrados em sua fatura.
Porém algo que parece simples está longe de ser trivial, o primeiro desafio é tomar a decisão em relação a como você vai projetar o uso de Serverless.
Em alguns modelos você ficará preso ao provedor de serviços que disponibilizam suas próprias soluções FaaS (Function-as-a-Service), como é o caso de:
- AWS Lambda (AWS),
- Azure Functions (Microsoft),
- Google Cloud Functions (Google)
- e IBM Cloud Function (IBM),
Ou você poderá utilizar tecnologias open source que lhe darão uma maior flexibilidade para navegar entre os provedores, como por exemplo: OpenFaaS, uma vez que estas soluções podem ser embarcadas em Kubernetes.
Fonte: OpenFaaS, 2021
Como dito antes, não existe uma bala de prata para resolver todos os problemas computacionais.
É preciso se utilizar das tecnologias certas e com maior aderência para a resolução de problemas de determinados cenários.
Desta forma, vamos destacar as principais vantagens e desvantagens ao implementar uma solução Serverless.
Vantagens
- Desenvolva e lance atualizações rapidamente para o mercado;
- Deixe sua equipe focada no seu negócio não da infraestrutura;
- Escalabilidade integrada e automática;
- Redução de custos de infraestrutura.
Desvantagens
- Sem controle operacional da sua infraestrutura;
- Mais complexidade para realizar testes;
- Possibilidade de restrições sobre como você pode desenvolver sua aplicação BaaS, dependendo do seu provedor de serviços;
- Menor flexibilidade para adoção de stacks personalizadas;
- Possibilidade de criar dependências com recursos nativos do provedor tornando mais complexo realizar uma migração;
- Processos com limitação máxima de 15 minutos para serem concluídos.
Aplicabilidade para resolução de problemas
Pense em FaaS como uma pequena fração do seu sistema que pode ser escalado facilmente.
Você pode utilizá-lo para processamento de cargas de trabalho com alto volume de dados e que exijam execuções de forma paralela ou ainda que exijam conversão de formatos, codificação ou agregação de dados.
De forma prática, processos que consomem muita CPU e levam horas para serem finalizados com arquiteturas tradicionais podem ser gerados rapidamente se embarcados em um modelo Serverless com o uso de FaaS.
Segundo a IBM, uma simulação de Monte Carlo levou apenas 90 segundos para gerar os resultados esperados utilizando 1.000 invocações simultâneas de uma implementação FaaS contra 247 minutos em um laptop com quatro núcleos e com uso de aproximadamente 100% de CPU durante o período de processamento.
A Amazon AWS também apresenta casos de uso para o desenvolvimento de Aplicações Web, Processamento de dados, processamento em lotes e Consumo de eventos.
Tudo isso utilizando tecnologias embarcadas em sua plataforma rodando com a arquitetura Serverless.
Resumidamente, uma abordagem serverless permitirá aos desenvolvedores mitigar os riscos em torno do gerenciamento de servidores, infraestrutura e partes do software que agrega um valor intangível à seus clientes.
Ele facilita a entrega de novos recursos do software, melhorando a velocidade de entrega de sua equipe, ao mesmo tempo que fornece um modelo com custo reduzido de serviços cloud.
Arquitetura de Software é com a Accurate
Na Accurate estamos sempre inovando e antenados às novas tecnologias para oferecer o melhor aos nossos clientes.
Além disso, estamos sempre em busca de novos talentos para agregar ao nosso time, acesse a nossa página de carreiras e cadastre seu currículo.
Não deixe também de acompanhar e compartilhar esse e os outros conteúdos do Blog da Accurate.
Nos siga também nas Redes Sociais e fique por dentro de tudo o que acontece na empresa: Facebook, Instagram, Twitter e Linkedin.
Autor
- Graduado em Ciências da Computação e Pós Graduado em Qualidade de Software, atua a mais de 15 anos em projetos de ponta desempenhando papéis de arquiteto de software, liderança de times e desenvolvedor, além de ajudar a formar novos profissionais como professor universitário há mais de 10 anos.