Revelando a Revolução: Explorando o Mundo da Computação Sem Servidor

O que é sem servidor?

Serverless, como o nome sugere, refere-se à computação sem servidor. Você pode se perguntar, como é possível executar computação sem servidores? Na realidade, serverless não significa que não há literalmente servidores. Em vez disso, ele aproveita a tecnologia para abstrair o conceito de servidores da lógica de negócios, permitindo que os desenvolvedores se concentrem apenas em seus aplicativos sem se preocupar com a infraestrutura subjacente.

Como funciona o Serverless?

Desde o advento do Serverless, muitos desenvolvedores o perceberam como uma tecnologia nova, o que sem dúvida é, dada sua conveniência. No entanto, não há necessidade de complicar demais ou se intimidar com isso. A lógica subjacente de execução de aplicativos permanece inalterada. O Serverless apenas emprega meios técnicos para nos proteger das complexidades envolvidas, assim como qualquer outra tecnologia de nuvem.

Antes do Serverless, implementar um aplicativo da web era um processo trabalhoso. Para executar nosso aplicativo, primeiro tivemos que construir um ambiente de tempo de execução no lado do servidor. Isso envolvia comprar máquinas virtuais, inicializar seus ambientes, instalar dependências necessárias — garantindo a consistência com nosso ambiente de desenvolvimento local tanto quanto possível. Em seguida, para tornar nosso aplicativo acessível aos usuários, precisávamos comprar um nome de domínio, registrá-lo usando o endereço IP da máquina virtual, configurar e iniciar o Nginx e, finalmente, carregar e iniciar o código do aplicativo.

Em forte contraste com o fluxo de trabalho tradicional, a implantação sem servidor requer apenas três etapas simples, tornando-a uma abstração extrema das operações do lado do servidor. Essencialmente, toda a cadeia de solicitações de dados HTTP do usuário permanece qualitativamente inalterada; o sem servidor apenas simplifica o modelo geral.

Para elaborar, anteriormente tínhamos que construir um ambiente de tempo de execução no lado do servidor, enquanto os aplicativos FaaS abstraem essa etapa em serviços de função. Costumávamos precisar de balanceamento de carga e proxies reversos, mas os aplicativos FaaS abstraem isso em gatilhos de função HTTP. Carregar código e iniciar o aplicativo costumava ser necessário, mas os aplicativos FaaS abstraem isso em código de função.

Quando um usuário acessa um gatilho de função HTTP pela primeira vez, o gatilho retém a solicitação HTTP do usuário e gera uma notificação de evento de solicitação HTTP para o serviço de função.

O serviço de função então verifica se há instâncias de função ociosas. Se nenhuma estiver disponível, ele busca seu código do repositório de código de função, inicializa e inicia uma instância de função, executa a função, passa o objeto HTTP Request como um parâmetro e executa a função.

Além disso, a resposta HTTP da execução da função é retornada ao gatilho da função, que então retransmite o resultado ao cliente do usuário em espera.

A diferença mais significativa entre as plataformas PaaS de hospedagem de aplicativos e Serverless está na utilização de recursos, que é a inovação mais notável do Serverless. As instâncias de aplicativos Serverless podem ser reduzidas a zero, enquanto as plataformas PaaS exigem pelo menos um servidor ou contêiner em execução o tempo todo.

Antes da primeira invocação, a ocupação real do servidor de uma função é zero. Somente quando um usuário faz uma solicitação de dados HTTP o serviço de função é acionado pelo evento HTTP, iniciando uma instância de função. Isso significa que, sem solicitações do usuário, o serviço de função não tem instâncias em execução e não consome recursos do servidor. Por outro lado, criar uma instância de aplicativo em uma plataforma PaaS normalmente leva dezenas de segundos e, para garantir a disponibilidade do serviço, pelo menos um servidor deve executar continuamente sua instância de aplicativo.

Para fazer uma analogia, o Serverless é semelhante a uma luz ativada por voz que acende rapidamente quando alguém está presente e apaga quando ninguém está por perto. Comparadas às luzes tradicionais operadas manualmente, as luzes ativadas por voz se destacam em eficiência energética. No entanto, essa capacidade de economia de energia depende da capacidade da luz ativada por voz de acender rapidamente quando necessário.

Da mesma forma, a chave para as vantagens do Serverless está em seu rápido tempo de inicialização. Como ele consegue isso?

Por que o Serverless pode iniciar tão rapidamente?

Inicialização a frio é originalmente um conceito de PC, referindo-se ao processo de recarregamento da tabela do BIOS — essencialmente inicializando a partir dos drivers de hardware — após um ciclo de energia, resultando em tempos de inicialização lentos.

