Melhores práticas de arquitetura para Azure Container Apps

O Azure Container Apps é um serviço de contêiner sem servidor totalmente gerido que executa microsserviços e aplicações contentorizadas na Azure. Fornece dimensionamento automático incorporado, incluindo dimensionamento para zero, e suporta várias linguagens de programação e frameworks. As Aplicações de Contêiner integram-se com o Azure Kubernetes Service (AKS) para rede e monitorização avançadas. Também proporciona a implementação e gestão perfeita de aplicações em contêineres sem a necessidade de gerir a infraestrutura subjacente. Suporta tanto aplicações baseadas em HTTP quanto aplicações orientadas por eventos, sendo assim ideal para criar aplicações nativas da nuvem modernas, escaláveis e resilientes.

Este artigo assume que, como arquiteto, você já revisou a árvore de decisão de computação e escolheu o Container Apps como a plataforma de computação para a sua carga de trabalho. As orientações neste artigo fornecem recomendações de arquitetura mapeadas de acordo com os princípios dos pilares do Well-Architected Framework.

Âmbito da tecnologia

Esta análise concentra-se nas decisões inter-relacionadas para os seguintes recursos do Azure:

  • Container Apps

Diagrama que mostra a arquitetura de Aplicativos de Contêiner.

Reliability

O objetivo do pilar Confiabilidade é fornecer funcionalidade contínua, criando resiliência suficiente e a capacidade de se recuperar rapidamente de falhas.

Os princípios de design de fiabilidade fornecem uma estratégia de design de alto nível aplicada a componentes individuais, aos fluxos do sistema e ao sistema como um todo.

Lista de verificação de design da carga de trabalho

Inicie sua estratégia de design com base na lista de verificação de revisão de projeto para Confiabilidade. Determine a sua relevância para os seus requisitos empresariais, tendo em mente o desempenho e a fiabilidade das suas aplicações. Alargar a estratégia de modo a incluir mais abordagens, conforme necessário.

  • Escolha as configurações de SKU apropriadas. Selecione um SKU de ambiente que esteja alinhado com os requisitos de recursos e desempenho das suas aplicações de contentores.

    Avalie quais as funcionalidades da plataforma que os seus objetivos de fiabilidade exigem. Perfis dedicados de carga de trabalho oferecem isolamento de computação e maiores limites de recursos. A entrada premium aloca recursos proxy dedicados com configurações de timeout ajustáveis para evitar gargalos.

  • Construa redundância para melhorar a resiliência. Para aplicações expostas a entrada (HTTP ou Protocolo de Controle de Transmissão (TCP)), use pelo menos três réplicas para ajudar a garantir a disponibilidade. Para minimizar os inícios a frio, configure um número mínimo de réplicas sempre prontas.

    Utilize zonas de disponibilidade como parte da sua estratégia de resiliência para aumentar a disponibilidade quando fizer a implementação numa única região. Muitas regiões do Azure fornecem zonas de disponibilidade. As zonas estão posicionadas suficientemente próximas para garantir conexões de baixa latência entre elas, mas suficientemente distantes para minimizar o risco de falhas locais afetarem múltiplas zonas.

    Para cargas de trabalho críticas, desploe ambientes de Container Apps em várias regiões e use o Azure Front Door ou o Gestor de Tráfego do Azure para gestão de tráfego. Estes serviços ajudam a garantir alta disponibilidade e continuidade de negócios. Se ocorrer uma interrupção regional, pode redirecionar automaticamente o tráfego para uma região secundária para minimizar o tempo de inatividade e a perda de dados.

  • Implementar escalamento automático horizontal. Configure o dimensionamento automático utilizando regras de dimensionamento que se baseiam em pedidos HTTP, ligações TCP ou métricas personalizadas, como limites de CPU e memória. Pode definir métricas personalizadas no Azure Service Bus, Hubs de Eventos do Azure, Apache Kafka e Azure Managed Redis. Utilize o dimensionamento automático para gerir dinamicamente as cargas e manter alta disponibilidade durante os períodos de uso máximo.

    Certifique-se de que as suas aplicações em contentores possam continuar a atender pedidos dentro do seu objetivo de nível de serviço (SLO) sob alta carga.

  • Monitorize a fiabilidade e os indicadores gerais de saúde da aplicação em contêiner. Recolha registos e métricas para monitorizar a saúde, identificar tendências de desempenho e fiabilidade, e resolver problemas. Para mais informações sobre como projetar a solução de monitorização de confiabilidade e saúde para a sua carga de trabalho, consulte Modelagem de saúde para cargas de trabalho.

    Implemente ferramentas de monitorização e alertas. Ative ferramentas de monitorização, como o Azure Monitor e o OpenTelemetry. Configure alertas para detetar e responder rapidamente a eventos que afetam a fiabilidade.

    Configure sondas de verificação. Configure sondas de inicialização, prontidão e vivacidade para todos os serviços, de modo a monitorizar e manter a saúde da aplicação.

  • Configurar mecanismos de autocura para reiniciar automaticamente instâncias de contentores com problemas. Reinícios automáticos aumentam a fiabilidade e disponibilidade das suas aplicações. Eles ajudam a garantir uma recuperação rápida de falhas sem intervenção manual. Utilize sondas de integridade para detectar containers com falhas e configure políticas de resiliência para lidar automaticamente com tentativas de repetição e circuit breakers.

Recomendações de configuração

Recommendation Benefit
Ative o suporte para zonas de disponibilidade nas Apps de Contentores para distribuir automaticamente réplicas pelas zonas numa região. O tráfego é equilibrado entre as réplicas. Se ocorrer uma falha de zona, o tráfego é automaticamente direcionado para as réplicas nas zonas restantes.
Defina cotas e limites de recursos . Prevenir a contenção de recursos para ajudar a garantir uma alocação justa e evitar a degradação do desempenho. Utilize a monitorização ao longo do tempo para observar o uso real dos recursos e ajustar as quotas e limites de acordo.
Use montagens de volume para armazenar dados fora do contêiner em aplicativos com monitoração de estado. Para uma resiliência de dados aprimorada, utilize o armazenamento com redundância de zonas do Azure (ZRS) para ajudar a garantir a alta disponibilidade e durabilidade dos seus dados. Assegure a persistência e integridade dos dados durante reinícios e falhas dos contentores. Utilize o ZRS para proteger contra a perda de dados devido a falhas na zona, o que fornece uma solução robusta para aplicações críticas com estado persistente.
Implemente provas de vivacidade, prontidão e inicialização para as suas aplicações em contentores.

As sondas de verificação de atividade detetam e reiniciam contêineres que estão num estado de falha.
Definições recomendadas: failureThreshold: 3, periodSeconds: 10, timeoutSeconds: 5, successThreshold: 1, e initialDelaySeconds: 10

As sondas de prontidão garantem que apenas contêineres saudáveis recebam tráfego.
Definições recomendadas: failureThreshold: 60, periodSeconds: 1, timeoutSeconds: 1, successThreshold: 1, e initialDelaySeconds: 5

As sondas de inicialização previnem reinicializações prematuras ao permitir que aplicativos de arrancada lenta se inicializem corretamente.
Definições recomendadas: failureThreshold: 60, periodSeconds: 1, timeoutSeconds: 1, successThreshold: 1, e initialDelaySeconds: 0
A configuração adequada das sondas ajuda a garantir que suas aplicações em contentores funcionem sem problemas e consigam lidar com o tráfego. Configurações incorretas da sonda podem levar a reinicializações inesperadas ou tempo de inatividade.
Use os recursos internos de observabilidade das Aplicações de Contentores, como transmissão de registos, console de contentor e métricas e alertas do Azure Monitor, para garantir monitorização proativa e depuração eficiente. O Container Apps oferece suporte a uma observabilidade profunda, incluindo integração com o painel .NET Aspire e métricas Java. Estas ferramentas permitem insights aprimorados para ecossistemas chave. Pode também usar o coletor OpenTelemetry para rastreamento distribuído abrangente e coleta de métricas. Estas funcionalidades melhoram a fiabilidade da aplicação porque permitem identificar e resolver problemas rapidamente.
Implementar políticas de resiliência em descoberta de serviços, como tentativas, timeouts e disjuntores, para prevenir, detetar e recuperar proativamente de falhas nos pedidos de serviço. Melhore a fiabilidade das suas aplicações em contentores assegurando uma comunicação inter-serviços mais suave e resiliente.
Implemente o dimensionamento automático horizontal usando regras de escala baseadas em solicitações HTTP, conexões TCP ou métricas personalizadas, como limites de CPU e memória. Pode definir métricas personalizadas no Service Bus, Event Hubs, Apache Kafka e Azure Managed Redis. A carga de trabalho pode gerir dinamicamente as cargas e manter alta disponibilidade durante os períodos de utilização máxima.
Ative a entrada premium para cargas de trabalho que requerem encaminhamento HTTP avançado ou de alta capacidade. Configurar recursos dedicados, tempos limite personalizados e definições de escalonamento para o proxy de entrada. Evite congestionamentos no ingresso sob carga elevada, garantindo que o proxy de ingresso tenha recursos adequados. Timeouts configuráveis e limites de cabeçalho ajudam a evitar ligações perdidas e falhas de requisições durante picos de tráfego.

Segurança

O objetivo do pilar Segurança é fornecer confidencialidade, integridade e disponibilidade garantias para a carga de trabalho.

Os princípios de design de segurança fornecem uma estratégia de design de alto nível para alcançar esses objetivos, aplicando abordagens ao design técnico de aplicações de contêiner.

Lista de verificação de design da carga de trabalho

Inicie a sua estratégia de conceção com base no checklist de revisão de conceção para segurança e identifique vulnerabilidades e controlos para melhorar a postura de segurança. Alargar a estratégia de modo a incluir mais abordagens, conforme necessário.

  • Revisão dos padrões de segurança. Para melhorar a postura de segurança da sua carga de trabalho, reveja a linha de base de segurança para aplicativos de contêiner.

  • Integre com o Microsoft Entra ID para gerenciamento de identidade e acesso. Utilize controlo de acesso baseado em funções (RBAC) com Microsoft Entra ID para acesso de privilégios mínimos.

    Use identidades gerenciadas com o Microsoft Entra ID para acesso seguro e sem credenciais aos recursos do Azure.

  • Implementar segmentação e controlos de rede. Implemente ambientes de aplicações em contentores privados e utilize o modo de entrada interno para isolar da internet pública.

    Controle o tráfego de saída. Para evitar a exfiltração de dados, integre seu ambiente de aplicativos de contêiner em uma rede virtual personalizada que tenha rotas definidas pelo usuário para ajudar a proteger o tráfego de saída.

    Use pontos de extremidade privados. Configurar endpoints privados para o seu ambiente de Aplicações de Contêiner de modo a garantir que o tráfego de entrada nunca passe pela internet pública. Desative o acesso à rede pública ao nível do ambiente quando usar endpoints privados. Esta abordagem proporciona um isolamento de rede mais forte do que o modo de entrada interno sozinho.

  • Mantém a cadeia de fornecimento de software de uma carga de trabalho reforçada. Implemente a varredura sensível a containers nas suas pipelines seguras de integração contínua e entrega contínua (CI/CD). Esse recurso deteta vulnerabilidades e ajuda a garantir a integridade das imagens de contêiner. Para mais informações, consulte Cadeia de Abastecimento Segura de Contentores.

    Reduzir a superfície de ataque. Reforçar as imagens dos contentores e remover os componentes não utilizados. Use imagens de base enxutas e mínimas, como imagens Alpine e Chiselled Ubuntu.

    Integre com o Microsoft Defender. Use o Microsoft Defender for Containers para digitalizar imagens no Registro de Contêiner do Azure.

  • Isolar a execução de código não confiável. Para cargas de trabalho que executam código submetido pelo utilizador ou gerado por IA, utilize sessões dinâmicas para executar código em sandboxes seguros e efémeros. As sessões dinâmicas utilizam o isolamento do Hyper-V para proporcionar uma separação robusta ao nível do kernel entre as sessões. Cada sessão é automaticamente destruída após a utilização, o que impede fugas de dados entre execuções.

  • Encripte os dados em repouso e os dados em trânsito. Use métodos modernos padrão do setor para proteger a confidencialidade e a integridade.

    Utilize o Azure Key Vault. Armazene valores de configuração sensíveis e segredos no Key Vault para protegê-los de acessos não autorizados.

    Ativar Segurança Mútua da Camada de Transporte (mTLS). Use mTLS para autenticar e criptografar o tráfego entre serviços. Este recurso verifica ambas as partes, o que aumenta a segurança.

    Aplique HTTPS. Configure o proxy do Envoy para redirecionar todo o tráfego HTTP para HTTPS. A configuração padrão para o Envoy é allowInsecure: false.

  • Desenvolver uma estratégia de monitorização da segurança. Capture registos detalhados para monitorização e auditoria. Envie registos de sistema e de consola para um espaço de trabalho do Log Analytics, para os Event Hubs ou para uma solução não-Microsoft, para fins de monitorização e auditoria. Elimine dados sensíveis dos registos. Os registos de consola têm origem nos fluxos stderr e stdout na aplicação.

  • Adote deliberadamente perfis confidenciais de carga de trabalho. Utilize perfis confidenciais de cargas de trabalho para cargas que devem proteger dados em uso, como processamento regulado ou inferência de modelos sensíveis. Verifique a autenticação, disponibilidade regional, compatibilidade de imagem e runbooks operacionais antes do lançamento, pois ambientes de execução confiáveis adicionam restrições de implementação e suporte.

Recomendações de configuração

