Compartilhar via


Perspectiva do Azure Well-Architected Framework no Azure Functions

O Azure Functions é um serviço de computação sem servidor que permite executar código controlado por eventos sem precisar gerenciar a infraestrutura explicitamente. Como uma oferta do FaaS (Functions as a Service), o Azure Functions abstrai a infraestrutura subjacente, permitindo que você se concentre em seu código. Este serviço se dimensiona automaticamente com base na demanda e cobra apenas pelos recursos consumidos durante a execução.

Este documento pressupõe que, como arquiteto, você revisou a árvore de decisão de computação e escolheu o Azure Functions como solução de computação para sua carga de trabalho. As diretrizes fornecidas aqui se alinham aos princípios dos pilares do Azure Well-Architected Framework.

Importante

Como usar este guia

Cada seção contém uma lista de verificação de design que realça áreas de preocupação de arquitetura com estratégias de design específicas relacionadas ao Azure Functions.

As recomendações oferecem recursos de tecnologia para ajudar a implementar essas estratégias. Essa lista não é exaustiva, mas inclui recomendações importantes para ajudá-lo a criar ou otimizar suas cargas de trabalho com o Azure Functions.

Arquitetura fundamental mostrando as principais recomendações: design de arquitetura de funções sem servidor

Escopo da tecnologia

Esta revisão se concentra nas decisões interrelacionadas para os seguintes recursos do Azure:

  • Aplicativos de função

Nota

Este guia de serviço se baseia em diretrizes encontradas no guia de serviço do Serviço de Aplicativo (Aplicativos Web). O Azure Functions é um serviço de computação sem servidor. As funções são implantadas nos Planos do Serviço de Aplicativo, que fornecem a infraestrutura de computação subjacente para sua carga de trabalho. Você pode escolher entre vários planos de hospedagem. O plano de consumo é totalmente gerenciado e não dá suporte ao acesso à instância do Serviço de Aplicativo associada, enquanto Dedicado e Premium oferece a capacidade de configurar e gerenciar a instância do Serviço de Aplicativo. Consulte o guia do Serviço de Aplicativo para obter recomendações e considerações ao escolher um plano de hospedagem Dedicado ou Premium.

Fiabilidade

O pilar de Confiabilidade garante a funcionalidade contínua criando resiliência e habilitando a recuperação rápida de falhas.

Os princípios de design de confiabilidade fornecem estratégias de design de alto nível que se aplicam a componentes individuais, fluxos do sistema e ao sistema geral.

Lista de verificação de design

Inicie sua estratégia de design com base nos princípios de design de confiabilidade . Avalie sua relevância para seus requisitos de negócios, considerando os recursos e configurações específicos do Azure Functions.

  • Entenda os gatilhos: verifique se você entende completamente como o Azure Functions é disparado. Os gatilhos incluem solicitações HTTP, temporizadores, filas e muito mais. Escolha gatilhos que correspondam aos requisitos de confiabilidade do aplicativo.

    Por exemplo, se sua função processar mensagens de uma fila, verifique se a própria fila é resiliente e se as mensagens podem ser reprocessadas se ocorrer uma falha.

  • Implementar repetições e padrões duráveis: use políticas de repetição internas para falhas transitórias. Para fluxos de trabalho mais complexos, considere o uso de Durable Functions, que oferecem gerenciamento de estado e coordenação em várias execuções de função.

    As Funções Duráveis são particularmente úteis para cenários que exigem confiabilidade em fluxos de trabalho de longa execução. Eles dão suporte a novas tentativas automáticas e gerenciamento de tarefas duráveis.

  • Garantir o tratamento adequado de exceções: implemente um tratamento de exceção robusto para garantir que as funções falhem normalmente. Registre os erros e considere implementar mecanismos de alerta para falhas críticas.

  • Plano para escalabilidade: o Azure Functions dimensiona-se automaticamente com base na demanda. Verifique se seu aplicativo foi projetado para lidar com picos testando seu desempenho sob carga.

    Considere usar o Application Insights para monitorar o desempenho e acompanhar como suas funções são dimensionadas em tempo real.

  • Design para idempotência: verifique se suas funções podem ser repetidas com segurança sem causar efeitos colaterais não intencionais. A idempotência é crucial para funções que interagem com sistemas externos ou modificam dados.

  • Usar Funções Duráveis para operações de longa duração: Para operações que exigem orquestração de processos ou de longa duração, use as Funções Duráveis para manter o estado e garantir a confiabilidade em várias etapas.

  • Monitore a integridade da sua solução: integre sua solução do Azure Functions ao sistema geral de monitoramento e alertas de integridade da carga de trabalho.

