Análise Serverless, Começando pelos Modelos de Dados

Análise Serverless, Começando pelos Modelos de Dados

No artigo anterior, exploramos o funcionamento interno do Serverless. Em essência, o Serverless aproveita o escalonamento em camadas e inicializações a frio rápidas, permitindo que ele reduza a escala para zero quando nenhum evento está sendo processado. É semelhante a uma luz ativada por voz que acende quando alguém está presente e desliga automaticamente quando a sala está vazia.

Tendo compreendido os fundamentos, você pode estar curioso sobre as aplicações práticas dessa tecnologia impressionante. Hoje, vamos nos aprofundar nos casos de uso do Serverless. No entanto, um pré-requisito para entender suas aplicações é compreender seu modelo de processo, um conceito tão crucial quanto as inicializações a frio.

O Modelo de Processo Serverless

Vamos revisitar o processo de inicialização a frio do Serverless da última sessão. Lembre-se de que o provedor de nuvem gerencia as fases de preparação do contêiner e do tempo de execução, deixando-nos focar apenas na execução da função. Dentro do domínio Serverless, a execução da função é tratada por um “serviço de função”. Quando o gatilho da função sinaliza a chegada de um “evento”, o serviço de função cria instâncias de função conforme necessário e executa as funções correspondentes. Assim que uma função termina a execução, sua instância associada se despede, permitindo que o aplicativo Serverless reduza a escala para zero e entre em um modo de economia de energia.

Agora, você pode se perguntar se é possível manter uma instância ativa após a execução da função, em vez de encerrá-la, permitindo que ela aguarde a próxima invocação da função. Isso eliminaria a sobrecarga da inicialização a frio cada vez, resultando em tempos de resposta mais rápidos.

De fato, o Serverless antecipa tais cenários. Consequentemente, da perspectiva do processo que executa a instância da função, existem dois modelos:

  • Execução até a Conclusão: Neste modelo, a instância da função, uma vez pronta, executa a função e termina imediatamente. Esta representa a forma mais pura de uso do Serverless.
  • Processo Persistente: Aqui, a instância da função, após se preparar, não cessa ao final da função. Em vez disso, ela retorna e aguarda pacientemente a próxima chamada de função. Observe que mesmo neste modelo, o provedor de nuvem eventualmente destrói a instância da função se nenhum evento a acionar por um período predeterminado.

Orquestração de Dados

A maioria dos engenheiros está familiarizada com o padrão MVC (Model-View-Controller), um paradigma de design amplamente bem-sucedido. No entanto, o surgimento de frameworks MVVM de front-end empurrou a camada de View para frente, levando a SPAs (Single Page Applications). Por outro lado, as camadas de Control e Model do backend desceram, dando origem a aplicações backend orientadas a serviços.

Essa mudança resultou em um desacoplamento mais completo entre front-end e back-end. O desenvolvimento front-end pode prosseguir de forma independente, contando com interfaces de dados simuladas, enquanto as equipes de back-end podem se concentrar no desenvolvimento de interfaces de dados. No entanto, essa separação introduz uma camada de gateway de dados com alta E/S de rede.

O Node.js, com sua natureza assíncrona e não bloqueante e a afinidade do JavaScript com engenheiros de front-end, naturalmente assumiu o papel da camada de gateway de dados. Isso levou ao surgimento da camada Node.js BFF (Backend For Frontend), que orquestra dados e interfaces de backend, adaptando-os em estruturas de dados adequadas para consumo front-end.

A camada BFF atua como um intermediário, conectando o front-end e o back-end. Dados não processados, muitas vezes chamados de dados brutos ou metadados, são praticamente ilegíveis para os usuários finais. Portanto, precisamos combinar e processar dados relevantes, adicionando valor e tornando-os significativos. Esse processo de combinação e processamento é chamado de orquestração de dados.

