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-alvo | Capítulo | Rota do produto |
|---|---|---|---|
| 1 | 0:00–1:00 | Ação cara × leitura barata: as cinco ações caras, e por que ver um painel já materializado nunca bloqueia. | /dags |
| 2 | 1:00–2:20 | Suspensã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] |
| 3 | 2:20–3:40 | Desligamento de capacidade: a terceira camada, ortogonal ao plano e à inadimplência. Kill global, kill por capacidade, config versionada, default. | /sources/[id] |
| 4 | 3:40–5:00 | Diferenciar 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 cara | Leitura barata | |
|---|---|---|
| O que é | consome dinheiro ou recurso de nuvem | serve dado já materializado |
| Exemplos | atualização manual, execução/envio de relatórios, consultas via API, exportação, recursos de IA | abrir um dashboard ou snapshot pronto |
| Em atraso | bloqueada, com mensagem e link para Planos | nunca 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
| Camada | Responde | Resultado típico |
|---|---|---|
| Papel (RBAC) | o que o seu papel pode fazer | recusa por papel (403) |
| Conta em dia | se a assinatura está regular | recusa por cobrança (402) ou falta de contrato (403) |
| Capacidade / desligamento | se a superfície está exposta | superfí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
| Engano | Por que acontece | Leitura correta |
|---|---|---|
| "Parou tudo, então é falta de pagamento" | Três camadas produzem recusas parecidas à primeira vista | Leia a mensagem: cobrança, papel e capacidade dizem coisas diferentes |
| "Paguei e ainda bloqueia" | Cache da central (~60 s) e confirmação do provedor | Aguarde e tente de novo |
| "Dashboard abre, então está tudo liberado" | Leitura barata é isolada das ações caras | Abrir painel não prova que executar está liberado |
| Confundi pausar com executar | Agenda pausada e execução bloqueada parecem iguais na lista | Agenda pausada é escolha sua; bloqueio traz Impedimentos com motivo (aula 1) |
| Reexecutei e duplicou linhas | Insistir no botão depois que o bloqueio caiu, sem revisar escopo | Depois de liberar, recupere com escopo mínimo e leia a prévia (aula 4) |
| Log não bate com o erro | Procurar causa técnica no log quando a recusa é de acesso | Recusa 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.
- 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).
- Abra um dashboard da Aurora Varejo em modo consulta e identifique por que essa leitura nunca seria bloqueada por atraso de pagamento.
- 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. - 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.
- Leia a ordem de decisão do desligamento de capacidade e responda: uma configuração ilegível abre ou fecha a capacidade?
- 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".