AzureGestão de TI

Nuvem, obrigado pelo Serverless

Antes de falar sobre o que é “Serverless”, vamos ver um pouco da história da evolução das plataformas. Isso vai nos ajudar a entender melhor esse paradigma.

A evolução das plataformas de aplicação

On-Premises

Antigamente, com a estrutura “On-Premises”, aquela que você mantinha localmente, muitas coisas, muitos requisitos, muitas questões precisavam ser respondidas antes de colocar sua aplicação para rodar; todas voltadas a infraestrutura e não ao core da aplicação, ao core dos negócios. Dessa forma, perdia-se muito tempo, era impossível dimensionar os recursos corretamente e perdia-se muito dinheiro.

IaaS

Com o advento da computação em nuvem, surgia então a Infraestrutura como serviços – IaaS, onde o provedor de nuvem hospeda o servidor físico pra você. Ela conseguiu eliminar algumas perguntas relacionadas aos recursos físicos, mas várias ainda precisavam ser respondidas, e o foco permanecia no dimensionamento e manutenção dos recursos, deixando a aplicação para um segundo momento.

PaaS

Então surgiu a Plataforma como serviço – PaaS e as questões relacionadas a infraestrutura deixaram de ser uma preocupação da equipe. Tudo passou a ser gerenciado pelo provedor de nuvem. Um grande avanço que simplificou bastante o processo de desenvolvimento e deployment das aplicações. Porém, questões de escalabilidade e o correto dimensionamento ainda precisavam de análise para se chegar a uma resposta aproximada.

Serverless

Finalmente chegamos ao Serverless. Onde as questões sobre infraestrutura foram completamente abstraídas, e o foco, enfim, está no core da aplicação juntamente com o negócio. E a única pergunta a ser respondida é “Como vamos construir a aplicação para obter os melhores resultados para o negócio?”. Isso muda completamente as coisas, transformando a TI em um catalisador de inovações para trabalhar ao lado do negócio e não mais apenas o suportando.

O que é Serverless?

Depois dessa breve passada pelos estágios das plataformas de aplicações, ficou mais tranquilo responder, afinal, o que é Serverless. É, como a tradução do nome pressupõe, uma estrutura “sem servidores”. Os servidores existem hospedando os serviços e suas execuções, mas que isso passa a não fazer diferença para o desenvolvimento. Essa camada é completamente abstraída, bem como a própria infraestrutura de nuvem. Escalabilidade, dimensionamento e poder computacional deixam de ser uma preocupação aqui. Seu código irá rodar para uma ou um milhão de requisições, e a cobrança é pelo tempo de execução. Não se utiliza nem mais nem menos recursos, apenas o necessário. Você só precisa ase concentrar na lógica, em resolver os problemas do negócio. O foco passa a ser a inovação.

“The future is going to be serverless” – Jeremy Edberg, Reliability Architect for Netflix

Benefícios

O PaaS trouxe um grande avanço no tocante a abstração da infraestrutura. O Serverless foi além, e abstraiu a infraestrutura da nuvem. Questões como escalabilidade, quanto de CPU e memória é preciso, não são problemas com os quais você precisa se preocupar, isso é feito de forma automática e transparente. O que você quer é executar seu código, e é isso que você vai ter. Simples assim. O foco muda completamente, e vai pra onde sempre deveria estar, na lógica do negócio, em criar soluções.

Outro ponto interessante é que você não precisa levar toda sua aplicação para essa estrutura. É possível, em sistemas altamente desacoplados, os micro serviços, levar apenas uma parte dele. Imagine um sistema que tenha picos de acesso durantes alguns períodos, mover o serviço que processa essas operações para Serverless evita que toda sua aplicação escale de forma desnecessária, economizando custos. O mesmo vale para serviços com pouco tráfego, já que, quando não estão em uso, não são cobrados.

O deploy é outra vantagem, já que é muito simples e rápido de ser feito, diminuindo o tempo de publicação de um projeto em fase inicial.

Fique atento!

Como tudo na vida, existem alguns pontos de atenção e algumas limitações. Vamos a elas.

  • Não é uma arquitetura aconselhada para aplicações que tenham tarefas muito demoradas.
  • Tem um timeout padrão de 300 segundos (no Azure é possível chegar a 600 segundos).
  • Utilizado de forma errada pode não ser vantajoso quanto ao custo.
  • Difícil prever o custo, uma vez que ele é baseado no tempo e quantidade de execuções.
  • Com o conceito de micro serviços e chamadas aninhadas, o debbuging e os testes podem ser complexos.

Serverless no Azure

O Azure contém uma plataforma de componentes para trabalhar as aplicações Serverless. São elas:

  • Azure Functions
    • Ideal para trabalhar com micro serviços e funções pontuais, que tenham uma responsabilidade bem definida e de rápida execução. O código pode ser criado diretamente no portal do Azure, via Azure CLI no Powershell, por exemplo, com o VS Code ou Visual Studio.
  • Logic Apps
    • Ótimo para a criação de fluxos e processos de trabalho, podendo, inclusive, chamar uma Function com um código customizado no fluxo. Possui um modo visual (Codeless) de fácil manipulação que deixa claro como é o fluxo/processo.
  • Event Grid
    • Para aplicações orientadas a eventos. Quando um determinado evento ocorre, realiza uma tarefa, dispara outro evento, chamada uma Function ou um Logic App.

Conclusão

Serverless é uma arquitetura que veio para ficar e que faz muito sentido para várias aplicações, mas não todas. Querer utiliza-la independente do seu modelo de software, pode ser um desperdício de tempo e dinheiro. Ela pode funcionar sozinha ou em conjunto com uma arquitetura mais tradicional. Tudo depende de como é a sua aplicação e onde se quer chegar com ela.

Existe espaço para os dois padrões, mas as aplicações Serverless vem se mostrando cada vez mais interessantes no mercado.

Na dúvida, venha bater um papo com a gente. Vamos estudar a melhor estrutura para sua aplicação juntos e começar transformar seus negócios!