Recommendation Benefit
Use identidades gerenciadas para acessar recursos protegidos pelo Microsoft Entra ID. Atribuir uma identidade gerida à sua aplicação de contentor para aceder a recursos Azure protegidos pelo Microsoft Entra ID, como uma conta de armazenamento ou um cofre de chave, sem ter de usar chaves ou palavras-passe. Centralize a gestão de identidade e elimine a necessidade de gestão manual de credenciais. Simplifique o acesso seguro aos recursos do Azure.
Implante aplicativos de contêiner em uma rede privada para integrá-los a uma rede virtual existente. Use funcionalidades como conectividade de aplicação privada, anexação de grupo de segurança de rede (NSG) e comunicação de recursos através de um endereço IP privado. Proporcione isolamento da internet pública e permita comunicação segura entre aplicações em contentores e outros recursos de rede.
Utilize endpoints privados em ambientes de perfis de carga de trabalho para restringir o acesso de entrada a um endereço IP privado dentro da sua rede virtual. Desative o acesso à rede pública ao nível do ambiente. Certificar-se de que o tráfego não atravesse a internet pública, o que proporciona um isolamento de rede mais forte do que somente a injecção de rede virtual. Reduza a exposição a ataques baseados na internet e cumpra os requisitos de conformidade para conectividade exclusivamente privada.
Use o Cofre da Chave para gerenciar certificados e segredos de aplicativos com segurança aprimorada. O Key Vault mantém os certificados e outros segredos da aplicação separados da configuração da sua aplicação. Também fornece um registo de auditoria de acesso que detalha quando os certificados e segredos são atualizados, recuperados e rotacionados. Ajude a proteger informações sensíveis, garantir conformidade e apoiar a gestão segura de segredos utilizando capacidades de registo e rotação de certificados.
Utilize o Gateway de Aplicação do Azure com o Firewall de Aplicações Web ativado para ajudar a proteger o tráfego HTTP e HTTPS ao publicar a sua aplicação de contentores através de um proxy reverso. O Firewall de Aplicação Web analisa o tráfego HTTP recebido para detectar potenciais ataques do Open Web Application Security Project (OWASP). Melhore a segurança protegendo contra vulnerabilidades comuns da web e fornecendo gestão centralizada de tráfego.
Autentique-se com o Microsoft Entra ID no Registro de Contêiner para evitar o uso de credenciais administrativas. Pode controlar o acesso via RBAC (controlo de acesso baseado em funções). Ativar o controlo de acesso granular através de RBAC para a gestão de imagens de contêineres, o que ajuda a garantir uma autenticação segura e sem credenciais.
Utilize as regras NSG para ajudar a proteger o tráfego que acede ao endpoint das suas aplicações de contentor internas. As regras NSG oferecem um controle mais granular sobre quais redes virtuais podem comunicar com as suas aplicações em contentores. Melhore a segurança da rede restringindo o acesso apenas a redes confiáveis, o que minimiza as superfícies de ataque.
Controle o tráfego de saída através de rotas de rede definidas pelo usuário. Controle como os seus contentores comunicam com recursos fora do ambiente de contentores. Pode encaminhar o tráfego para o Firewall do Azure, o Gateway NAT do Azure ou um dispositivo não-Microsoft. Garantir um fluxo de tráfego de saída controlado e seguro, que suporta políticas avançadas de encaminhamento e inspeção.
Configure as opções de registo para enviar logs para um espaço de trabalho do Log Analytics, Event Hubs ou uma solução não Microsoft. Apoiar a monitorização centralizada, diagnósticos e auditorias, garantindo o cumprimento das políticas de manuseio de dados sensíveis.
Use sessões dinâmicas para executar código não confiável ou gerado por IA em sandboxes isolados e efémeros. Configure pools de sessões com períodos de recarga adequados e definições de isolamento de rede. Atribuir o papel Azure Container Apps Session Executor via RBAC para controlar o acesso às APIs do pool de sessões. Fornecer forte isolamento Hyper-V para cada sessão de execução de código, que previna que código malicioso afete o host ou outras sessões. A limpeza automática das sessões elimina o risco de fuga de dados entre execuções.

Otimização de Custos

A Otimização de Custos concentra-se em detetar padrões de gastos, priorizar investimentos em áreas críticas e otimizar em outras para atender ao orçamento da organização enquanto atende aos requisitos de negócios.

Os princípios de design para otimização de custos oferecem uma estratégia de design de alto nível para alcançar esses objetivos e fazer concessões conforme necessário no design técnico relacionado aos Aplicativos de Contêiner e seu ambiente.

Lista de verificação de design da carga de trabalho

