Por que eu devo ler este artigo:Esse artigo é útil para quem deseja adentrar no mundo da computação serverless. Conheça uma das mais novas e promissoras áreas da computação que visa prover a execução de rotinas de software rápidas e baratas na nuvem, alocando o mínimo de recursos possíveis se, e somente se, requisições forem solicitadas ao servidor. Dessa forma, o leitor poderá entender como conectar o já conhecido mundo do .NET, C# e programação para Azure com as novas Azure Functions: os “pedaços” de código que executam independentemente no servidor.

Muito tem-se falado sobre o mundo serverless, à luz dos limites rompidos por tecnologias como AWS Lambda e Google Cloud Functions, temos agora a possibilidade de ser mais modular, ocupar menos recursos físicos (hardware, processamento, memória, etc.) e, consequentemente, gastar muito menos quando se trata de criar softwares.

Computação serverless, em termos rápidos, é um modelo de execução de código onde a lógica do lado servidor se dá de forma stateless, isto é, sem estado, a partir de gatilhos (triggers), e via containers que são totalmente gerenciados por um terceiro. Muitas vezes sua definição é associada à Functions as a Service (FaaS), um termo mais popular para quando queremos focar mais na implementação em vez dos detalhes de como a aplicação irá ser deployada e/ou executada no servidor.

Em diferentes linguagens de programação, podemos encontrar os termos "função", "procedimento" e "método" referindo-se a diferentes tipos de rotinas executando uma tarefa. Neste contexto, o termo função não é específico da linguagem de programação, mas conceitual: na programação, uma função é uma seção nomeada de um programa que executa uma tarefa específica.

Ironicamente, a computação serverless não é, de fato, executada sem servidores. Em vez disso, ela envolve a terceirização do provisionamento e gerenciamento de servidores para um terceiro.

Quase todas as tecnologias de computação sem servidor existentes são disponibilizadas por grandes fornecedores de nuvem pública. A grande escala dos fornecedores de nuvens públicas atuais permite duas coisas para tornar o servidor ainda mais interessante:

  • Entendem os benefícios de custo na economia de escala: para qualquer equipe de desenvolvimento específica, ou mesmo organização, seria difícil alcançar a escala de gerenciamento de contêineres para aplicações de computação gerenciados separadamente. Na escala de vendedores de nuvem pública, o cálculo sem servidor torna-se barato porque a alocação de potência de computação é equilibrada em milhares de servidores e bilhões de execuções, com cada aplicação cliente atingindo limites de pico em momentos diferentes. A natureza dos centros de dados de software também permite uma alocação de servidores mais eficiente;
  • Minimizamos efeitos adversos do bloqueio de fornecedores:o mundo moderno de TI está rapidamente chegando ao consenso de que os benefícios da nuvem pública superam as desvantagens de qualquer bloqueio de fornecedores que vem com ele. Com muitos serviços de TI que se deslocam para a nuvem pública, torna-se mais fácil e mais benéfico aproveitar um provedor de nuvem para hospedar aplicativos serverless .

Para ilustrar onde a computação serverless entraria em sua aplicação, vamos dar uma olhada em uma arquitetura clássica de três camadas. Nesta abordagem comumente utilizada, o aplicativo é dividido nas seguintes camadas:

  • Camada de apresentação:manipula a interface do usuário e, normalmente, opera como umcliente cleanem uma web ou dispositivo móvel;
  • Camada de lógica:também conhecida como camada da aplicação, lida com a lógica do processo funcional e as regras de negócio da aplicação. Este nível pode atender a um ou mais clientes da camada de apresentação, além de conseguir escalar independentemente das demais;
  • Camada de dados: a camada de dados persiste os dados do aplicativo em bancos de dados ou compartilhamentos de arquivos e lida com a camada de acesso aos mesmos.

A partir do momento que introduzimos o conceito de computação serverless, todas ou partes da sua aplicação na concepção que a conhece hoje, podem ser substituídas pelos containers serverless, ou FaaS. Dependendo da aplicação, funções podem lidar com toda a lógica de negócio, ou trabalhar em conjunto com outros tipos de serviços para constituir o todo desta camada. Por exemplo, considere uma aplicação que recebe dados de cartão de crédito de um usuário. Convencionalmente, teríamos várias camadas de serviços deployadas no servidor, que proveriam uma série de validações no momento em que uma transação chegasse à nossa aplicação. Cada validação, no universo das serverless, constitui uma função que, por sua vez, se comunica com outras funções ou serviços externos (das Mastercard, por exemplo), e assim por diante.

Apesar disso, nem todas as facetas da computação tradicional podem ser substituídas. Por exemplo, algumas das características implícitas da computação serverless impossibilitam operações tradicionais, como o fato de que ela é, por default, assíncrona, isto é, baseada em eventos que são trigados (triggers) a partir do acontecimento de determinadas ações assíncronas na aplicação. Em vista disso, é importante que a sua programação leve em consideração o uso de funções não-blocking, que sejam passíveis de espera.

Vejamos mais alguns estados importantes do serverless nos tópicos a seguir.

Stateless

Programação serverless é, por padrão, stateless, isto é, não pode guardar estado. O conceito já é bem conhecido em aplicações enterprise que fazem uso extensivo de objetos beans para execução de tarefas de negócio simples, independentes e, como o próprio nome sugere, sem estado. Ele vai além, se estendendo a restrições também para execuções paralelas e sequenciais, exigindo um certo jogo de cintura do programador para entender que seu estado, agora, deve ser salvo em um banco de dados, um servidor de arquivos, cache ou quaisquer estruturas que permitam isso de forma integrada, não mais interna à execução da aplicação.

O paradigma stateless facilitou em muito a construção e escalabilidade de aplicações nos últimos anos especialmente por seu deploy rápido e fácil acesso aos recursos. Todavia, nem tudo é p ...

Quer ler esse conteúdo completo? Seja um assinante e descubra as vantagens.
  • 473 Cursos
  • 10K Artigos
  • 100 DevCasts
  • 30 Projetos
  • 80 Guias
Tenha acesso completo