Essa arquitetura de referência ilustra várias ramificações locais de uma organização que estão espalhadas geograficamente. Cada local está usando um Aplicativo de Função do Microsoft Azure configurado com o plano Premium em uma região de nuvem próxima. Os desenvolvedores nessa arquitetura estão monitorando todos os Aplicativos de Função do Azure usando o Azure Monitor como um único painel de vidro.
Arquitetura
Transfira um ficheiro do Visio desta arquitetura.
Componentes
A arquitetura é composta pelos seguintes componentes:
- Funções do Azure. O Azure Functions é uma plataforma como serviço (PaaS) sem servidor no Azure que executa código pequeno e de tarefa única sem exigir que uma nova infraestrutura seja girada. O plano Azure Functions Premium adiciona a capacidade de comunicar com o Azure Functions de forma privada através de uma rede virtual.
- Rede virtual do Azure. As redes virtuais do Azure são redes privadas criadas na plataforma de nuvem do Azure para que os recursos do Azure possam comunicar entre si de forma segura. Os pontos de extremidade de serviço de redes virtuais do Azure garantem que os recursos do Azure só possam se comunicar pelo backbone de rede virtual seguro.
- Rede no local. Nesta arquitetura, a organização criou uma rede privada segura que conecta as várias filiais. Essa rede privada está conectada às suas redes virtuais do Azure usando uma conexão site a site .
- Estações de trabalho para desenvolvedores. Nessa arquitetura, os desenvolvedores individuais podem trabalhar no código do Azure Functions inteiramente na rede privada segura ou em qualquer local remoto. Em ambos os cenários, os desenvolvedores têm acesso ao Azure Monitor para consultar ou observar métricas e logs para os aplicativos de função.
Detalhes do cenário
Utilizações típicas desta arquitetura:
- Organizações com muitos locais físicos que estão conectados a uma rede virtual no Azure para se comunicar com o Azure Functions.
- Cargas de trabalho de alto crescimento que estão usando o Azure Functions localmente e mantendo a opção de usar o Azure para quaisquer picos inesperados no trabalho.
Recomendações
As recomendações seguintes aplicam-se à maioria dos cenários. Siga-as, a não ser que tenha requisitos específicos que as anulem.
Projetando para uma arquitetura sem servidor
As aplicações empresariais tradicionais tendem para uma arquitetura de aplicação monolítica na qual uma "solução" de código executa a lógica de negócios de toda a organização. Com o Azure Functions, a prática recomendada é projetar para uma arquitetura sem servidor na qual funções individuais executam tarefas únicas. Essas tarefas únicas são projetadas para serem executadas rapidamente e integradas a fluxos de trabalho maiores.
A arquitetura sem servidor no Azure Functions tem muitos benefícios, incluindo:
- Os aplicativos podem ser dimensionados automaticamente por funções de negócios individuais, em vez de dimensionar toda a solução. Isso pode ajudar a manter os custos baixos, dimensionando apenas o que é necessário para cada tarefa para atender às cargas de trabalho existentes.
- O Azure Functions fornece associações declarativas para muitos serviços do Azure, reduzindo a quantidade de código que sua equipe precisa escrever, testar e manter.
- Funções individuais podem ser reutilizadas, reduzindo a quantidade de código repetido que é necessário para soluções de grandes empresas.
Executando o Azure Functions local
Você pode optar por fazer com que o Azure Functions seja executado localmente em vez de no Azure; Por exemplo:
- Sua equipe pode querer executar o Azure Functions em uma instalação Kubernetes local existente.
- No desenvolvimento, sua equipe pode achar mais fácil desenvolver localmente usando a interface de linha de comando em vez do editor no portal.
- Suas funções serão executadas localmente com o conjunto de ferramentas instalado em VMs locais.
Você pode executar o Azure Functions local de três maneiras:
- Ferramentas principais do Azure Functions. O Azure Functions Core Tools é um pacote de desenvolvedores que normalmente é instalado a partir do gerenciador de pacotes de nó (npm). Ele permite que os desenvolvedores desenvolvam, depurem e testem aplicativos de função no prompt de comando em um computador local.
- Imagem de contêiner do Docker do Azure Functions. Você pode usar essa imagem de contêiner como uma imagem base para contêineres que executam o Azure Functions em um host do Docker ou no Kubernetes.
- Kubernetes. O Azure Functions dá suporte à escala contínua orientada a eventos dentro de um cluster Kubernetes usando o KEDA (Event Driven Autoscaling) baseado em Kubernetes. Analise as práticas recomendadas para gerenciar clusters do Serviço Kubernetes do Azure e clusters do Kubernetes habilitados para Azure Arc.
Conectividade de rede
A criação de aplicativos de função usando o plano Premium abre a possibilidade de conectividade entre redes altamente segura entre redes entre redes virtuais do Azure, redes do Azure e locais e as redes de cada filial local.
Você deve usar uma conexão site a site ou uma conexão de Rota Expressa do Azure entre a Rede Virtual do Azure e redes locais. Isso permite que as filiais locais se comuniquem com os aplicativos de função no Azure usando seus pontos de extremidade de serviço.
Além disso, cada rede virtual no Azure também deve usar o emparelhamento de rede virtual para habilitar a comunicação entre aplicativos de função individuais entre regiões.
Considerações
Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.
Escalabilidade
- O código do Azure Functions deve ser projetado para que possa ser expandido infinitamente. Considere condições de corrida, arquivos alugados e outras cargas de trabalho que podem fazer com que uma função seja executada para bloquear outra. Considere também escrever todo o código do Azure Functions para ser sem estado e defensivo em seu design.
- Para aplicativos de função que usam contas de Armazenamento do Azure em gatilhos ou associações, não reutilize a mesma conta usada para armazenar metadados sobre os aplicativos de função e suas execuções.
Disponibilidade
- Normalmente, o Azure Functions no plano de consumo pode reduzir para zero instâncias. Quando um novo evento aciona um aplicativo de função, uma nova instância deve ser criada com seu código em execução nele. A latência associada a esse processo é chamada de arranque a frio. O plano Premium do Azure Functions oferece a opção de configurar instâncias pré-aquecidas que estão prontas para quaisquer novas solicitações. Você pode configurar o número de instâncias pré-aquecidas até o número mínimo de instâncias em sua configuração de expansão.
- Considere ter vários planos Premium em várias regiões e usar o Gerenciador de Tráfego do Azure para rotear solicitações adequadamente.
Capacidade de gestão
- O Azure Functions deve estar em uma sub-rede vazia que seja uma sub-rede diferente de seus outros recursos do Azure. Isso pode exigir mais planejamento ao projetar sub-redes para sua rede virtual.
- Considere a criação de proxies para cada recurso local que o Azure Functions possa precisar acessar. Isso pode proteger a integridade do seu aplicativo contra quaisquer alterações imprevistas na rede local.
- Use o Azure Monitor para observar análises e logs para o Azure Functions em toda a sua solução.
DevOps
- Idealmente, as operações de implantação devem vir de uma única equipe (Dev ou DevOps), não de cada ramificação individual. Considere usar um sistema de fluxo de trabalho moderno, como o Azure Pipelines ou o GitHub Actions, para implantar aplicativos de função de maneira repetível em todas as regiões do Azure e, potencialmente, no local.
- Use seu sistema de fluxo de trabalho para automatizar a reimplantação de código no Azure Functions à medida que o código é atualizado e marcado para lançamento.
- Use slots de implantação para testar o Azure Functions antes de seu push final para a produção.
Otimização de custos
A otimização de custos consiste em procurar formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custos.
- Utilize a calculadora de preços do Azure para prever os custos.
- O plano Premium do Azure Functions é necessário para conectividade da Rede Virtual do Azure, acesso a sites privados, pontos de extremidade de serviço e instâncias pré-aquecidas.
- O plano Premium do Azure Functions fatura em instâncias em vez de consumo. O mínimo de uma única instância garante que haverá pelo menos alguma fatura mensal, mesmo sem execuções. Você pode definir uma contagem máxima de instâncias para controlar os custos de cargas de trabalho que podem aumentar de tamanho.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Autor principal:
- Raunak Jhawar - Brasil | Arquiteto de nuvem sênior
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximos passos
- Documentação das Funções do Azure
- Ligações Híbridas do Serviço de Aplicações do Azure
- Gerenciando ambientes híbridos com o PowerShell
- Azure Functions para se conectar a recursos em uma rede virtual do Azure
- Documentação da Rede Virtual do Azure
Recursos relacionados
Consulte as seguintes diretrizes de arquitetura para o Azure Functions:
- Processamento de eventos sem servidor
- Azure Functions em um ambiente híbrido
- Dimensionamento entre nuvens com o Azure Functions
- Passo a passo do código: Aplicativo sem servidor com funções
Consulte as seguintes orientações de arquitetura para as Redes Virtuais do Azure: