Pular para o conteúdo

Por que a execução foi bloqueada

Aula 8 de 85 minConhecerAtualizada em 2026-10-04

Vídeo em produção

A gravação desta aula está no lote de produção. O objetivo, o exercício e a documentação já valem. Duração-alvo: 5 min.

Objetivo: Explicar fail-closed, suspensão e kill switch

Selo de estado: Preview (teto atual do produto) · Curso ACD-230 — Operação: orquestração, falhas e recuperação · Aula 8 de 8 · Atualizado em 2026-10-04.

Objetivo#

Ao final desta aula você vai distinguir as três camadas que podem bloquear uma execução — papel, cobrança e capacidade — e explicar por que elas são fail-closed.

Vídeo#

Identificador no manifesto: acd-230-08-suspensao-e-acoes-caras · duração-alvo 5 min · tela do produto: /dags.

Roteiro (4 capítulos):

#Minutagem-alvoCapítuloRota do produto
10:00–1:00Ação cara × leitura barata: as cinco ações caras, e por que ver um painel já materializado nunca bloqueia./dags
21:00–2:20Suspensão: a ordem de decisão (status local → central → fail-open só sem sinal), as mensagens 402/403 e por que a navegação continua./dags/[id]
32:20–3:40Desligamento de capacidade: a terceira camada, ortogonal ao plano e à inadimplência. Kill global, kill por capacidade, config versionada, default./sources/[id]
43:40–5:00Diferenciar os três bloqueios pela mensagem: Impedimentos — a execução está bloqueada. Encerramento do curso./dags/[id]

Conteúdo#

Fail-closed é a regra, e isso é a favor de quem usa

As três camadas de bloqueio fecham na dúvida. Um id de workspace inválido nunca "passa por engano"; uma configuração de capacidade ilegível fecha a capacidade em vez de abri-la no escuro; uma capacidade sensível sem decisão explícita nasce desligada. O produto prefere recusar com um motivo escrito a executar algo caro por acidente.

O conceito: ação cara × leitura barata

Ação caraLeitura barata
O que éconsome dinheiro ou recurso de nuvemserve dado já materializado
Exemplosatualização manual, execução/envio de relatórios, consultas via API, exportação, recursos de IAabrir um dashboard ou snapshot pronto
Em atrasobloqueada, com mensagem e link para Planosnunca bloqueia

A assimetria é deliberada: quem só consome BI não é derrubado porque a assinatura atrasou; quem vai gastar nuvem é barrado no ponto de execução. E a navegação no app continua justamente porque o inadimplente precisa conseguir chegar até Planos para pagar.

Executar um pipeline entra na família das ações caras: com a assinatura em atraso, suspensa ou cancelada, a execução é recusada com mensagem explícita — e a recusa acontece antes de tocar em qualquer recurso pago.

As três camadas, ortogonais

CamadaRespondeResultado típico
Papel (RBAC)o que o seu papel pode fazerrecusa por papel (403)
Conta em diase a assinatura está regularrecusa por cobrança (402) ou falta de contrato (403)
Capacidade / desligamentose a superfície está expostasuperfície responde indisponível

São independentes: estar com a conta em dia não garante que a capacidade esteja ligada, e uma capacidade ligada não dispensa o papel certo.

Suspensão — a ordem da decisão: (1) status local em atraso, suspenso ou cancelado ⇒ bloqueia ações caras (402), sem nem consultar a central; (2) senão, a central do produto respondendo "não permitido" ⇒ bloqueia (suspenso → 402; sem contrato → 403); (3) fail-open somente quando não há sinal nenhum — status local não-negativo e central sem resposta; inativo/pendente não bloqueiam de propósito, porque é o estado normal de workspace novo ou em teste; (4) leitura barata nunca bloqueia. Depois do pagamento, a liberação depende do provedor confirmar — a central tem cache de cerca de 60 segundos.

Desligamento de capacidade — a ordem da decisão: (1) kill global fecha tudo; (2) kill por capacidade fecha aquela superfície; (3) configuração versionada aplica liberação gradual, listas de permissão/negação, sobreposição por organização, workspace ou usuário, e validade; (4) default: capacidade declarada e sem kill nasce exposta, mas capacidade sensível sem decisão explícita nasce desligada. O desligamento de emergência é sobreposto por último — emergência sempre vence, inclusive sobre configuração sob medida, e tem efeito imediato, sem redeploy. As capacidades de execução (ingestão e relatórios) são justamente as que, desligadas, fazem com que nada rode, enfileire ou seja entregue.

Capacidade desligada não é inadimplência

Se o refresh, a IA ou a exportação pararam mas o dashboard abre, pode ser capacidade desligada — e não falta de pagamento. As duas situações têm mensagens diferentes; ler a mensagem é o diagnóstico.

