Arquitetura Serverless: explorando seu funcionamento, aplicações e vantagens
Em um cenário tecnológico em constante transformação, a adoção de arquiteturas serverless surgiu como uma nova solução para desenvolvedores e empresas.
Mas o que isso significa na prática? E mais: quais os impactos disso para os seus projetos?
Neste artigo, vamos explorar tanto o “como” quanto o “porquê” dessa arquitetura e o quanto ela pode impactar você e sua empresa.
Pensando nisso, vamos compreender os seguintes tópicos:
- O surgimento dos serviços serverless, destacando seu conceito e funcionamento; e
- Analisaremos suas vantagens e desvantagens, diferenças e exemplos.
Continue sua leitura e venha comigo explorar a arquitetura serverless :)
O que é a arquitetura serverless?
Ao contrário do que o seu nome pode indicar, uma estrutura serverless (“sem servidor”) ainda faz uso de servidores. Nesse caso, a diferença está no gerenciamento.
A gestão de servidores pode ser demorada e exigir muitos recursos.
Então, com o uso de uma arquitetura serverless, essas responsabilidades são designadas a um provedor de serviços terceirizado, permitindo que as pessoas desenvolvedoras se concentrem na criação do código da aplicação.
Breve histórico da arquitetura serveless
A história da arquitetura serverless começou nos servidores físicos para rodar as aplicações.
Nesse contexto inicial, o desafio de escalabilidade estava em garantir servidores poderosos o suficiente para suprir as demandas.
Por um lado, havia a opção de comprar uma única máquina com capacidade além do necessário, o que acabava em mais gastos.
Por outro lado, várias máquinas mais fracas eram utilizadas em conjunto, que forneciam maior controle sobre o uso de servidores e, consequentemente, sobre os gastos.
A abordagem que se seguiu a partir de então foi a de virtualização, onde ocorria a simulação do hardware através de software.
Por conta disso, houve diminuição na compra de hardwares, o que ocasionou na diminuição dos custos.
Em seguida, deu-se início a era da Cloud, começando com IaaS (Infrastructure as a Service ou “Infraestrutura como serviço”).
A IaaS funciona por demanda, fornecendo a infraestrutura de servidores, armazenamento e conexão, enquanto devs cuidam de toda a sua aplicação, como software, dados e serviços.
Após a IaaS, veio o PaaS (Platform as a Service ou “Plataforma como serviço”), que fornece uma plataforma com a infraestrutura para criar e gerenciar as aplicações, fazendo com que os desenvolvedores fiquem responsáveis apenas pela tecnologia utilizada, dados e serviços.
A arquitetura serverless seguiu a ideia do PaaS, fornecendo uma plataforma para gerenciar toda a infraestrutura por trás das aplicações.
Agora que conhecemos o seu histórico, vamos entender mais a fundo o seu funcionamento.
Como a arquitetura Serverless funciona?
A arquitetura serverless oferece a possibilidade de criar e implementar suas aplicações sem a necessidade de gerenciar uma infraestrutura por trás. Um exemplo muito utilizado é FaaS (Function as a Service).
A seguir, vamos entender o que é uma FaaS e como ocorre o funcionamento de uma arquitetura serverless.
FaaS
A FaaS é um tipo de serviço em nuvem que possibilita aos desenvolvedores escreverem funções que serão acionadas por eventos específicos.
Esse serviço é responsável por cuidar da parte de infraestrutura dos servidores, gerenciamento de recursos e escalabilidade.
Em comparação a outros serviços em nuvem, que cobram por cada minuto em que a aplicação está sendo executada, independente de estar sendo acessada ou não, as funções serverless consomem recursos apenas durante o seu acesso, ou seja, quando necessário.
Dessa forma, os custos de uso de uma arquitetura serverless são reduzidos, o que possibilita uma utilização mais eficiente dos recursos.
Etapas do funcionamento da arquitetura serverless
A arquitetura serverless muda a maneira como as aplicações são desenvolvidas e operadas, oferecendo aos desenvolvedores uma abordagem eficiente e descomplicada para a execução de código em ambientes de nuvem.
Para explorar o funcionamento da FaaS, vamos destacar cinco etapas, as quais podemos conferir a seguir:
- 1. Criação das funções: A primeira etapa consiste na criação das funções que serão utilizadas quando os eventos forem acionados. As funções são capazes de chamar outras funções, processar dados ou conectar-se a bancos de dados e serviços de terceiros.
- 2. Deploy das funções: Com as funções criadas, os desenvolvedores realizam o seu deploy para um provedor de nuvem.
- 3. Provedor de nuvem: O provedor, por sua vez, realiza todo o gerenciamento do servidor e infraestrutura.
- 4. Acionamento da função: Uma vez que a função é acionada por um evento, o provedor é responsável por executar a função em um servidor.
- 5. Cobrança: A cobrança é realizada em cima do tempo de execução das funções.
Todo esse processo é realizado de forma independente por parte do provedor, mantendo os desenvolvedores ocupados apenas com o desenvolvimento da aplicação.
Vantagens e desvantagens da arquitetura serverless
O levantamento dos prós e contras consiste em uma etapa importante na tomada de decisão sobre qual arquitetura utilizar, o que nos permite entender quais são seus benefícios e desafios.
Desde a redução de custos e a escalabilidade automática até a perda de controle e questões de desempenho, podemos compreender como essa abordagem impacta o desenvolvimento e operação de aplicações.
Pensando nisso, vamos conhecer algumas das vantagens e desvantagens da arquitetura serverless.
Vantagens
- Custo reduzido: Como o custo é calculado sobre o tempo de consumo na execução das funções, os custos operacionais são reduzidos.
- Escalabilidade: As funções serverless ajustam automaticamente os recursos para atender à demanda, permitindo escalabilidade sem intervenção manual.
- Riscos reduzidos: Devido ao foco no gerenciamento da infraestrutura por parte dos provedores, as aplicações correm menos riscos de violação de segurança.
- Rapidez no desenvolvimento: O gerenciamento da infraestrutura por um terceiro resulta na aceleração do desenvolvimento das aplicações.
Desvantagens
- Perda de controle: Em caso de problemas no servidor, a aplicação é totalmente dependente do provedor, principalmente em casos onde todos os serviços pertencem a um mesmo provedor.
- Performance: Por conta do seu funcionamento por demanda, onde há um tempo de inatividade, as funções podem levar um tempo a mais para começarem a ser executadas.
- Execução a longo prazo: Para aplicações que precisam de muito tempo de execução, o custo total de uso pode ser superior ao de uma infraestrutura não serverless.
Após entendermos as vantagens e desvantagens da arquitetura serverless, é importante explorar onde exatamente esses serviços são aplicados.
Vamos agora analisar alguns casos de uso específicos, destacando como a arquitetura serverless é aproveitada em diferentes cenários e setores.
Onde os serviços Serverless são utilizados?
Desde o processamento de fluxos de dados até a transformação de microsserviços complexos em unidades mais gerenciáveis, vamos conhecer alguns casos de uso da arquitetura serverless.
Processamento de fluxo de dados: As funções serverless são capazes de responder em tempo real a fluxos de dados. Essa capacidade oferece uma base para a construção de pipelines e aplicativos de streaming em tempo real.
Microsserviços: A arquitetura serverless permite que serviços complexos sejam transformados em serviços mais simples que funcionam em conjunto, onde cada serviço pode ter seu próprio crescimento.
Backend de APIs: Ao processar APIs, permite que os desenvolvedores lidem com o backend das aplicações, como gerenciamento de banco de dados, autenticação de usuário e envio de notificações, sem precisar gerenciar diretamente servidores.
Pipelines ETL: O serverless permite que tarefas de ETL (Extract, Transform, Load) sejam acionadas de forma agendada, sem a necessidade de manter servidores executando continuamente.
Dessa forma, entendemos os diversos casos de uso onde os serviços serverless são aplicados.
Agora, veremos como empresas e devs utilizam essa arquitetura para construir e escalar suas aplicações de forma eficiente e flexível.
Exemplos de serviços Serverless na AWS
A AWS (Amazon Web Services) foi a pioneira na adoção da arquitetura serverless, contando com diversos serviços no seu catálogo.
A seguir, vamos conferir alguns deles, separados por suas categorias:
Computação: O AWS Lambda é um serviço orientado a eventos que permite a execução de código para qualquer tipo de aplicação.
Integração de aplicações: O Amazon API Gateway é uma opção para criar, publicar e gerenciar APIs em qualquer escala.
Armazenamento de dados: O Amazon S3 consiste em um serviço utilizado para armazenar dados em qualquer quantidade de qualquer lugar.
Análise: O AWS Glue é um serviço de integração de dados utilizado para realizar a preparação de dados de forma simplificada e escalável.
Para conhecer outros serviços serverless fornecidos pela AWS, confira a sua página sobre computação sem servidor.
Com isso, exploramos alguns exemplos de serviços serverless na AWS. Por fim, vamos compará-los com as abordagens não serverless.
Veremos como essas duas arquiteturas se diferenciam em termos de desempenho, custo e gerenciamento, auxiliando na escolha da melhor solução para cada aplicação.
Serviços Serverless x Não Serverless
Podemos traçar um comparativo entre serviços serverless e não serverless, como é o caso dos serviços AWS Glue e Amazon EMR.
Eles fazem parte da categoria de Análise, e podem ser usados, por exemplo, para realizar processamento de dados.
Nesse contexto, podemos verificar as principais diferenças entre os dois serviços:
- Benefícios:
AWS Glue:
- Por ser serverless, é totalmente gerenciado, facilitando a configuração e manutenção.
- Suporta transformações ETL sem a necessidade de provisionamento de infraestrutura.
- Integração fácil com outros serviços AWS.
Amazon EMR:
- Oferece escalabilidade horizontal para processamento de grandes volumes de dados.
- Suporta uma variedade de frameworks de código aberto, como Apache Spark e Hadoop.
- Permite personalização avançada para cargas de trabalho específicas.
- Quando Usar:
AWS Glue:
- Recomendado para cargas de trabalho ETL automatizadas e gerenciamento de metadados.
- Ideal para cenários onde a facilidade de uso e a automação são prioridades.
Amazon EMR:
- Indicado para cargas de trabalho de big data que exigem processamento distribuído.
- Cenários que envolvem frameworks de código aberto, como Spark, Hadoop e HBase.
- Preços:
AWS Glue:
- Uma taxa é paga por hora, cobrada por segundo, por crawlers e trabalhos de exatidão, transformação e carregamento (ETL).
- Preços baseados na quantidade de dados processados e nos metadados armazenados.
- Modelo de pagamento por demanda, de acordo com o uso dos recursos.
Amazon EMR:
- Cobrado uma uma taxa por segundo para cada segundo usado, com um mínimo de um minuto.
- Modelo de preços sob demanda, dependendo da flexibilidade de uso.
- Custos associados à escolha de instâncias EC2 e armazenamento.
Ambos os serviços têm seus méritos e são escolhidos com base nas necessidades específicas do projeto, com o AWS Glue se destacando nos seus benefícios serverless, como automação e facilidade de uso, enquanto o Amazon EMR é preferido para cargas de trabalho mais complexas de big data.
Para conferir mais detalhes sobre os dois serviços, acesse suas páginas na AWS:
Conclusão
Neste artigo, apresentamos uma visão geral da arquitetura serverless. Durante a leitura, fomos capazes de:
- Compreender a definição do que é e como funciona a arquitetura serverless;
- Destacar as vantagens e desvantagens dessa arquitetura;
- Descrever casos dessa arquitetura;
- Listar exemplos de serviços serverless na AWS;
- Comparar serviços serverless e não serverless.
Por fim, caso queira se aprofundar ainda mais seus estudos nos conteúdos abordados neste artigo, sugiro a nossa Formação Data Lake AWS na qual temos um time de especialistas que vai te ajudar a alavancar ainda mais sua carreira e capacitar você a adquirir cada vez mais conhecimento na área.
Um abraço e até mais.
Créditos
- Conteúdo: Marcelo Cruz
- Produção técnica: Rodrigo Dias
- Produção didática: Tiago de Freitas
- Designer gráfico: Alysson Manso
- Apoio: Ana Hashimoto e Rômulo Henrique