Tradicionalmente, gerenciar aplicações Node.js para a camada BFF tem exigido muitos recursos, necessitando de máquinas virtuais ou plataformas PaaS. No entanto, como a camada BFF realiza principalmente orquestração de dados sem estado, podemos substituir perfeitamente a aplicação Node.js pelo Serverless usando o modelo de execução até a conclusão. Esta é a essência do termo cada vez mais popular SFF (Serverless For Frontend).

Com a evolução de BFF para SFF compreendida, vamos traçar o novo fluxo de requisições. Quando o front-end inicia uma requisição de dados, o gatilho da função ativa nosso serviço de função. Nossa função então inicia, invoca a interface de metadados do backend, processa os metadados retornados no formato exigido pelo front-end e, finalmente, nossa função Serverless pode descansar merecidamente.

Orquestração de Serviços

A orquestração de serviços compartilha semelhanças com a orquestração de dados, sendo a principal distinção que ela se concentra em combinar e processar vários serviços oferecidos pelo provedor de nuvem. Embora o conceito seja anterior ao Serverless, sua implementação tradicional era restrita pelas versões de idioma do SDK suportadas pelos serviços. Normalmente, recorríamos a arquivos YAML ou interfaces de linha de comando para orquestrar serviços. Utilizar esses serviços ou APIs envolvia encontrar SDKs correspondentes em nossa linguagem de programação preferida, carregá-los em nosso código e empregar chaves secretas para chamar métodos SDK para orquestração. Semelhante à orquestração de dados, os custos de operação e implantação de backend eram substanciais, e a ausência de um SDK exigia implementação manual com base nas interfaces ou protocolos da plataforma.

O Serverless expande os limites da utilização do SDK. Por exemplo, imagine um serviço web que precisa enviar códigos de verificação por e-mail. Podemos conseguir isso com uma função Serverless de execução até a conclusão que usa o SDK do provedor de nuvem para enviar e-mails. Simultaneamente, uma função Serverless persistente pode gerar códigos de verificação de string aleatória, armazená-los e acionar a função Serverless de envio de e-mail para entregar os códigos nas caixas de entrada dos usuários. Durante a verificação, podemos invocar novamente a função Serverless persistente para validar os códigos.

Uma vantagem notável do Serverless é sua independência de linguagem. Isso libera as equipes de desenvolvimento de ficarem confinadas a uma única linguagem, permitindo que aproveitem os pontos fortes de Java, PHP, Python, Node.js e outros para construir colaborativamente aplicações complexas.

A natureza aberta da orquestração de serviços Serverless tem atraído atenção significativa dos provedores de nuvem. Ela capacita a criação de cenários de orquestração de serviços diversos e complexos, permanecendo independente de linguagem, expandindo significativamente os casos de uso de vários serviços em nuvem. No entanto, isso também exige que os desenvolvedores se familiarizem com a variedade de serviços oferecidos pelo provedor de nuvem escolhido.

Conclusão

  1. Existem dois tipos de modelos de processo para Serverless: tipo de processo residente e tipo de uso e destruição. O tipo de processo residente é projetado para se adaptar à arquitetura MVC tradicional e não parece natural; Se você começar a usar Serverless a partir de agora, eu definitivamente recomendaria o modelo de uso e destruição, que pode maximizar as vantagens do Serverless.
  2. Traçando a história, organizei o BFF desenvolvido através da separação front-end e back-end, que pode então ser substituído pelo SFF. Seja orquestração de interface interna ou orquestração de dados externa, o Serverless pode desempenhar uma grande vantagem.
  3. Indo além da orquestração de dados, podemos aproveitar as capacidades do Serverless e dos provedores de serviços em nuvem para alcançar a orquestração de serviços, criar cenários de serviços compostos mais poderosos e aumentar nossa eficiência de pesquisa e desenvolvimento.

Novita AI é a plataforma de nuvem completa que impulsiona suas ambições de IA. APIs integradas, Serverless, Instância GPU — as ferramentas econômicas que você precisa. Elimine infraestrutura, comece gratuitamente e torne sua visão de IA realidade.

Leitura Recomendada

Revelando a Revolução: Explorando o Mundo da Computação Serverless