← AZ-400: DevOps da entrega à operação
24 / 26 · 120 MIN

Deployments: esquema, rollout e exposição controlada

Rever alterações de base de dados, interpretar progresso do candidato e confirmar decisões efetivas de feature flags antes de promover uma entrega.

Ligar o plano ao estado que será alterado

Uma entrega que inclui a base de dados precisa de identificar mais do que a versão da aplicação. Regista o artefacto de esquema, as propriedades de publicação, o destino e o estado que serviu de base ao plano. DeployReport descreve alterações propostas; DriftReport descreve diferenças em relação ao registo de uma base registada. Nenhum dos dois prova que a alteração foi executada. Um script SQL revisto também deixa de ser evidência suficiente se o destino mudou de forma relevante desde a análise. No exercício, D4 foi analisado contra S0, mas uma tentativa deixou S1 e confirmou uma regra. A próxima decisão começa por observar S1 e os efeitos aplicados. Não uses o resultado failed do pipeline para substituir essa observação nem para concluir que o destino continua em S0.

Interpretar proteções sem lhes atribuir garantias adicionais

BlockOnPossibleDataLoss pode interromper uma alteração de esquema mesmo numa tabela vazia. Desativá-lo não transforma valores incompatíveis nem demonstra que a alteração seja aceite. Analisa o risco identificado e o tratamento dos dados antes de escolher a propriedade. As opções de remoção também têm âmbito: DoNotDropObjectTypes=Tables protege um tipo de objeto, não apenas Archive. Se TempImport deve desaparecer, a exceção abrangente não expressa a intenção completa. Revê o plano resultante e separa a decisão de retenção da limpeza autorizada. IncludeTransactionalScripts usa transações onde possível, sem incluir automaticamente instruções enviadas por outro passo a um parceiro. Para Azure SQL Database, não uses BackupDatabaseBeforeChanges como prova de recuperação, pois a opção não se aplica. O plano precisa de um mecanismo e evidência adequados ao serviço e à janela disponível.

Rever os scripts que ficam fora do modelo

Um pre-script executa antes do plano, mas o plano já foi calculado antes dessa execução. Alterar o esquema no pre-script pode por isso invalidar pressupostos da comparação. Os scripts pré e pós-deployment estão no dacpac, mas não são compilados nem validados com o modelo de objetos. Um build bem sucedido não substitui a sua revisão. No exemplo da regra R7, o post-script faz um INSERT com chave única; a segunda execução encontra uma linha já existente. Define o resultado esperado se a linha não existir, se já tiver o valor correto ou se tiver um valor diferente. Um IF de existência pode evitar duplicação e ainda ocultar uma divergência de valor. O procedimento deve observar e reconciliar esse estado, mantendo evidência da decisão e das alterações autorizadas.

Escolher uma estratégia de migrações verificável

Um script EF não idempotente parte de um estado de migrações conhecido. Se M2 é a última aplicada e o objetivo é M4, o intervalo começa em M2. Um script idempotente num provider suportado consulta o histórico para aplicar as migrações em falta. Esse histórico não deteta automaticamente uma coluna removida manualmente depois de M4. Os bundles facilitam transporte e execução; um bundle self-contained adequado ao runtime pode dispensar SDK e fontes no agente. Contudo, não substitui SQL revisto quando essa é uma condição da entrega. Mantém correspondência entre artefacto, script e inputs aceites. Define ambiente e ligação de destino explicitamente e disponibiliza os ficheiros não secretos que o contexto lê. Um nome de job Production não demonstra que o processo recebeu configuração de produção.

Separar serialização, compatibilidade e recuperação

O lock de migração de EF Core 9 e posteriores protege a execução concorrente de migrações. Não demonstra que uma instância antiga continue a funcionar enquanto o esquema muda. Ensaiar coexistência de versões, controlar privilégios de alteração e ordenar dependências continuam a ser decisões da equipa. Uma aplicação não deve receber permissões adicionais apenas porque o arranque consegue executar uma migração. Avalia um passo separado quando revisão e disponibilidade o exigem. Também distingue Down de restauro de dados: recriar uma coluna vazia não repõe valores removidos. No caso de falha parcial, identifica commits, regras consumidas e efeitos externos antes de repetir. Uma continuação revista pode ser adequada, tal como uma recuperação autorizada; ambas precisam de demonstrar o estado pretendido e os dados que têm de ser preservados.

Ler o estado de rollout da revisão pretendida

