Decidir se a computação sem servidor é ideal para suas necessidades empresariais
Para ajudar a decidir se a computação sem servidor é adequada para você, primeiro, vamos aprender o que é a computação sem servidor.
O que é a computação sem servidor?
A computação sem servidor pode ser considerada uma FaaS (função como serviço) ou um microsserviço hospedado em uma plataforma de nuvem. Sua lógica de negócios é executada como funções e você não precisa provisionar nem dimensionar a infraestrutura manualmente. O provedor em nuvem gerencia a infraestrutura. Seu aplicativo é escalado horizontalmente ou reduzido verticalmente dependendo da carga. O Azure apresenta várias maneiras de criar esse tipo de arquitetura. As duas abordagens mais comuns são os Aplicativos Lógicos do Azure e o Azure Functions, que abordaremos neste módulo.
O que é o Azure Functions?
O Azure Functions é uma plataforma de aplicativos sem servidor. Ele permite aos desenvolvedores hospedar uma lógica de negócios que possa ser executada sem provisionar a infraestrutura. O Azure Functions fornece escalabilidade intrínseca, e você só é cobrado pelos recursos usados. Você pode escrever o código da função na linguagem de sua escolha, incluindo C#, Java, JavaScript, Python e PowerShell. Também há suporte para gerenciadores de pacotes, como o NuGet e o npm. Portanto, você pode usar bibliotecas populares na lógica de negócios.
Benefícios de uma solução de computação sem servidor
A computação sem servidor é uma ótima opção para hospedagem do código da lógica de negócios na nuvem. Com as ofertas sem servidor como o Azure Functions, você pode escrever sua lógica de negócios na linguagem de sua escolha. Você obtém o dimensionamento automático, não tem nenhum servidor para gerenciar e é cobrado com base no que é usado, não no tempo reservado. Veja a seguir algumas outras características de uma solução sem servidor a ser considerada.
Evita a alocação excessiva de infraestrutura
Suponha que você provisionou servidores de VM (Máquina Virtual) e os configurou com recursos suficientes para lidar com os horários de pico de carga. Quando a carga é leve, potencialmente, você pode estar pagando pela infraestrutura que não está usando. A computação sem servidor ajuda a resolver o problema de alocação escalando ou reduzindo verticalmente de forma automática, e você é cobrado apenas quando a função está processando o trabalho.
Lógica sem estado
As funções sem estado são bons candidatos para a computação sem servidor; as instâncias de função são criadas e destruídas sob demanda. Se o estado é necessário, ele pode ser armazenado em um serviço de armazenamento associado.
Controlada por eventos
As funções são controladas por eventos. Elas são executadas apenas em resposta a um evento (chamado de "gatilho"), como o recebimento de uma solicitação HTTP ou a adição de uma mensagem a uma fila. Você configura um gatilho como parte da definição da função. Essa abordagem simplifica o código permitindo que você declare o local de recebimento dos dados (gatilho/associação de entrada) e o local de envio (associação de saída). Você não precisa escrever um código para inspecionar filas, blobs, hubs e assim por diante. Você pode se concentrar exclusivamente na lógica de negócios.
As funções podem ser usadas em ambientes de computação tradicionais
As funções são um componente essencial da computação sem servidor, mas também são uma plataforma de computação geral para a execução de qualquer tipo de código. Se as necessidades do aplicativo mudarem, você poderá pegar seu projeto e implantá-lo em um ambiente sem servidor. Isso dá a você a flexibilidade de gerenciar o dimensionamento, executá-lo em redes virtuais e até isolar completamente as funções.
Desvantagens de uma solução de computação sem servidor
A computação sem servidor, conforme fornecido por Azure Functions no plano de Consumo, nem sempre será a solução apropriada para hospedar sua lógica de negócios. Veja abaixo algumas características das funções que podem afetar sua decisão de hospedar seus serviços na computação sem servidor.
Tempo de execução
Por padrão, as funções têm um tempo limite de cinco (5) minutos. Esse tempo limite é configurável para um máximo de 10 minutos. Se a função exigir mais de 10 minutos para ser executada, você poderá hospedá-la em uma VM. Além disso, se o serviço for iniciado por meio de uma solicitação HTTP e você esperar esse valor como uma resposta HTTP, o tempo limite será restringido ainda mais para 2,5 minutos. No entanto, também há uma opção chamada Durable Functions, que permite orquestrar as execuções de várias funções, sem nenhum tempo limite.
Frequência de execução
Outra característica é a frequência de execução. Se você espera que os clientes executem sua função continuamente, é prudente estimar o uso e calcular o custo do uso das funções de acordo. Pode ser mais barato hospedar o serviço em uma VM.
Quando a sua função for dimensionada, apenas uma instância do aplicativo de funções pode ser criada a cada 10 segundos, até um total de 200 instâncias. Tenha em mente de que cada instância pode atender a várias execuções simultâneas. Portanto, não há nenhum limite definido sobre a quantidade de tráfego que pode ser manipulada por uma única instância. Diferentes tipos de gatilhos têm diferentes requisitos de dimensionamento. Portanto, pesquise sua opção de gatilho e investigue seus limites.