Recomendações
Recomendação Benefício
Configure repetições automáticas para erros transitórios. Saiba mais sobre Tratamento de erros e repetições do Azure Functions Melhora a confiabilidade repetindo automaticamente execuções com falha, reduzindo a probabilidade de perda ou interrupção de dados.
Use Funções Duráveis para orquestrar fluxos de trabalho complexos e processos de longa duração. Saiba mais sobre as funções duráveis. Fornece execução confiável de fluxos de trabalho de longa duração, com gerenciamento de estado embutido e novas tentativas automáticas.
Implemente o Monitoramento e o registro em logs centralizado usando o Application Insights. Configurar o Application Insights. Aprimora o monitoramento e a solução de problemas fornecendo insights detalhados sobre execuções e dependências de função.
Expansão automática com base no plano de Hosting de Função, no tipo de gatilho e na demanda. Saiba mais sobre dimensionamento. Garante que seu aplicativo possa lidar com aumentos no tráfego sem intervenção manual, melhorando a confiabilidade e o desempenho.

Segurança

O pilar de segurança é centrado em garantir a confidencialidade, a integridade e a disponibilidade de seus dados e serviços.

Os princípios de design do Security oferecem uma estratégia de alto nível para proteger o Azure Functions, incluindo as práticas recomendadas para autenticação, autorização e proteção de dados.

Lista de verificação de design

Inicie sua estratégia de design com a lista de verificação de revisão de design para Segurança e identifique possíveis vulnerabilidades. Estenda sua estratégia incorporando medidas de segurança adicionais conforme necessário.

  • Usar identidades gerenciadas: habilite identidades gerenciadas para que seus aplicativos de funções acessem com segurança outros serviços do Azure sem a necessidade de gerenciar credenciais. Saiba mais sobre identidades gerenciadas.

  • Proteja seu aplicativo de funções com o Microsoft Entra ID: restrinja o acesso às suas funções configurando o Azure Functions para exigir a autenticação da ID do Microsoft Entra. Configurar a autenticação do Microsoft Entra.

  • Aplicar controles de segurança de rede: entenda as opções disponíveis para proteger a configuração de rede do Functions em seu modelo de hospedagem. Proteja a rede para atender aos seus requisitos.

Recomendações
Recomendação Benefício
Habilite identidades gerenciadas para acesso seguro aos recursos do Azure. Habilitar identidades gerenciadas Simplifica o gerenciamento de credenciais ao eliminar a necessidade de armazenar e rodar segredos, aumentando a segurança.
Use o Azure Key Vault para gerenciamento de segredos e rotação regular. Integrar o Key Vault ao Azure Functions. Protege informações confidenciais, como chaves de API e cadeias de conexão, armazenando-as com segurança e automatizando a rotação de segredos quando o uso de uma identidade gerenciada não é viável.
Integre-se a uma rede virtual e use pontos de extremidade privados. Protege aplicativos de funções restringindo o acesso à sua rede interna e impedindo a exposição à Internet pública.

Integração de rede virtual e pontos de extremidade privados não estão disponíveis no plano de hospedagem de Consumo.

Otimização de custos

O pilar de Otimização de Custos concentra-se na identificação de maneiras de reduzir custos, mantendo os níveis de desempenho necessários.

Os princípios de design da Otimização de Custos fornecem estratégias para equilibrar o custo e o desempenho, garantindo que sua implantação do Azure Functions seja eficiente e econômica.

Lista de verificação de design

Inicie sua estratégia de otimização de custos com a lista de verificação de revisão de design para Otimização de Custose ajuste seu design para se alinhar às suas necessidades orçamentárias.

  • Escolha o plano de preços certo: o Azure Functions oferece vários planos de preços, incluindo o plano de consumo, o plano Premium e o plano Dedicado (Serviço de Aplicativo). Escolha um plano que se alinhe com sua carga de trabalho e considerações de custo. Comparar planos de preços.

    O plano de consumo é ideal para cargas de trabalho imprevisíveis com execuções pouco frequentes, pois você paga apenas pelo tempo de execução e pelos recursos consumidos. Quando seu aplicativo está ocioso, você não é cobrado.

  • Otimizar o tempo de execução: reduza o tempo de execução otimizando o código da função. Minimize o uso de dependências externas e otimize a lógica de código para diminuir a duração de cada execução.

  • Monitorar e analisar os custos: monitore regularmente o uso e os custos do aplicativo de funções usando o Gerenciamento de Custos do Azure e configure alertas para detectar anomalias de custo. Saiba mais sobre gerenciamento de custos e otimização.

Recomendações
Recomendação Benefício
Use o plano de consumo para cargas de trabalho com tráfego imprevisível. Entenda o plano de consumo. Reduz os custos cobrando apenas pelos recursos usados durante a execução da função, evitando custos associados a recursos ociosos.
Reserve a capacidade para os planos Elastic Premium ou Planos de Serviço de Aplicativos Dedicados se sua carga de trabalho for previsível. Reduz os custos por meio de preços com desconto para cargas de trabalho previsíveis com padrões de execução constantes.
Monitore regularmente os custos e configure alertas para anomalias. Configurar alertas de custo. Ajuda a identificar picos de custos antecipadamente, permitindo gerenciamento e otimização proativos.

Excelência Operacional

A Excelência Operacional concentra-se em processos e procedimentos para implantação, observabilidade e gerenciamento de seus aplicativos do Azure Functions.