Em Kubernetes, Available pode continuar verdadeiro graças aos Pods antigos enquanto a revisão nova não progride. Lê as condições juntamente com réplicas atualizadas, identidade do template e resultados funcionais. ProgressDeadlineExceeded não faz rollback automático pelo controlador Deployment. A decisão de recuperação precisa de ser explícita. Para três réplicas e limites de 25%, maxUnavailable arredonda para zero e maxSurge para um. Se não há capacidade adicional, não contes com remover primeiro um Pod saudável para criar espaço. minReadySeconds exige readiness sustentada antes de contar a réplica como disponível. Alterar apenas uma anotação exterior a spec.template não inicia uma nova revisão. Finalmente, confirma retenção de histórico: um número de revisão cujo ReplicaSet foi removido não permite recuperar o template por rollout undo sem outra definição preservada.

Validar a decisão efetiva das feature flags

Uma flag enabled=true com filtros de audiência e janela temporal precisa de requirement_type=All se ambos forem obrigatórios. Any, que é a predefinição do esquema Microsoft, permite um filtro verdadeiro. No targeting, uma exclusão prevalece sobre pertença a um ring habilitado. Usa casos de fronteira para verificar o comportamento pretendido, incluindo utilizador excluído e pedido fora da janela. Se duas componentes do mesmo pedido têm de conservar a primeira decisão, o snapshot fornece consistência nesse âmbito; não congela o valor entre todas as instâncias. Confirma ainda quais as flags carregadas: UseFeatureFlags sem parâmetros seleciona flags sem label. Um filtro production para key-values normais não demonstra seleção da flag com essa label. Antes de atribuir o resultado aos filtros, verifica se o provider carregou a definição correta.

Decidir promoção com evidência por instância

No exemplo, a revisão nova excedeu a deadline e uma instância inativa conserva FeesV2 ligada, apesar da alteração no portal. O middleware documentado atualiza configuração em resposta a pedidos e respeita o intervalo de refresh; o pedido que desencadeia a atualização assíncrona ainda pode ver valores anteriores. Não apresentes a gravação no portal como confirmação em todas as instâncias. Mantém a exposição contida, investiga progresso e confirma a configuração efetivamente carregada e avaliada. Usa os registos fictícios abaixo para escrever uma decisão em três partes: critério, evidência observada e trabalho em falta. Explica uma alternativa aceitável e a condição para adiar. O exercício não executa SQL, Kubernetes ou Azure; serve para praticar interpretação. Um ensaio real deve identificar versões, configuração, identidades e resultados, sem transformar um exemplo de curso em procedimento interno do banco.

{
  "exercise": "fictional-delivery-review",
  "database": {
    "approvedPlanTargetState": "S0",
    "observedTargetState": "S1",
    "schemaChangeCommitted": true,
    "ruleR7Committed": true,
    "postScriptResult": "failed"
  },
  "deployment": {
    "intendedRevision": 8,
    "availableOldPods": 3,
    "availableNewPods": 0,
    "conditions": {
      "Available": true,
      "Progressing": false,
      "reason": "ProgressDeadlineExceeded"
    }
  },
  "featureFlag": {
    "id": "FeesV2",
    "portalEnabled": false,
    "instanceAObservedEnabled": false,
    "instanceBObservedEnabled": true,
    "instanceBRefreshMode": "request-driven",
    "instanceBHasReceivedNewRequest": false
  },
  "acceptance": {
    "requiresApplicableReviewedDatabasePlan": true,
    "requiresNewRevisionStable": true,
    "requiresFlagOffOnEveryInstance": true,
    "approvedException": false
  }
}
NA PRÁTICA

Uma regra SQL ficou committed antes de uma falha; noutra etapa, Pods antigos mantêm disponibilidade enquanto a nova revisão falha e uma flag conserva estado anterior.

Armadilhas comuns

Tratar um plano como execução, falha como rollback, disponibilidade antiga como aceitação do candidato e gravação no portal como propagação concluída.

Tópicos relacionados: Evidência de pipelines e identidade do artefacto · Compatibilidade de versões e continuidade de serviço · Migrações, recuperação e passagem a RUN

Leva esta ideia contigo

Cada decisão deve usar evidência do estado atual e do candidato pretendido. Proteções técnicas têm âmbito e não substituem compatibilidade, recuperação e critérios de aceitação.

Criar conta

Referência: SqlPackage deploy report and drift report · AZ-400 objectives 2026-07-27

Microsoft é uma marca comercial do grupo de empresas Microsoft. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por Microsoft. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.