Comece a sua estratégia de design com a checklist de revisão de design para otimização de custos em investimentos. Ajuste o design para que a carga de trabalho esteja alinhada com o orçamento alocado para a carga de trabalho. Seu design deve usar os recursos certos do Azure, monitorar investimentos e encontrar oportunidades para otimizar ao longo do tempo.

  • Selecione planos de preços apropriados. Escolha os planos de preços mais rentáveis para as suas aplicações de contentor com base nos requisitos de carga de trabalho e nos padrões de utilização esperados.

    Aproveite o plano de poupança da Azure para computação comprometendo-se com uma taxa fixa por hora durante um ou três anos. Use um plano de poupança para economizar até 17% em comparação com o pagamento conforme o uso. Otimize seu orçamento e reduza as despesas gerais para cargas de trabalho previsíveis e de longo prazo.

  • Otimize os custos dos componentes da carga de trabalho. Revise e ajuste regularmente as alocações de CPU e memória para corresponder às necessidades das suas aplicações. Esta prática evita a sobreprovisionamento e minimiza os custos.

    Utilize níveis de disco geridos. Quando utiliza montagens de volume, selecione as gamas e tamanhos de discos geridos apropriados para otimizar os custos de armazenamento de dados persistentes. Pague apenas aquilo de que necessita.

    Utilize imagens de contêiner simplificadas e otimizadas para melhorar os tempos de inicialização e a eficiência de recursos, o que reduz os custos de armazenamento e rede.

    Otimize os custos da carga de trabalho da GPU. Para cargas de trabalho em IA e aprendizagem automática, utilize GPUs serverless com faturação por segundo e capacidade de escalar até zero para eliminar custos durante os períodos de inatividade. Selecione o tipo de GPU apropriado com base nos requisitos de carga de trabalho. Use GPUs T4 económicas para inferência e tarefas leves. Reserve as GPUs A100 para treino de grandes modelos e cenários de alto nível de computação.

  • Otimizar os custos de escalonamento. Configure políticas de escalonamento automático para reduzir automaticamente os recursos durante períodos de baixa demanda e aumentá-los durante os horários de pico. Esta prática garante o uso eficiente dos recursos.

  • Otimizar os custos de rede. Otimize os caminhos de rede para minimizar os custos de transferência de dados, especialmente para aplicações que têm altos volumes de largura de banda.

  • Utilize ferramentas de gestão de custos. Utilize as ferramentas de Gestão de Custos da Microsoft para acompanhar e analisar despesas, definir orçamentos, criar alertas de custos e implementar etiquetagem consistente em todos os recursos.

    Estas ferramentas oferecem visibilidade detalhada sobre os gastos com a nuvem, ajudam a identificar oportunidades de poupança, garantem a conformidade com as restrições orçamentais e permitem um acompanhamento e reporte detalhado dos custos associados a cargas de trabalho, aplicações e ambientes específicos.

Recomendações de configuração

Recommendation Benefit
Analise e ajuste regularmente a CPU, as alocações de memória e outras métricas para alinhá-las com as necessidades reais de seus aplicativos. Previna a superprovisionamento e reduza custos desnecessários ao garantir que os recursos sejam adequados para as cargas de trabalho.
Implemente regras de dimensionamento automático de escala zero para aplicativos que não precisam ser executados continuamente. Elimine os custos durante os períodos de inatividade, o que garante que só pague pelos recursos quando realmente precisa deles. Esta abordagem reduz significativamente as despesas para aplicações que têm padrões de utilização variáveis ou pouco frequentes.
Escolha os níveis de discos geridos apropriados para aplicações com estado. Baseie sua seleção nas necessidades de desempenho e capacidade de armazenamento e considere o uso de discos reservados para cargas de trabalho previsíveis. Assegure-se de que só paga pelo desempenho de armazenamento necessário, evitando assim custos excessivos associados a armazenamento sobredimensionado. Discos reservados podem proporcionar economias de custo significativas para necessidades de armazenamento a longo prazo ao oferecer descontos em comparação com a tarifação pay-as-you-go.
Use GPUs sem servidor com escala até zero para trabalhos de IA e aprendizagem automática que tenham demanda variável ou intermitente. Selecione o tipo de GPU apropriado, como T4 para inferência ou A100 para treino. Elimine os custos da GPU durante os períodos de inatividade com faturação por segundo e escala automática até zero.

Evite o excesso de provisionamento ao ajustar o tipo de GPU à intensidade da carga de trabalho, o que pode reduzir significativamente os custos de computação das cargas de trabalho de IA.
Avalie o custo de ingressos premium e endpoints privados comparando-os com os seus padrões de tráfego e requisitos de segurança. Estas características acarretam custos adicionais em comparação com a entrada padrão. Evite custos desnecessários utilizando funcionalidades de rede premium apenas quando padrões de tráfego de carga de trabalho ou requisitos de conformidade justificarem o custo adicional.

Excelência Operacional

A Excelência Operacional concentra-se principalmente em procedimentos para práticas de desenvolvimento de , observabilidade e gestão de lançamento.