Os princípios de design da Excelência Operacional fornecem estratégias para garantir que seus aplicativos de funções sejam implantados, gerenciados e monitorados com eficiência.

Lista de verificação de design

Inicie sua estratégia de design com base nos princípios de design para Excelência Operacional e que oferecem estratégias para manter a qualidade operacional do Azure Functions.

  • Automatizar implantações: use os pipelines de CI/CD para automatizar a implantação de seus aplicativos de função. Integre-se ao Azure DevOps ou ao GitHub Actions para fluxos de trabalho de implantação contínuos.

  • Implementar monitoramento de integridade: use o Azure Monitor e o Application Insights para monitorar a saúde e o desempenho das suas funções. Configure alertas para métricas críticas e use painéis personalizados para insights em tempo real. Monitorar o Azure Function.

  • Implantar sua solução com segurança: entenda os modelos de implantação disponíveis para o Azure Functions e adote o modelo que melhor atenda às suas práticas de implantação seguras.

  • Plano para recuperação de desastre: implemente estratégias de recuperação de desastre usando a recuperação de desastre inter-regional e zona de disponibilidade para funções críticas. Plano para DR.

Recomendações
Recomendação Benefício
Automatize implantações com pipelines de CI/CD usando o Azure DevOps ou o GitHub Actions. Configurar CI/CD Melhora a consistência da implantação, reduz erros manuais e acelera o tempo de comercialização para novos recursos.
Use slots de implantação para preparar alterações antes da liberação para produção. Implantar usando slots. Reduz o risco de introduzir erros na produção e permite reversões seguras se forem detectados problemas.
Implemente o monitoramento centralizado usando o Application Insights e o Azure Monitor usando métricas de disponíveis. Aprimora a visibilidade do desempenho da função, ajudando a identificar e resolver problemas rapidamente.

Eficiência de desempenho

A Eficiência de Desempenho garante a experiência ideal do usuário, mesmo sob aumento de carga, ao gerenciar a capacidade com eficiência.

Os princípios de design de Eficiência de Desempenho fornecem estratégias para ajudá-lo a projetar aplicativos de funções que atendam aos requisitos de desempenho, mesmo à medida que a demanda aumenta.

Lista de verificação de design

Inicie sua estratégia de desempenho com os princípios de Design de Eficiência de Desempenho e, e projete seus aplicativos de funções para escalar e performar de maneira ideal.

  • Otimizar o início a frio: minimize o impacto dos inícios a frio usando planos Premium Flex com instância pré-aquecida ou garantindo que suas funções permaneçam aquecidas com estratégias, como o gatilho de aquecimento do Azure Functions.

  • Otimizar o código de função: escreva um código eficiente para reduzir o tempo de execução e o consumo de recursos. Evite operações de execução prolongada e otimize as chamadas de serviço externas.

  • Habilitar o dimensionamento automático: aproveite os recursos de dimensionamento automático do Azure Functions para expandir automaticamente com base na demanda. Verifique se as regras de dimensionamento estão bem definidas e testadas.

  • Monitorar métricas de desempenho: use o Application Insights para monitorar as principais métricas de desempenho, como tempo de execução, uso de CPU e memória. Configure alertas para degradação de desempenho. Monitorar o desempenho.

Recomendações
Recomendação Benefício
Use o plano Elastic Premium com uma instância Pré-aquecida para minimizar a latência de início a frio. Compreender o início a frio. Reduz a latência associada a inicializações a frio, melhorando os tempos de resposta para aplicativos sensíveis ao tempo.
Otimizar o código da função para reduzir o tempo de execução. Práticas recomendadas para o Azure Functions. Aprimora o desempenho reduzindo o tempo e os recursos necessários para cada execução de função.
Ativar o dimensionamento automático para ajustar a capacidade automaticamente com base na demanda. Configurar o dimensionamento automático. Garante que seus aplicativos de funções possam lidar com cargas variadas sem intervenção manual, mantendo o desempenho sob pressão.

Políticas do Azure

O Azure fornece um conjunto abrangente de políticas internas para auditar e impor configurações para o Azure Functions e suas dependências. Você pode usar o Azure Policy para garantir que seus aplicativos de funções aderem aos padrões organizacionais de segurança, otimização de custos e desempenho.

Por exemplo, você pode impor políticas que exigem:

  • Identidades gerenciadas devem ser habilitadas para todos os aplicativos de funções.
  • Os aplicativos de função devem usar apenas pontos de extremidade privados para segurança de rede.
  • O log de diagnósticos deve ser habilitado em todos os aplicativos de função.

Examine as definições internas do Azure Policy para localizar políticas que estejam alinhadas com seus requisitos organizacionais.

Recomendações do Assistente do Azure

O Assistente do Azure é um consultor de nuvem personalizado que ajuda você a seguir as práticas recomendadas para otimizar suas implantações do Azure. As recomendações do Assistente estão alinhadas com os pilares do Well-Architected Framework.

Para obter mais informações, consulte as recomendações no Azure Advisor.

Próximas etapas

Considere os seguintes recursos para explorar ainda mais as recomendações realçadas neste documento: