Table of Contents
Azure Container Apps (ACA) é uma plataforma de container totalmente gerenciada e sem servidor no Microsoft Azure que abstrai as complexidades da orquestração Kubernetes, oferecendo ainda recursos de escala, recursos orientados para eventos e padrões de aplicação integrados. Ela é projetada para o desenvolvimento moderno de aplicativos, onde as equipes precisam implantar microserviços, tarefas de fundo e terminais de API sem provisionamento ou gerenciamento de máquinas virtuais, clusters ou orquestradores. Ao combinar a flexibilidade de containers com simplicidade sem servidor, ACA permite que os desenvolvedores se concentrem em código e lógica empresarial enquanto Azure lida com a infraestrutura subjacente, escala e segurança.
O que são aplicativos de container Azure?
Azure Container Apps opera como um ambiente gerenciado para a execução de cargas de trabalho em containers, estando entre o Azure App Service (para aplicativos web) e o Azure Kubernetes Service (AKS) (para controle completo de clusters). Ele fornece uma experiência Kubernetes simplificada sem exigir interação direta com o servidor de APIs de cluster. A ACA usa Kubernetes sob o capô, mas abstrai sua complexidade operacional, tornando-o ideal para equipes que querem benefícios de containers – portabilidade, consistência, isolamento de recursos – sem gerenciar nós, pods ou balanceadores de carga.
Cada aplicativo de container é executado em um ambiente baseado em revisões, onde você pode implantar várias revisões e gerenciar a divisão de tráfego. A plataforma suporta arquiteturas orientadas por eventos através de integração integrada com KEDA (Kubernetes Event-Driven Autoscaling) e Dapr[ (Distributed Application Runtime) para construção de aplicações resilientes, baseadas em microserviços.Aplicações de container também suporta escalas de zero, o que significa que você só paga para computação quando os pedidos são ativos – perfeitos para cargas de trabalho esporádicas, processadores de fundo ou trabalhos em lote.
Principais recursos e capacidades
Arquitetura sem servidor e Escala Automática
O modelo sem servidor da ACA elimina a necessidade de fornecer e gerenciar VMs ou nós de cluster. A plataforma escala automaticamente com base no tráfego HTTP, gatilhos de eventos (por exemplo, profundidade da fila, agendamentos de crons), ou métricas personalizadas através de escaladores da KEDA. O escalonamento pode ser configurado por revisão, e você pode definir as contagens de réplicas min e max. Quando inativo, um aplicativo de container pode escalar para zero réplicas, economizando custos e recursos.
Suporte incorporado à Dapr
Dapr fornece um conjunto de blocos de construção (gestão de estado, pub/sub, invocação de serviço, segredos, encadernação) que simplificam aplicações distribuídas de construção. A ACA integra a Dapr no nível da plataforma, para que você possa habilitá-lo por Container App sem gerenciar um sidecar separado ou infraestrutura. Isso reduz o código da placa de caldeira e acelera o desenvolvimento de microserviços robustos.
Gestão de Revisão e Divisa de Tráfego
Os aplicativos do Container usam um modelo de revisão semelhante ao Azure App Service: cada código ou alteração de configuração cria uma nova revisão, enquanto as revisões antigas permanecem disponíveis. Você pode definir as percentagens de tráfego entre as revisões para realizar implementações azuis-verdes, testes A/B ou lançamentos em palco. As revisões podem ser ativadas, desativadas ou usadas para rollback, dando-lhe um controle fino sobre a segurança da implantação.
Domínios de Entrada e Personalizados
Cada aplicativo de Container recebe um endpoint HTTPS único (por exemplo, ]). Você pode atribuir domínios personalizados com certificados SSL/TLS, configurar a entrada para permitir tráfego interno (VNet) ou externo, e configurar regras de tráfego para roteamento baseado em caminhos em vários aplicativos.
Ambiente e Rede
Os aplicativos do container residem em um ambiente Conteiner Apps Environment, que atua como um limite seguro em torno de seus aplicativos. O ambiente suporta a integração VNet (ambientes externos ou internos), permitindo a comunicação privada entre aplicativos, bancos de dados e outros serviços Azure. Você também pode usar endpoints privados e grupos de segurança de rede para controlar o tráfego.
Identidade e Segredos Gerenciados
ACA suporta identidades gerenciadas Azure, permitindo que seus contêineres se autenticem nos serviços Azure (Key Vault, Storage, SQL Database) sem credenciais de codificação. Segredos podem ser referenciados diretamente do Azure Key Vault, e variáveis ou volumes de ambiente podem ser injetados em tempo de execução.
Ativando aplicativos de container Azure
A implantação de um aplicativo de container envolve várias etapas, desde a contêinerização de sua aplicação até a configuração do ambiente e as regras de escala. Abaixo está um fluxo de trabalho expandido.
Passo 1: Prepare e empurre sua imagem do recipiente
Comece criando um arquivo Docker para sua aplicação (por exemplo, .NET, Node.js, Python, Go). Certifique-se de que a imagem está otimizada (compilações em múltiplos estágios, imagens de base mínimas). Empurre a imagem para um registro de contêiner – idealmente Registro de Container Azul (ACR)[] para proximidade e integração. Se usar um registro público como Docker Hub, ACA pode puxar de lá também, mas ACR oferece puxões mais rápidas dentro da rede Azure.
Passo 2: Criar um Ambiente de App Container
Antes de implantar uma aplicação, você deve criar um Ambiente de Apps de Container. Isto pode ser feito através do Portal Azure, Azure CLI, Bicep, ARM ou Terraform. O ambiente define a região, a rede virtual (opcional) e se é interno ou público. Para a produção, habilite a integração VNet para garantir o tráfego de saída e usar os terminais privados. Exemplo Comando CLI:
az containerapp env create --name MyEnvironment --resource-group MyRG --location eastusPasso 3: Definir e implantar o aplicativo do recipiente
Use o comando para definir o aplicativo, referenciando a imagem, variáveis de ambiente, segredos, configurações de entrada e configuração de escala. Exemplo:
az containerapp create --name myapp --resource-group MyRG \
--environment MyEnvironment --image myregistry.azurecr.io/myapp:v1 \
--target-port 8080 --ingress external --query properties.configuration.ingress.fqdnIsso cria uma revisão e expõe o aplicativo através de um FQDN gerado automaticamente. Você pode atualizar mais tarde o aplicativo com novas imagens, variáveis de ambiente ou regras de escala usando .
Passo 4: Configurar segredos e identidade gerenciada
Armazene valores sensíveis (cordas de conexão, chaves API) no Azure Key Vault e faça referência a eles como segredos em seu aplicativo Container. Habilite uma identidade gerenciada atribuída ou atribuída pelo usuário para que seu aplicativo possa autenticar o Key Vault e outros recursos Azure sem credenciais em código.
Passo 5: Definir regras de escala
Configurar a escala automática com base em requisições HTTP, CPU, memória ou fontes de eventos personalizadas (por exemplo, filas de barramento de serviço Azure, Kafka, RabbitMQ). Use escaladores KEDA para activar a escala de sistemas externos. Por exemplo, para escalar com base no número de mensagens numa fila:
az containerapp update --name myapp --resource-group MyRG \
--min-replicas 0 --max-replicas 10 \
--scale-rule-name queue-scaler --scale-rule-type azure-queue \
--scale-rule-auth connection=queue-connection-string \
--scale-rule-metadata "queueName=myqueue" "queueLength=5"Gerenciamento de aplicativos de container Azure
Uma vez implantado, a gestão contínua envolve monitoramento, atualização e ajuste de escala e segurança.
Gestão de Revisão e Estratégias de Implantação
Use o modelo de revisão para atualizar sua aplicação sem tempo de inatividade. Quando você pressiona uma nova imagem ou altera a configuração, o ACA cria uma nova revisão. Por padrão, todo o tráfego vai para a última revisão. Para implementar uma implantação azul- verde:
- Atualizar o aplicativo com uma nova revisão (mantendo o antigo ativo).
- Envie uma pequena porcentagem de tráfego para a nova revisão.
- Aumentar gradualmente o tráfego enquanto monitora erros e latência.
- Se estável, roteie 100% de tráfego para a nova revisão e desativar o antigo.
Esta abordagem minimiza o risco e permite uma rápida retrocessão, repelindo o tráfego para uma revisão anterior.
Monitoramento com Monitor Azure e Análise de Log
A integração com o Azure Monitor é automática. Você pode ver as métricas (contagem de pedidos, CPU, memória, contagem de réplicas) no Portal Azure. Para registros detalhados, configure sua aplicação Container para enviar os registros stdout/stderr e do sistema para um espaço de trabalho Log Analytics. Use consultas Kusto para detectar anomalias, erros de depuração ou analisar padrões de tráfego. Você também pode ativar Insights de Aplicação para rastreamento e monitoramento de desempenho distribuídos.
Autoscaling na produção
Embora a autoescalagem padrão funcione bem para muitos cenários, os aplicativos de produção muitas vezes requerem escaladores personalizados da KEDA. Exemplos comuns: escala com base na contagem de mensagens do Azure Service Bus, no backlog do Azure Event Hubs ou em uma métrica personalizada do Prometheus. Certifique-se de definir réplicas mínimas e máximas apropriadas para lidar com o tráfego de linha de base e a capacidade de ruptura. Use o portal ou CLI do Azure para monitorar o histórico de escala e ajustar os limiares.
Atualizando containers e rolamentos para trás
Os aplicativos do Container suportam atualizações de zero-downtime através da ativação de revisão. Quando você implantar uma nova imagem, a nova revisão é iniciada em paralelo com a antiga. Uma vez que a nova revisão é saudável, o tráfego é redirecionado. Se as verificações de saúde falharem, o ACA pode reverter automaticamente. Para o retorno manual, basta ajustar o peso do tráfego para 100% na revisão anterior.
Melhores Práticas de Segurança
Identidades gerenciadas para Azure Resources
Habilite a identidade gerenciada do sistema para o seu aplicativo Container. Isto permite que o aplicativo acesse o Key Vault, Armazenamento e bancos de dados sem armazenar credenciais na imagem do container ou variáveis de ambiente. Use a identidade para autenticar via Azure AD.
Gestão secreta com o cofre da chave
Nunca segredos de código rígido. Armazene todos os dados confidenciais no Azure Key Vault e faça referência a eles na configuração do seu aplicativo de container como referências secretas. ACA injeta automaticamente estas variáveis de ambiente ou monta volume em tempo de execução. Rotate segredos em Key Vault sem reimplantar.
Segurança da rede
Para serviços somente internos, implante seu Ambiente de Apps de Container com tráfego externo desativado. Use a integração VNet para restringir o tráfego de saída/inbound via grupos de segurança de rede. Para tráfego de entrada de terminais públicos, habilite a restrição IP na entrada ou use o Azure Front Door ou API Management na frente.
Segurança de Imagens do Container
Use imagens de base confiáveis do Registro de Artefato da Microsoft ou de outras fontes seguras. Examine imagens para encontrar vulnerabilidades usando Microsoft Defender para Containers ou a digitalização integrada do ACR. Assine imagens para garantir a integridade. Habilite a extração de imagem através do ACR com endpoints privados para evitar exposição pública.
Conformidade e Certificações
Azure Container Apps herda certificações de conformidade Azure (SOC, PCI DSS, HIPAA, ISO). Certifique-se de que seu ambiente é implantado em uma região que atenda aos requisitos de residência de dados. Use a Política Azure para impor governança (por exemplo, requerendo injeção de VNet ou registros de imagem específicos).
Otimização de custos
Consumo vs. Plano Dedicado
A ACA oferece duas camadas de preços: Consumo (pagamento por vCPU-segundo e memória-segundo) e Dedicado[ (p.c.p.p. e memória). O consumo é melhor para cargas de trabalho variáveis ou de baixo tráfego, enquanto que Dedicado proporciona custo e desempenho previsíveis para aplicações de produção em estado estacionário. Use o consumo para cenários de dev/teste e escala-para-zero.
Auto- scale e escalonamento para zero
Configure réplicas mínimas para 0 para tarefas de fundo ou APIs com tráfego imprevisível. Isto não garante nenhum custo de computação quando inativo. Para as localizações críticas que necessitam de resposta instantânea, defina um mínimo de 1 para evitar arranques a frio. Use os escalonadores KEDA para reagir à profundidade da fila ou à carga do banco de dados em vez de uma CPU sempre- on.
Casos e planos de poupança reservados
Para os planos dedicados, comprometa-se com um ano ou três anos de casos reservados para poupar até 40% em comparação com o pagamento-como-você-vá. Azure Saving Plans também se aplica ao cálculo de aplicativos de container. Analise o seu uso e estime o consumo de base antes de reservar capacidade.
Imagens de Container Eficientes
Imagens menores reduzem os custos de extração e armazenamento. Use imagens base alpinas ou distrossadas, limpe artefatos de construção e caches de camadas com sabedoria. Guarde apenas o tempo de execução na sua imagem – mantenha as ferramentas de construção em uma fase de construção separada. Isso também melhora o tempo de inicialização e a velocidade de escala.
Integrando-se a outros serviços Azure
Registo de Container Azure
Use o ACR como seu registro privado para aplicativos Container. Ele suporta geo-replicação, digitalização de imagens e assinatura de artefatos. Habilite a conta de `admin' do ACR ou use identidade gerenciada para autenticar as capturas de forma segura. Para implantação de regiões cruzadas, geo-replicar suas imagens para reduzir a latência.
Pipelines CI/CD com DevOps Azure e ações GitHub
Automatize as implementações usando tarefas do Azure CLI em Azure DevOps ou ações do GitHub. Você pode construir uma imagem, empurrar para ACR e atualizar a revisão do aplicativo Container em um único pipeline. Exemplo GitHub Actions workflow step:
- name: Deploy to Azure Container Apps
run: az containerapp update --name myapp --resource-group MyRG --image myacr.azurecr.io/myapp:latestUse slots de implantação (revisão de divisão de tráfego) para encenar e validar alterações antes de ser lançado.
Integração conduzida por eventos
Aproveite o bloco de construção de pub/sub da Dapr com o Azure Service Bus ou os Hubs de Eventos para dissociar microserviços. Configure os escalonadores KEDA para activar escalas com base na profundidade da fila. Este padrão é excelente para processamento de pedidos, notificação ou fluxos de trabalho em lote.
Melhores práticas para o desenvolvimento de aplicações modernas
- Adotar uma arquitetura de microservices que se alinha com o modelo de revisão e entrada da ACA. Cada serviço deve ter seu próprio Container App com escala independente e ciclo de vida.
- Implementar pipelines CI/CD que compilam, testam, verificam e implementam automaticamente. Use o código infra-estrutura (Bicep/Terraform) para definir ambientes, garantindo repetibilidade.
- Prioritize a segurança desde o início: use identidades gerenciadas, referências de Key Vault, integração VNet e digitalização de imagens. Rode segredos regularmente e audite o acesso.
- Optimizar para custo escolhendo o plano certo, definindo réplicas sensíveis min/max e usando capacidade reservada para cargas de trabalho estáveis.
- Ativar observação precoce: envie logs para Log Analytics, habilite Insights de Aplicação e configure alertas sobre taxas de erro, latência de solicitação e contagem de réplicas.
- Use Dapr e KEDA para lidar com preocupações transversais: gestão do estado, tentativas de reversão, barra/sub e escala de eventos.Isso reduz a caldeira e melhora a resiliência.
- Design para escalar para zero se a sua carga de trabalho permitir.Começos frios são tipicamente menos de dois segundos para recipientes simples; você pode mitigar com sondas de saúde e réplicas min apropriadas.
Seguindo estas práticas e aproveitando o tempo de execução do container do Azure Container Apps, as equipes podem criar e operar aplicações modernas escaláveis, seguras e econômicas. A plataforma reduz a sobrecarga operacional, dando aos desenvolvedores a liberdade de usar qualquer linguagem, framework ou ferramenta que seja executado em um container.
Para orientação oficial de mergulho profundo, consulte a documentação Azure Container Apps. Para saber mais sobre padrões de aplicação distribuídos com o Dapr, visite a documentação Dapr[. Para exemplos de auto-escalagem orientados por eventos, verifique a documentação KEDA[.