Os princípios de design de Excelência Operacional fornecem uma estratégia de design de alto nível para alcançar essas metas relativamente aos requisitos operacionais da carga de trabalho.

Lista de verificação de design da carga de trabalho

Inicie sua estratégia de design com base na lista de verificação de revisão de projeto para Excelência Operacional para definir processos de observabilidade, teste e implantação relacionados a Aplicativos de Contêiner.

  • Implementar uma abordagem de implementação de infraestrutura como código (IaC). Implemente implementações baseadas em modelos usando ferramentas como Bicep ou Terraform. Assegure que todas as implementações são repetíveis, rastreáveis e armazenadas num repositório de código fonte.

  • Automatize as implementações de infraestrutura e de cargas de trabalho. Utilize soluções de software padrão para gerir, integrar e automatizar a implementação das suas cargas de trabalho.

    Configure pipelines de implementação para reimplementar o ambiente noutra região caso ocorra uma interrupção regional. Esta abordagem ajuda a restaurar e a redistribuir rapidamente dados críticos e configurações noutra região, o que melhora as capacidades de recuperação de desastres e minimiza o tempo de inatividade durante falhas regionais.

    Crie processos automatizados para configurar seus ambientes com as configurações e implantações necessárias usando pipelines de CI/CD.

  • Implementar uma estratégia de monitorização abrangente. Configure as definições de diagnóstico para capturar logs, métricas e dados de diagnóstico. Utilize ferramentas como o Azure Monitor e o Application Insights para monitorizar a saúde e o desempenho das aplicações, identificar tendências de desempenho e fiabilidade, e resolver problemas.

    Emitir telemetria para cargas de trabalho. Conceba as suas cargas de trabalho para emitir dados de telemetria, incluindo os estados de atividade e preparação, para facilitar a monitorização e resolução de problemas.

    Monitorizar métricas de desempenho. Monitorizar continuamente métricas de desempenho chave, como CPU, memória e utilização da rede, para identificar oportunidades de otimização de custos e eficiência operacional.

    Usa o agente gerido OpenTelemetry. Permitir que o agente OpenTelemetry emita trilhos, métricas e registos padronizados sem ter de implementar e gerir um coletor personalizado. O agente gerido suporta múltiplos destinos de exportação e reduz o encargo operacional de manter a infraestrutura de observabilidade.

  • Implementar engenharia do caos. Aplique práticas de engenharia do caos usando ferramentas como o Azure Chaos Studio para identificar problemas potenciais de fiabilidade no seu ambiente de Aplicações em Contêiner. Conduza experiências para garantir que as suas aplicações possam resistir a falhas inesperadas. Realize testes de desempenho utilizando ferramentas como o Azure Load Testing para garantir que as regras de escalonamento funcionem conforme esperado, sem interrupções para os clientes.

  • Implemente uma marcação de recursos consistente em todas as aplicações de contêiner e outros recursos de carga de trabalho. A etiquetagem consistente facilita a gestão eficiente de recursos, o acompanhamento de custos e a automatização.

  • Impor a governança do trabalho. O Azure Policy ajuda a garantir a conformidade consistente com os padrões organizacionais, automatiza a aplicação de políticas e fornece visibilidade e controlo centralizados sobre os recursos da sua carga de trabalho.

  • Padronizar os caminhos de exportação de telemetria. Use destinos de exportação geridos para dados OpenTelemetry para ligar Aplicações Container a plataformas como New Relic, Dynatrace, Elastic ou outros backends suportados sem executar coletores personalizados. Defina o roteamento, a amostragem, a retenção e a responsabilidade por destino para que a observabilidade se mantenha consistente e os custos sob controlo em todos os ambientes.

  • Planeie o registo de tráfego de entrada de elevado volume. Ative ContainerAppHTTPLogs apenas para cenários que exijam diagnóstico ao nível do pedido de latência, novas tentativas ou falhas de encaminhamento. Defina limiares de retenção, redação e custo antes do lançamento, pois registos HTTP de alto volume podem aumentar o armazenamento, privacidade e sobrecarga de análise.

Recomendações de configuração

Recommendation Benefit
Armazene suas configurações de ambiente de Aplicativos de Contêiner como IaC e configure pipelines de implantação para reimplantar o ambiente em outra região se ocorrer uma interrupção regional. Assegure-se de que pode restaurar e redistribuir rapidamente dados e configurações críticas noutra região, o que melhora as capacidades de recuperação de desastres e minimiza o tempo de inatividade durante falhas regionais.
Use revisões para implementar implantações azul-verde ou implantações canárias.

