Escalar Aplicativos de Contêiner do Azure com KEDA, computação dimensionada e revisões
Voltar para a trilha AI-200
AI-200Capítulo 5

Estudo para a Certificação Microsoft AI-200

Escalar Aplicativos de Contêiner do Azure com KEDA, computação dimensionada e revisões

Projete cargas de IA responsivas e econômicas com gatilhos HTTP, TCP, recursos, filas, eventos, agenda e métricas personalizadas e controle como revisões independentes recebem tráfego.

Tempo de estudo sugerido: 90 minutos • Nível intermediário • Reescrita autoral completa com versão resumida de cada tópico, avaliação comentada e laboratório KEDA guiado

Escudo neon Microsoft Certified AI-200 com símbolos de IA, desenvolvimento em nuvem, automação, segurança e monitoramento

1. Escalar uma carga de IA sem comprar ociosidade

Uma plataforma de pedidos enfrenta picos programados e explosões inesperadas de campanhas. Capacidade fixa desperdiça dinheiro à noite e ainda produz checkout lento no pico. Um desenho melhor separa a síncrona do worker de atendimento assíncrono e dá a cada componente um sinal que represente o trabalho real.

O objetivo não é apenas criar réplicas: é equilibrar resposta , drenagem da fila, redução a zero quando o cold start for aceitável, teto de custo e implantações que não enviem todos os usuários a uma revisão não comprovada.

  • Configurar gatilhos , , CPU e memória.
  • Escalar por filas, fluxos, agenda e métricas com KEDA.
  • Escolher CPU, memória e perfil de carga de trabalho com dados.
  • Usar modos, rótulos e pesos lembrando que cada revisão escala separadamente.

Resumo do tópico

Escolha um sinal por carga, defina limites de desempenho e custo e trate escala e implantação como um único desenho operacional.

2. Definição de escala: limites, regras, comportamento e cobrança

Os declaram a escala horizontal. Limites restringem réplicas por revisão, regras descrevem a demanda e comportamento controla a decisão no tempo. O KEDA converte sinais compatíveis em uma contagem desejada; cada réplica executa uma revisão imutável.

Partes da definição de escala.
PartePerguntaConsequência
MínimoO que fica aquecido?Zero economiza; um ou mais reduz cold start.
MáximoQual é o teto de capacidade e custo?Baixo limita vazão; alto pode pressionar dependências.
RegrasQual sinal representa trabalho?, , recursos ou eventos.
ComportamentoCom que rapidez muda?Sondagem, estabilização, resfriamento e passos evitam oscilação.

Com entrada e sem regra personalizada, o padrão é de zero a dez réplicas por . Sem entrada, mínimo ou gatilho, a aplicação pode chegar a zero e não acordar. Em zero não há cobrança de computação; uma réplica ociosa em memória pode ter tarifa reduzida.

Sinais de demanda passam por limites e comportamento do KEDA até a contagem de réplicas dos Aplicativos de Contêiner do Azure.
A decisão de escala reúne limites, regras e comportamento temporal.

Resumo do tópico

Limites contêm capacidade, regras detectam trabalho, comportamento estabiliza a resposta e o mínimo define a base entre disponibilidade e custo.

3. Regras de concorrência e

usa a média de requisições concorrentes em 15 segundos; o alvo padrão é dez por réplica. Alvo menor escala cedo e aumenta folga; alvo maior utiliza mais cada réplica e pode elevar latência. A regra chega a zero e serve e Web, mas não trabalhos dos Aplicativos de Contêiner.

usa conexões concorrentes na mesma janela. É melhor para , , pools de banco e conexões longas. Ao fechar todas as conexões, a revisão pode voltar a zero após o resfriamento.

az containerapp create \
  --name order-api --resource-group rg-ai200-scale \
  --environment ai200-env \
  --image contoso.azurecr.io/order-api:v1 \
  --min-replicas 1 --max-replicas 10 \
  --scale-rule-name http-load --scale-rule-type http \
  --scale-rule-http-concurrency 50

Resumo do tópico

Use para requisições e para conexões persistentes; ajuste o alvo pela capacidade e latência medidas por réplica.

4. Regras de CPU, memória e combinação