Nos ambientes de nuvem atuais, o ciclo de energia de servidores físicos é quase inédito. No contexto do Serverless, a inicialização a frio se refere a todo o processo, desde a invocação da função até a prontidão da instância da função. Nosso foco aqui é minimizar o tempo de inicialização, pois tempos de inicialização mais curtos se traduzem diretamente em maior utilização de recursos. Os provedores de nuvem atuais, aproveitando otimizações específicas de linguagem, alcançaram tempos médios de inicialização a frio entre 100 e 700 milissegundos. Graças à compilação Just-In-Time do Google em seu mecanismo JavaScript, o Node.js ostenta as inicializações a frio mais rápidas.

Vale a pena notar que um serviço Serverless pode começar do zero, executar uma função e concluir o processo em 100 milissegundos — uma razão fundamental pela qual o Serverless pode ser dimensionado com confiança para zero. Ao abrir uma página da web, um tempo de resposta de menos de um segundo é geralmente considerado excelente. Nesse contexto, um tempo de inicialização de 100 milissegundos tem um impacto insignificante nos tempos de carregamento da página.

Além disso, é seguro assumir que os provedores de nuvem continuarão a otimizar sua infraestrutura para tempos de inicialização ainda mais rápidos, levando, em última análise, a uma maior utilização de recursos. Por exemplo, baixar o código da função é uma etapa demorada durante as inicializações a frio. Portanto, após atualizações de código, os provedores de nuvem geralmente iniciam proativamente o agendamento de recursos para baixar e criar imagens de contêiner para suas instâncias de função. Quando a primeira solicitação chega, eles podem aproveitar essas imagens em cache, ignorando a etapa de download do código de uma inicialização a frio e iniciando o contêiner diretamente da imagem. Essa técnica é conhecida como inicialização a quente. Consequentemente, para aplicativos sensíveis à latência, podemos utilizar inicializações a quente ou estratégias de pré-aquecimento de instância para acelerar ou contornar completamente os tempos de inicialização a frio.

Como o Serverless é dividido em camadas?

Quando sua instância sem servidor é executada, ela compreende pelo menos três camadas: contêiner, tempo de execução e código de função.

Pense no contêiner como o sistema operacional (SO). A execução do código requer interação com o hardware, e o contêiner simula as informações do kernel e do hardware, permitindo que seu código e tempo de execução funcionem dentro dele. As informações do contêiner incluem tamanho da memória, versão do SO, detalhes da CPU, variáveis ​​de ambiente e muito mais. Atualmente, as implementações do FaaS podem utilizar contêineres Docker, máquinas virtuais (VMs) ou até mesmo ambientes sandbox.

O runtime representa o contexto no qual sua função é executada. As informações de runtime incluem a linguagem de programação e a versão usada, como Node.js v10 ou Python 3.6; objetos chamáveis, como o aliyun SDK; e informações do sistema, como variáveis ​​de ambiente.

Quais são os benefícios dessa abordagem em camadas? A camada de contêiner oferece uma aplicabilidade mais ampla, permitindo que os provedores de nuvem pré-aqueçam inúmeras instâncias de contêiner, fragmentando efetivamente os recursos físicos do servidor. As instâncias de tempo de execução, com sua menor aplicabilidade, podem ser pré-aquecidas em números menores. Uma vez que o contêiner e o tempo de execução são corrigidos, o download e a execução do código se tornam simples. Essa arquitetura em camadas permite a otimização eficiente de recursos, permitindo a execução rápida e econômica do seu código.

Resumo

  1. A cadeia de invocação de um aplicativo Serverless puro consiste em três componentes principais: gatilhos de função, serviços de função e código de função. Eles substituem, respectivamente, as operações tradicionais do lado do servidor de balanceamento de carga e proxies reversos, servidores e ambientes de tempo de execução de aplicativo e implantação de código de aplicativo.
  2. A diferença mais significativa entre as plataformas PaaS de hospedagem de aplicativos sem servidor e tradicionais está na capacidade dos aplicativos sem servidor de reduzir a escala para zero e iniciar rapidamente mediante gatilhos de eventos. As funções Node.js, por exemplo, podem atingir inicialização e execução em 100 milissegundos.
  3. Serverless, por design, sacrifica o controle do usuário e o escopo do aplicativo para simplificar o modelo de código. Sua estrutura em camadas aprimora ainda mais a utilização de recursos, que é um contribuidor primário para seus tempos de inicialização a frio notavelmente curtos.

Novita AI lançará o serviço Serverless para nossos usuários, entre na lista de espera agora e comece seu negócio com computação serverless.

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

Leitura recomendada

Desbloqueando o poder do PyTorch

Como implantar o Llama3.1 405B com Novita AI


Descubra mais da Novita

Inscreva-se para receber as últimas postagens enviadas para seu e-mail.

Deixe um comentário

Voltar ao Topo

Descubra mais da Novita

Inscreva-se agora para continuar lendo e ter acesso ao arquivo completo.

Ler Mais