As revisões exigem que você etiquete e versionar as imagens de contêineres de forma adequada. Pode usar etiquetas nas revisões para facilitar a partilha, por exemplo, para testes de aceitação de utilizadores ou pré-visualizações limitadas.
Minimize o tempo de inatividade e reduzir o risco durante as implementações ao permitir lançamentos seguros e reversões rápidas.
Configure Azure Monitor e Application Insights. Acompanhe o desempenho e a saúde das suas aplicações em contentores e forneça informações detalhadas sobre o desempenho e a fiabilidade das aplicações. Utilize estas informações para detetar e resolver problemas proativamente.
Ative o agente OpenTelemetry gerido para rastreamento distribuído padronizado, métricas e recolha de registos. Reduzir a sobrecarga operacional de implementar e manter um coletor personalizado da OpenTelemetry. Fornecer dados de observabilidade consistentes em todas as aplicações contentores sem exigir alterações na instrumentação ao nível da aplicação.
Para cargas de trabalho Java, use Eureka Server gerido para Spring e Config Server para componentes Spring em vez de auto-hospedar a infraestrutura de descoberta e configuração de serviços. Configure clusters altamente disponíveis do Eureka para cargas de trabalho de produção. Reduza a complexidade operacional utilizando componentes Java totalmente geridos com gestão integrada do ciclo de vida. Elimine a necessidade de corrigir, escalar e monitorizar instâncias auto-hospedadas do Eureka e do Config Server.

Eficiência de desempenho

A Eficiência de Desempenho tem a ver manter a experiência do usuário, mesmo quando há um aumento na de carga por meio do gerenciamento de capacidade. A estratégia inclui dimensionar recursos, identificar e otimizar potenciais gargalos e otimizar para obter o máximo desempenho.

Os princípios de design de Eficiência de Desempenho fornecem uma estratégia de design de alto nível para atingir essas metas de capacidade de acordo com o uso esperado.

Lista de verificação de design da carga de trabalho

Inicie a sua estratégia de design com base na lista de verificação de revisão de design para eficiência de desempenho para definir uma linha de base com base em indicadores-chave de desempenho para Aplicações em Contêiner.

  • Desenvolva um plano detalhado de capacidade para garantir que os seus aplicativos em contêiner tenham recursos suficientes para lidar com cargas variáveis, evitando a super-provisionamento. Um plano de capacidade ajuda a otimizar custos e desempenho.

    Atualize regularmente o seu plano para documentar as alocações corretas de recursos, configurações de dimensionamento automático e estratégias de failover para as suas aplicações em contentores. Este método garante que você possa restaurar e redistribuir rapidamente dados críticos e configurações em outra região, o que melhora as capacidades de recuperação de desastres e minimiza o tempo de inatividade durante falhas regionais.

  • Habilite o dimensionamento automático. Configure políticas de dimensionamento automático para ajustar automaticamente o número de instâncias de contêiner com base na demanda em tempo real, o que garante um desempenho ideal durante os horários de pico e fora de pico.

  • Otimize a alocação de recursos. Monitore e ajuste continuamente as alocações de CPU e memória com base em métricas de desempenho para garantir o uso eficiente dos recursos e prevenir a superprovisionamento.

  • Realizar testes de carga. Realize testes de carga regulares para avaliar o desempenho e a escalabilidade das suas aplicações em contentores em diferentes condições. Os testes ajudam a garantir que as aplicações em contentores possam lidar com os níveis de tráfego esperados.

  • Cargas de trabalho separadas. Implementar cargas de trabalho críticas e sensíveis em ambientes separados do Container Apps para evitar problemas de vizinhança barulhenta. Distribua cargas de trabalho por múltiplos ambientes para garantir que aplicações críticas tenham recursos dedicados. Este método também garante que as exigências de desempenho de aplicações menos críticas não afetem as aplicações críticas.

  • Selecione perfis de carga de trabalho de GPU apropriados para cargas de trabalho intensivas em computação. Para cargas de trabalho de inferência de IA, aprendizagem automática e computação de alto desempenho, selecione GPUs serverless para demandas intermitentes ou perfis dedicados de carga de trabalho de GPU para cargas de trabalho contínuas e sensíveis à latência. Escolha o tipo de GPU apropriado, como T4 para inferência ou A100 para treino, com base nos seus requisitos de desempenho. Minimize a latência de inicialização a frio para GPUs serverless usando imagens de contentores leves, transmissão de artefactos e configuração de réplicas mínimas.

  • Use entrada premium para executar cargas de trabalho sensíveis à latência. Configure o ingress premium para alocar recursos de computação dedicados ao proxy de ingress. Configure timeouts personalizados e definições de escalabilidade para evitar que a camada de entrada reduza os pedidos sob alta concorrência.

Recomendações de configuração