CPU e memória são escaladores personalizados do KEDA que comparam utilização média a um percentual. CPU representa inferência, imagem, transcodificação e serialização; memória representa , agregação e grandes cargas.

Essas regras não acordam uma aplicação em zero porque precisam de réplica para medir. Mantenha uma réplica ou combine com ou evento. Com várias regras, qualquer uma pode iniciar a expansão e prevalece a maior contagem solicitada.

scale:
  minReplicas: 1
  maxReplicas: 20
  rules:
    - name: http-load
      http:
        metadata:
          concurrentRequests: "100"
    - name: cpu-pressure
      custom:
        type: cpu
        metadata:
          type: Utilization
          value: "70"

Resumo do tópico

Recursos protegem cargas intensivas, mas exigem gatilho externo para zero; combine demanda e pressão para adicionar capacidade.

5. Sondagem, resfriamento, estabilização e fórmula

Escaladores personalizados e de eventos são consultados a cada 30 segundos; e usam 15 segundos. Resfriamento e estabilização de redução são 300 segundos por padrão; estabilização de aumento é zero. A expansão segue passos como 1, 4, 8, 16 e 32; a redução remove de uma vez o total excedente.

O KEDA parte de réplicasDesejadas = teto(métricaAtual / métricaAlvo) e aplica mínimo, máximo e passo. Cinquenta mensagens com alvo cinco pedem dez. A espera antes de reduzir evita desligar e reacender em uma pausa curta.

  • Mantenha aquecimento se latência valer mais que ociosidade.
  • Permita zero em workers intermitentes com fonte capaz de acordá-los.
  • Inclua os cinco minutos padrão na estimativa de economia.
  • Correlacione métrica e réplicas no antes de ajustar o limiar.

Resumo do tópico

Um limiar correto ainda precisa de tempo adequado: expansão rápida, redução estável e resfriamento compatível com o ritmo da carga.

6. Integração KEDA e fontes nativas do

O KEDA reage a profundidade de fila, atraso do consumidor, agenda e métricas que não descreve. A regra informa tipo, de conexão e limiar e autenticação, sem exigir que a equipe opere um ScaledObject do Kubernetes.

A Microsoft oferece suporte primário a , , , , Analytics e . Escaladores comunitários ampliam o catálogo, com maturidade variável.

Barramento de Serviço, Armazenamento de Filas, Hubs de Eventos, Kafka, Redis, cron e Prometheus alimentam o KEDA.
Escala por eventos converte backlog durável ou sinal mensurável em réplicas e retorna a zero quando o trabalho termina.

Resumo do tópico

O KEDA transforma trabalho externo em demanda de réplicas; prefira fontes com suporte primário e avalie cuidadosamente as comunitárias.

7. Escaladores de e

O monitora mensagens ativas de fila ou assinatura. queueName ou topicName e subscriptionName selecionam o backlog; identifica o serviço e messageCount é o alvo por réplica. Cinquenta mensagens com alvo cinco pedem dez réplicas.

usa accountName, queueName e queueLength sobre a contagem aproximada. É econômico para filas simples. Prefira quando precisar de sessões, mensagens mortas, agendamento, recursos avançados ou maior vazão.

az containerapp create \
  --name order-worker --resource-group rg-ai200-scale \
  --environment ai200-env \
  --image contoso.azurecr.io/order-worker:v1 \
  --min-replicas 0 --max-replicas 30 \
  --scale-rule-name order-backlog \
  --scale-rule-type azure-servicebus \
  --scale-rule-metadata "queueName=orders" \
                        "namespace=sb-ai200" \
                        "messageCount=5" \
  --scale-rule-identity <MANAGED_IDENTITY_RESOURCE_ID>

Resumo do tópico

Escolha para mensageria avançada e para o caso simples, calculando o alvo pelo tempo de processamento.

8. Partições dos e autenticação segura

O escalador dos mede eventos não processados entre o fim de cada partição e o ponto de verificação do grupo consumidor. consumerGroup, unprocessedEventThreshold e checkpointStrategy definem o cálculo; blobMetadata é recomendado quando o guarda checkpoints. O paralelismo útil não excede as partições.

