O que é serverless?

Serverless é um modelo computacional amplamente utilizado na criação de aplicações web modernas. Entenda como a tecnologia funciona e as vantagens em adotá-la.

Paulo Moura - Technical Researcher
O que é serverless?

Serverless (ou computação serverless) é um modelo de desenvolvimento e execução de software onde o provedor de cloud é responsável por executar um pedaço de código (ou função), alocando os recursos dinamicamente, o que permite aos desenvolvedores construir códigos sem se preocupar com tarefas operacionais, como provisionamento de infraestrutura e configuração de rede. Aliás, o termo “serverless” se dá pelo fato de os servidores serem “invisíveis”para o desenvolvedor.

Tradicionalmente, aplicações web são construídas e implementadas em um servidor gerenciado pela própria empresa. Embora se tenha mais controle sobre os recursos de infraestrutura com esse tipo de abordagem, isso implica uma série de responsabilidades que impactam custos, performance e produtividade, como:

  • manter o servidor no ar – mesmo quando ocioso;
  • realizar a manutenção do servidor e de todos os seus recursos;
  • aplicar atualizações de segurança apropriadas;
  • provisionar recursos de hardware para atender às demandas.

Um meio de tirar esses desafios do caminho é a migração para o serverless. Isso porque, na computação serverless, tudo relacionado à infraestrutura é responsabilidade do provedor de serviços, enquanto as organizações substituem o provisionamento de recursos por um modelo de pagamento no qual o consumo é baseado na quantidade de recursos computacionais utilizados para entregar cada requisição do usuário.

Como funciona a computação serverless?

A arquitetura serverless é composta por um conjunto de serviços que engloba, entre outros componentes: Function-as-a-Service, banco de dados e armazenamento de objetos, transmissão e mensageria de eventos, e gateway de API. Abaixo, exploramos em mais detalhes o que cada um desses componentes faz.

Function-as-a-Service (FaaS)

FaaS é um tipo de serviço de cloud que executa códigos em resposta a eventos ou requisições pelos quais o desenvolvedor implementa códigos sem interagir com o hardware físico. É também por meio do FaaS que os custos são calculados apenas quando os recursos são efetivamente utilizados e a escalabilidade acontece automaticamente.

Banco de dados e armazenamento de objetos

Um banco de dados serverless reúne as funcionalidades de um banco de dados tradicional e as características da arquitetura serverless, como escalabilidade automática – de acordo com a demanda –, pagamento baseado no consumo e infraestrutura gerenciada pelo provedor. Já o papel do armazenamento de objetos é lidar com grandes quantidades de dados não estruturados – algo que abordagens tradicionais são incapazes de fazer.

Transmissão e mensageria de eventos

A transmissão e mensageria de dados funciona por meio de plataformas distribuídas de transmissão de dados, como Apache Kafka. É por aqui que os eventos são recebidos e transmitidos tanto para o banco de dados (onde são armazenados) quanto para o serviço FaaS, pelo qual é acionado o gatilho para que cada função seja invocada dentro dos parâmetros da respectiva requisição – caso aconteça alguma falha nesta etapa, o evento é salvo em uma fila de armazenamento para que seja executado posteriormente.

Gateway de API

Um gateway de API (ou API gateway) atua como um proxy reverso para aceitar todas as requisições destinadas às APIs. Autenticação de usuário, roteamento, e rate limiting são exemplos de tarefas comuns executadas por API gateways, entre outras funções de gerenciamento que viabilizam o provisionamento de infraestrutura em uma arquitetura serverless e recursos para integração e interconectividade via API.

Prós e contras do serverless

Agora que conhecemos os principais componentes da arquitetura serverless, que tal explorarmos mais profundamente os prós e contras a serem considerados na hora de decidir pela migração? Confira alguns dos principais fatores.

Prós

Aumento de produtividade do desenvolvedor

O aumento de produtividade é um dos principais benefícios do serverless. Imaginemos seu time de devs como uma banda em turnê. Se os integrantes precisam transportar e instalar os equipamentos antes de cada show, obviamente isso afeta toda a preparação. Mas se a banda tem suporte de uma equipe de backstage, ela pode se concentrar apenas na apresentação, o que melhora o resultado final. O mesmo acontece com os desenvolvedores, que passam a concentrar todos os seus esforços e talento no desenvolvimento, sem se distrair com questões de hardware.

Experiência do desenvolvedor

Migrar para o serverless é também um grande passo para otimizar a experiência do desenvolvedor (developer experience – DX) e, com isso, atrair e reter talentos para a empresa. Para se ter ideia do quanto isso é importante, estudos revelam que 53%[1] dos profissionais da área priorizam DX ao analisar uma oportunidade de emprego.

Além de poupar o desenvolvedor de interações com a infraestrutura, a computação serverless permite que implementações e atualizações de software sejam feitas rapidamente, visto que não é preciso promover mudanças em toda a aplicação, e sim atualizar a função individual e isoladamente.

Pagamento apenas por execução

No modelo de pagamento por execução (ou pay-as-you-go), diferentemente de outros, onde o cliente paga pelos recursos computacionais necessários para executar suas aplicações, no modelo serverless a contagem se inicia quando uma requisição é feita e termina quando sua execução é concluída. Se nenhuma requisição chega ao servidor, o cliente não paga absolutamente nada.

Microsserviços

Na computação serverless, em vez de aplicações monolíticas, os desenvolvedores passam a construir microsserviços, que são compostos por funções que executam uma única tarefa de forma individual e independente. Alguns dos benefícios de microsserviços são:

  • tolerância a falhas;
  • ciclos de desenvolvimento mais curtos;
  • facilidade para implantações;
  • reutilização de códigos.

Saiba mais sobre microsserviços e a diferença em relação a arquiteturas monolíticas neste blog post.

Contras

Vendor lock-in

Vendor lock-in (ou aprisionamento tecnológico) é um contraponto a uma das maiores vantagens do serverless. Por um lado, os desenvolvedores se concentram no que fazem de melhor; por outro, alguns provedores não oferecem uma plataforma com padrões abertos, de modo que a equipe tenha de reescrever – total ou parcialmente – um código para implementar o mesmo serviço em outro provedor.

Monitoramento e depuração

A arquitetura de microsserviços contribui para a construção de aplicações altamente complexas. Se o time não dispõe de soluções que facilitem o monitoramento ou depuração de falhas ou vulnerabilidades existentes na aplicação, a própria complexidade se torna uma desvantagem.

Latência

Uma das principais desvantagens do serverless é a latência decorrente de um processo conhecido como cold start – entenda mais sobre a relação entre cold start e serverless neste artigo. Isso acontece quando uma função é inicializada do zero para atender a uma solicitação, resultando em queda de performance e atraso na execução, o que pode comprometer a experiência do usuário.

Felizmente, a computação serverless tem avançado consideravelmente nos últimos anos a ponto de essas limitações mencionadas acima, decorrentes das limitações de cloud computing, já não serem mais um obstáculo. A seguir, falaremos sobre o serverless nessa sua forma evoluída: o edge serverless.

O que é edge serverless?

Quando falamos no futuro digital e todos os requisitos que ele reserva para aplicações web, chega o momento de pensarmos em como mover a computação serverless para o próximo nível, pois cloud computing, por si só, tem limitações que se tornaram mais evidentes na medida em que as aplicações se modernizaram. Para dar esse passo adiante, as organizações estão complementando suas infraestruturas com edge computing.

Basicamente, edge computing leva a computação para o local mais perto possível do dispositivo final – o qual pode ser uma infinidade de coisas, como smartphones e sensores IoT. Logo, edge serverless consiste na execução de funções serverless em uma infraestrutura altamente distribuída, algo imprescindível para aplicações de missão crítica, que têm de entregar melhor desempenho, máxima disponibilidade e níveis mínimos de latência.

A Plataforma de Edge da Azion, por exemplo, permite a implantação de códigos serverless em uma ampla edge network. Com suporte a WebAssembly, os códigos podem ser otimizados por um conjunto de soluções edge-native capazes de levar o desenvolvimento de aplicações ao estado da arte em termos de confiabilidade, performance, segurança, disponibilidade e observabilidade. Você pode testar a plataforma gratuitamente, aqui.

Além da possibilidade de construir aplicações performáticas, o uso de edge serverless resulta em uma infraestrutura de TI expandida em escala global e NoOps a um custo significativamente mais baixo em comparação a qualquer outro modelo computacional. Inclusive, o aumento de receita obtido com a entrega de soluções e serviços mais rápidos tende a ultrapassar o investimento no edge serverless facilmente, visto que 59%[2] dos clientes estão dispostos a pagar mais por uma ótima experiência.

Como a Azion ajuda desenvolvedores a extraírem o máximo da computação serverless?

A Plataforma de Edge Computing da Azion permite que organizações contem somente com as vantagens da computação serverless com um grande acréscimo de performance. Uma das razões para isso é a nossa edge network globalmente distribuída, que abrange até mesmo regiões onde a infraestrutura de redes é hostil, de difícil alcance, e garante a entrega de requisições com alta performance em qualquer lugar.

Mais do que viabilizar a implementação de aplicações serverless que exigem níveis de latência mínimos, a Azion utiliza padrões abertos que habilitam a integração com qualquer provedor de cloud, eliminando o problema de vendor lock-in existente em muitos fornecedores de serverless. Logo, se a sua empresa faz uso de multicloud, seu time será beneficiado, podendo desenvolver aplicações com mais agilidade.

Por fim, a nossa plataforma oferece um conjunto de soluções de observabilidade que facilita o monitoramento de aplicações ao fornecerem dados de eventos ricos em detalhes, os quais podem ser transmitidos diretamente para a sua plataforma de análise em tempo real. Veja como o GetNinjas, maior site de contratação de serviços do Brasil, chegou a descobertas únicas com a Azion.

Inscreva-se na nossa Newsletter