Recommendation Benefit
Configure políticas de dimensionamento automático para ajustar automaticamente o número de instâncias de contêiner em resposta às demandas de recursos. Ajude a manter o desempenho e a eficiência de custos dos aplicativos. Assegure-se de que os recursos estejam disponíveis quando necessário e sejam conservados quando não forem necessários. Utilize o Azure Load Testing para realizar experiências de teste de carga e ajustar as políticas de escalonamento automático conforme necessário.
Use a camada dedicada de perfis de carga de trabalho para aplicativos que exigem desempenho previsível e alocação de recursos garantida. Forneça recursos dedicados às aplicações críticas, garantindo desempenho consistente e reduzindo o risco de contenção de recursos.
Use métricas de dimensionamento personalizadas, como métricas baseadas em dados específicos do aplicativo, para orientar as decisões de dimensionamento automático. Assegure-se de que as ações de escalonamento sejam baseadas nas exigências relevantes de carga de trabalho, o que melhora a eficiência e a capacidade de resposta das suas aplicações em contentores.
Use GPUs sem servidor para inferência de IA e cargas de trabalho de aprendizagem automática que tenham padrões de procura variável. Use perfis dedicados de carga de trabalho de GPU para cargas de trabalho sustentadas e sensíveis à latência. Selecione o tipo de GPU que corresponda aos seus requisitos de desempenho. Garantir que as cargas de trabalho intensivas em computação tenham acesso à aceleração adequada da GPU. GPUs serverless proporcionam escalabilidade elástica para procura variável, enquanto perfis dedicados proporcionam desempenho consistente e de baixa latência para cargas de trabalho sustentadas.
Ative o ingresso premium e configure recursos dedicados, escalonamento e timeouts personalizados para o proxy de ingress em cargas de trabalho sensíveis à latência ou de alto rendimento. Eliminar gargalos de proxy de ingresso que podem aumentar a latência de resposta em condições de alta concorrência. Recursos dedicados de entrada ajudam a garantir uma taxa de transferência consistente dos pedidos e uma latência previsível.
Utilize montagens de volume de arquivos Azure NFS com armazenamento Premium para cargas de trabalho Linux que são intensivas em I/O e que requerem um armazenamento partilhado de baixa latência. Proporcionar maior largura de banda de I/O e menor latência do que as montagens SMB para contentores baseados em Linux, melhorando assim o desempenho para cargas de trabalho que frequentemente leem ou escrevem dados.

Políticas do Azure

Azure fornece um conjunto extenso de políticas integradas relacionadas a Aplicações de Contentores e suas dependências. Algumas das recomendações anteriores podem ser auditadas por meio da Política do Azure. Por exemplo, pode verificar se:

  • As definições de diagnósticos devem ser ativadas: Ative o registo por grupo de categorias para ambientes de Aplicações de Contêiner (microsoft.app/managedenvironments) para enviar informações para o Armazenamento. Esta configuração garante que o Armazenamento recolha de forma consistente registos e métricas para monitorização, resolução de problemas e conformidade.

  • Autenticação para Container Apps deve ser ativada: Ative a autenticação para impedir solicitações HTTP anônimas e autentique solicitações através de tokens antes que cheguem a um ambiente de Container Apps.

  • Os ambientes de Container Apps devem usar injeção de rede: Configure os ambientes de Container Apps com injeção de rede virtual para isolá-los da internet pública, permitir a integração de rede com recursos localmente ou outras redes virtuais do Azure, e obter controlo granular sobre o tráfego de rede.

  • O acesso à rede pública deve ser desativado: Desative o acesso à rede pública para melhorar a segurança, expondo o ambiente dos Container Apps através de um balanceador de carga interno. Esta abordagem bloqueia o acesso à internet para todas as aplicações de contentores dentro do ambiente.

  • O acesso à rede externa deve ser desativado: Imponha a entrada apenas interna para garantir que a comunicação de entrada para aplicações em contêineres seja limitada a chamadores dentro do ambiente de Aplicações em Contêineres.

  • O HTTPS deve ser imposto: Certifique-se de que as aplicações em contentores sejam acessíveis apenas através de HTTPS para proteger os dados em trânsito contra ataques de escuta à camada de rede.

  • Deve-se ativar identidades geridas: Exigir identidades geridas para ambientes de Container Apps de forma a autenticar de modo seguro em qualquer recurso que suporte autenticação com Microsoft Entra ID.

Para uma governação abrangente, reveja as definições internas de políticas do Azure para Aplicações de Contentores e outras políticas que possam afetar a segurança das redes.

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.

Para obter mais informações, consulte Assistente do Azure.

Exemplo de arquitetura

Arquitetura fundamental que demonstra as principais recomendações: Microserviços com Azure Container Apps.

Próximos passos