scale:
  minReplicas: 0
  maxReplicas: 32
  rules:
    - name: stream-lag
      custom:
        type: azure-eventhub
        metadata:
          consumerGroup: "$Default"
          unprocessedEventThreshold: "64"
          checkpointStrategy: "blobMetadata"
        auth:
          - secretRef: event-hubs-connection
            triggerParameter: connection

Segredo funciona para conexão ou chave, mas exige rotação. Quando houver suporte, use com a função mínima, como Data Receiver. Ela elimina credenciais armazenadas e é a resposta recomendada em produção.

Resumo do tópico

Não escale além do paralelismo útil de partições e prefira de privilégio mínimo.

9. Escaladores personalizados e conversão do KEDA

Fontes baseadas em ScaledObject incluem Apache Kafka, Redis Lists e , Prometheus, Cron, PostgreSQL, MySQL, e de métricas. Verifique significado, autenticação, , mantenedor e suporte. Escaladores externos podem exigir componentes separados.

  1. Mapeie triggers[].type para --scale-rule-type ou custom.type.
  2. Converta triggers[]. em da CLI do ou .
  3. Substitua TriggerAuthentication por segredos e auth, ou .
  4. Mapeie minReplicaCount e maxReplicaCount para os limites.
  5. Teste recursos sem equivalente exato nos .

Resumo do tópico

A conversão preserva tipo, , autenticação e limites e valida explicitamente diferenças da plataforma.

10. Sinais do Apache Kafka e Redis

Kafka mede o atraso do grupo consumidor entre offsets finais e confirmados. bootstrapServers, consumerGroup, topic e lagThreshold definem a regra; SASL/PLAIN, SASL/SCRAM ou protegem a conexão. Réplicas além das partições não ampliam consumo paralelo.

Redis Lists compara LLEN a listLength com address e listName. Redis acompanha entradas pendentes e entregues mas não confirmadas, representando melhor a recuperação. Selecione a variante padrão, ou Sentinel e sua autenticação.

Resumo do tópico

Kafka escala por atraso; Redis, por itens enfileirados ou pendentes. Topologia, confirmação e autenticação limitam o paralelismo.

11. Linha de base Cron e métricas Prometheus

Cron solicita desiredReplicas entre start e end no timezone indicado. Fora da janela não influencia. Combine com ou eventos: pré-aqueça um pico previsto e permita que a demanda real solicite mais; prevalece a maior solicitação.

scale:
  minReplicas: 0
  maxReplicas: 20
  rules:
    - name: business-hours
      custom:
        type: cron
        metadata:
          timezone: "America/Sao_Paulo"
          start: "0 8 * * 1-5"
          end: "0 18 * * 1-5"
          desiredReplicas: "5"
    - name: live-demand
      http:
        metadata:
          concurrentRequests: "50"

Prometheus executa uma consulta PromQL em serverAddress e divide o resultado pelo threshold; metricName identifica o sinal. Serve para sessões ativas, transações pendentes, ou métrica de negócio que represente trabalho melhor que concorrência.

Resumo do tópico

Cron antecipa capacidade; Prometheus reage a uma métrica significativa. Use sinais preditivos e reativos juntos.

12. CPU, memória, falhas e capacidade total

Recursos são por contêiner em cada réplica. Memória em GiB deve ser no mínimo duas vezes a CPU em núcleos. O ponto inicial comum é 0,25 CPU e 0,5 GiB; Consumption de propósito geral chega a 4 CPU e 8 GiB por contêiner. têm alocação própria.

Estourar memória encerra e reinicia; exceder CPU limita e aumenta latência. Capacidade máxima é recurso por réplica vezes máximo de réplicas. Vinte réplicas de 0,5 CPU somam dez núcleos. Réplicas maiores têm passos grosseiros; menores escalam com precisão e mais sobrecarga.

az containerapp update \
  --name order-api --resource-group rg-ai200-scale \
  --cpu 0.5 --memory 1.0Gi \
  --min-replicas 2 --max-replicas 20

Resumo do tópico

Dimensione cada contêiner pelos gargalos medidos e multiplique pelo máximo para comprovar capacidade e teto de custo.

13. Consumption, Dedicated, Flex, custo e desempenho