As telas e os botões reais

Na página da execução (/dags/[id]), quando há algo impedindo executar, o produto mostra o bloco Impedimentos — a execução está bloqueada, com o motivo — em vez de um botão morto ou de um erro genérico. É a mesma filosofia da prévia de recuperação (aula 4): o produto diz o que vai (ou não vai) acontecer antes de você clicar. Em /sources/[id], uma tentativa de ingestão numa situação bloqueada responde com a mensagem pronta e o caminho de regularização, nunca com um falso "concluído".

As mensagens são padronizadas em português: pagamento em atraso, assinatura suspensa, assinatura cancelada (as três com link para Planos), workspace sem contrato ativo do produto e workspace não encontrado.

Exemplo: a Comércio Aurora

A Aurora entra em atraso de pagamento. Maria, João e Ana continuam vendo os dashboards já materializados — leitura barata não bloqueia. Mas ninguém consegue: disparar atualização manual, enviar relatórios, exportar, usar IA ou consultar pela API. Cada tentativa responde com a mensagem de cobrança e o link para Planos. A execução agendada do pipeline também não roda: ela é ação cara. Maria, que é dona, acessa Planos, paga, e em cerca de um minuto tudo volta.

Semanas depois, acontece o outro caso: durante um incidente de plataforma, o operador aciona o desligamento da API externa. As chamadas à API passam a responder indisponível, mas os dashboards internos da Aurora seguem no ar — porque o dado interno não foi tocado. João procura o aviso de pagamento e não encontra nenhum: a mensagem é diferente, e é isso que diz a ele que a causa é outra camada.

Erros comuns

EnganoPor que aconteceLeitura correta
"Parou tudo, então é falta de pagamento"Três camadas produzem recusas parecidas à primeira vistaLeia a mensagem: cobrança, papel e capacidade dizem coisas diferentes
"Paguei e ainda bloqueia"Cache da central (~60 s) e confirmação do provedorAguarde e tente de novo
"Dashboard abre, então está tudo liberado"Leitura barata é isolada das ações carasAbrir painel não prova que executar está liberado
Confundi pausar com executarAgenda pausada e execução bloqueada parecem iguais na listaAgenda pausada é escolha sua; bloqueio traz Impedimentos com motivo (aula 1)
Reexecutei e duplicou linhasInsistir no botão depois que o bloqueio caiu, sem revisar escopoDepois de liberar, recupere com escopo mínimo e leia a prévia (aula 4)
Log não bate com o erroProcurar causa técnica no log quando a recusa é de acessoRecusa de acesso aparece como impedimento, não como falha de tarefa (aula 2)

Estado do produto

A verificação central de acesso é GA-candidato (regra única, fail-closed, coberta por testes) e o resolvedor de capacidades é Preview — fail-closed e testado, mas controle operacional de plataforma, não um botão self-service por workspace hoje. O teto da plataforma continua Preview: a prova de isolamento entre clientes em nuvem é claim pendente, e a API externa está fora de disponibilidade geral. A verificação em si custa R$ 0 — o objetivo dela é exatamente conter custo quando a conta não está em dia.

Faça você mesmo#

Esta é uma aula de conhecimento (kind: conhecer): não há exercício operacional no console — nada aqui pede que você suspenda uma conta ou desligue capacidade, porque esses controles não são self-service. Os passos são de leitura e reconhecimento.

  1. Liste de memória as cinco ações caras e confirme na documentação de suspensão. Depois, diga qual delas o curso inteiro tratou (execução de pipeline).
  2. Abra um dashboard da Aurora Varejo em modo consulta e identifique por que essa leitura nunca seria bloqueada por atraso de pagamento.
  3. Em /dags/[id], localize onde o produto mostraria o bloco Impedimentos — a execução está bloqueada. Se não houver impedimento agora, leia a estrutura da página e identifique o lugar.
  4. Compare, lado a lado, as mensagens de cobrança (atraso, suspensa, cancelada, sem contrato) na documentação e escreva qual é o próximo passo de cada uma.
  5. Leia a ordem de decisão do desligamento de capacidade e responda: uma configuração ilegível abre ou fecha a capacidade?
  6. Explique, em uma frase, a diferença entre uma recusa por papel, uma por cobrança e uma por capacidade desligada.

Você terminou quando conseguir, diante de uma execução recusada, dizer qual das três camadas a recusou apenas lendo a mensagem — e explicar por que "fail-closed" protege o seu custo em vez de atrapalhar.

Checagem rápida#

Três perguntas no final da aula, corrigidas no servidor. A aula só conta como concluída depois da checagem.

Documentação relacionada#

Capacidades ensinadas#

C01.6 — o selo exibido na aula é sempre o estado mais conservador entre as capacidades citadas; nada aqui é "GA".

Carregando seu progresso…