Consumption é sem servidor, cobra por réplica em execução e favorece demanda variável e zero. Dedicated reserva VMs para consistência, alocações maiores, isolamento ou hardware especializado. A documentação atual também lista Flex em prévia: computação de locatário único, características de cobrança por consumo, réplicas maiores e sem redução a zero. Confirme região e limites antes de adotar.

Comece com padrões, teste modelo e representativos e aumente apenas diante de limitação de CPU, falta de memória, latência ou . Mantenha mínimo para estrito e observe no . Mil réplicas por revisão é limite de serviço, não plano: dependências e paralelismo útil chegam antes.

Perfis Consumption, Dedicated e Flex seguidos pela escolha entre revisão única e múltipla.
A computação define desempenho e cobrança; o modo de revisão define como versões compartilham tráfego e escala.

Resumo do tópico

Use Consumption para elasticidade, Dedicated para consistência ou recursos maiores e avalie Flex em prévia, sempre com evidência de carga e custo.

14. Revisões imutáveis e modo único ou múltiplo

Revisão é instantâneo imutável. Imagem, regras de escala, variáveis e recursos do template criam outra; segredos, entrada, tráfego, rótulos, credenciais de registro e modo são do aplicativo e não reescrevem uma revisão.

Único é padrão: a anterior atende até a nova provisionar, atingir a contagem e passar sondas; depois o tráfego muda e a antiga desativa. Múltiplo mantém várias para canary, azul-verde e A/B, exigindo gestão explícita.

az containerapp update \
  --name order-api --resource-group rg-ai200-scale \
  --revision-mode multiple

az containerapp ingress traffic set \
  --name order-api --resource-group rg-ai200-scale \
  --revision-weight order-api--stable=90 order-api--candidate=10

Resumo do tópico

Modo único automatiza substituição protegida; múltiplo adiciona convivência controlada e exige tráfego, monitoramento e limpeza.

15. Pesos, rótulos e escala independente

Pesos de revisões ativas somam 100% e o roteamento é probabilístico. Comece canary com 5% ou 10%, observe erro, latência, recursos e réplicas, avance brevemente e conclua ou reverta.

Rótulo cria direta estável para uma revisão e independe da divisão principal. Começa com letra, usa minúsculas, números e hifens simples e tem até 64 caracteres. Pode ser movido atomicamente.

Cada revisão ativa escala por seu tráfego, regras e mínimo. Duas em 50/50 podem custar mais que uma em 100%. Desative a antiga após transição; inativas não consomem réplicas e ficam para até o limite de 100 revisões.

Resumo do tópico

Pesos governam a principal, rótulos dão acesso dirigido e revisões ativas escalam separadamente; monitore e retire capacidade de rollout.

16. Laboratório, avaliação e referências Microsoft

O exercício de 30 minutos implanta de agente simulada, cria e Aplicativos de Contêiner, configura concorrência pelo KEDA, gera carga, acompanha réplicas e reaplica . Exige assinatura com permissão, plano pago porque ACR Tasks pode não aceitar créditos gratuitos, , CLI do atual e Python 3.12 ou superior.

  1. Registre FQDN, revisão, mínimo, máximo e réplicas saudáveis.
  2. Aplique alvo e gere requisições paralelas.
  3. Correlacione carga, réplicas, latência e revisão.
  4. Altere , confirme nova revisão e valide de novo.
  5. Remova recursos descartáveis e não use dados ou segredos reais.
Decisões da avaliação.
CenárioRespostaMotivo
Worker do ociosoMínimo zero e regra -servicebus.O backlog durável acorda; e CPU não o representam.
Cinco réplicas às 8h e zero à noiteCron combinado com .Cron aquece e reage.
Validar 10%Modo múltiplo e pesos.Modo único não divide tráfego.
Autenticação de produção.Remove credencial e permite privilégio mínimo.
  1. Scaling in
  2. Workload profiles in
  3. Revisions in
  4. Traffic splitting in
  5. Managed identities in
  6. KEDA scalers catalog
  7. - az containerapp

Resumo do tópico

A prática comprova o gatilho sob carga, observa revisão e réplicas e liga as respostas do exame ao sinal, rollout e autenticação.