Pular para o conteúdo

v2 sobre pipeline ativo, shadow run, rollback

Aula 11 de 128 minOperarAtualizada em 2026-10-05

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: 8 min.

Objetivo: Publicar v2 sem desligar agenda; ler o diff

Selo de estado: Preview (teto atual do produto) · Curso ACD-220 — Pipelines e medalhão Bronze/Silver/Gold · Aula 11 de 12 · Atualizado em 2026-10-04.

Objetivo#

Ao final desta aula você vai publicar v2 sem desligar agenda; ler o diff — entender o que a publicação faz com a agenda existente, reconhecer uma mudança destrutiva e guardar a definição publicada como evidência.

Vídeo#

Identificador no manifesto: acd-220-11-publicar-versionar-rollback · duração-alvo 8 min · tela do produto: /sources.

Roteiro de gravação (5 capítulos):

#Minutagem-alvoCapítuloTela do produto
10:00–0:45Abertura: título + selo. Publicar = congelar a definição; a primeira publicação nasce com a agenda desligada./sources/[id]
20:45–2:40Painel Publicação e agenda: o selo da versão, o selo da agenda, Mudanças não publicadas e as quatro ações separadas./sources/[id]
32:40–4:50Revisar e publicar: o resumo, "Diferenças em relação à versão publicada" e a frase de efeito sobre a agenda./sources/[id]
44:50–6:30Mudanças destrutivas: a caixa de confirmação explícita e o que conta como destrutivo./sources/[id]
56:30–8:00Baixar definição publicada (JSON): o que vem, o que não vem, e por que os bytes são determinísticos. Encerramento com o "faça você mesmo"./sources/[id]

Conteúdo#

Publicar não liga agenda, e republicar não desliga

A primeira publicação cria a versão 1 e deixa a agenda desligada — nada é lido, escrito ou cobrado. Republicar um pipeline que já tem agenda ativa não desliga a agenda em silêncio: a tela diz o efeito antes de você confirmar. O produto nunca desliga sem avisar, e nunca liga por efeito colateral.

O painel Publicação e agenda

Na tela do pipeline, o painel mostra quatro fatos independentes e quatro ações separadas.

SeloQuando aparece
Versão N publicadaExiste versão registrada
Versão não registradaPipeline criado antes da publicação versionada (não se finge uma versão 1 retroativa)
Selo da agendaEstado real do despacho, não a chave crua do cadastro
Mudanças não publicadasA definição viva divergiu da última versão publicada

As quatro ações: Baixar definição publicada (JSON) · Revisar e publicar · Ativar agenda / Pausar agenda · Executar agora. Nenhuma acontece por efeito colateral da outra — e Executar agora responde explicitamente: "Execução disparada — ela NÃO liga a agenda."

Ler o diff antes de publicar

Revisar e publicar monta a revisão com cinco dimensões — origem, destino, escrita, agenda e limites — e um bloco "Diferenças em relação à versão publicada". O diff é em pt-BR e nomeia a tabela:

  • Tabela nova na Bronze: tb_vendas (de vendas).
  • Tabela tb_vendas: escrita substitui a tabela inteira → incremental por marca d'água.
  • Tabela tb_vendas: coluna-chave — → atualizado_em.
  • Tabela tb_clientes: colunas PII — → cpf, email.
  • Agenda: modo scheduled/daily às 04:00 (retroage 0) → modo scheduled/daily às 09:00 (retroage 7).
  • Volume estimado: 5 → 12 GB/mês.

Um subconjunto do diff é marcado como destrutivo, com ⚠ e em destaque: mudança de origem de uma tabela, mudança de escrita, tabela que deixou de ser carregada e tabela removida da Bronze ("a tabela já carregada no datalake não é apagada, mas para de ser atualizada"). Quando há qualquer destrutiva, a publicação exige uma caixa de confirmação explícita dizendo quantas mudanças reescrevem ou param de atualizar tabelas já carregadas. Sem marcar, não publica.

E a frase de efeito sobre a agenda, que muda conforme o estado:

Agenda antesO que a tela diz
Ligada"A agenda continua LIGADA — publicar não a desliga. A partir da publicação, as execuções agendadas usam a versão nova; execuções em curso terminam na versão que as criou."
Desligada"A agenda está DESLIGADA — publicar NÃO a liga e NÃO dispara carga. Use 'Ativar agenda' (ou 'Executar agora', se quiser rodar uma vez)."

Há ainda um caso silencioso que vale conhecer: se a definição viva é idêntica à publicada (mesmo checksum), publicar é idempotente — não cria versão nova. O histórico de versões não enche de v2, v3, v4 iguais.

O que a versão congela — e o que não congela

A versão congela a definição: o que ler, transformar e escrever. Ela não congela a credencial — o pipeline aponta para a conexão, então trocar a senha na conexão vale para todas as versões e todos os pipelines que a usam.

Voltar atrás: o que existe hoje

O motor de transformação tem versionamento, execução paralela de conferência (rodar sem publicar) e rollback provados por teste determinístico — é o que permite validar uma transformação nova sem expor ninguém ao resultado dela.

Para a definição do pipeline, seja preciso: o painel de publicação não tem um botão "restaurar versão". Voltar atrás é republicar a definição anterior — e é exatamente por isso que o JSON baixado importa: ele é a referência fiel do que estava publicado em cada versão. Guardar o arquivo de cada versão no repositório do time é a diferença entre "voltar atrás" e "tentar lembrar".

Baixar a definição publicada (JSON)

Com pelo menos uma versão publicada, o painel mostra Baixar definição publicada (JSON). Baixar é leitura: não executa, não publica, não mexe na agenda, custa R$ 0.

O que vem no arquivo: formatVersion (hoje 1); pipeline com id, name, version e publishedAt (UTC); e snapshot com a definição — conector, parâmetros não sensíveis da origem (endereço, banco, porta), prefixo de destino, agenda, limites (GB/mês estimado), tabelas Bronze (origem, destino, escrita full/append, coluna-chave, partição, clusterização, colunas PII marcadas) e transformações Silver/Gold (modo, origem, filtro, dependências) — além de v (versão do snapshot) e checksum.

O que não vem: nenhuma credencial (se um campo sensível for detectado, o download é recusado); nenhum dado (o arquivo descreve o pipeline, não o conteúdo das tabelas); nenhum estado de execução.

Por que ele é útil: as chaves são ordenadas e há um campo por linha, então a mesma definição produz sempre os mesmos bytes — dois arquivos de versões diferentes podem ser comparados com diff ou commitados. O checksum confere que o arquivo não foi alterado depois de baixado. O download fica registrado na auditoria (quem baixou e qual versão), e quem pode baixar é membro do workspace ou acima (viewer não). É também o artefato que o desafio do ICED pede como entrega.

Exemplo: a Comércio Aurora

A v1 de vendas está publicada com agenda ativa, diária às 09:00 UTC. Maria troca a escrita de vendas de Full para Append com atualizado_em e marca clientes.cpf como PII. Em Revisar e publicar o diff mostra três linhas, uma delas com ⚠ (a mudança de escrita é destrutiva). A frase de agenda diz que ela continua ligada. Maria marca a confirmação, publica a v2, baixa vendas-v2-definicao.json, roda diff contra o v1 que já estava no repositório do time — e vê em texto exatamente as três mudanças que a tela mostrou.

Erros comuns

SintomaO que conferirPróxima ação
Publiquei e nada rodouO estado da agendaComportamento esperado — use Ativar agenda ou Executar agora
Publiquei e a agenda sumiuA frase de efeito mostrada na republicaçãoReative em Ativar agenda; o produto nunca desliga sem avisar
Não consigo publicarA caixa de confirmação de mudanças destrutivasLeia as linhas com ⚠ e confirme conscientemente
O botão de baixar definição não apareceSe existe versão publicadaPublique uma vez com Revisar e publicar
"Ação não permitida para o papel viewer"Seu papel no workspaceBaixar exige member ou acima
Publiquei e não criou versão novaA definição é idêntica à publicadaEsperado: publicar é idempotente quando nada mudou
Troquei a senha e a v1 continua funcionandoA versão congela a definição, não a credencialÉ o comportamento desejado
Publicação bloqueadaA validação apontada na revisãoCorrija o item; não invente dependência nem credencial para avançar

O que é Preview aqui

Versionamento, execução paralela de conferência e rollback do motor de transformação são provados por teste determinístico (C04.6 = GA-candidato), e o JSON da definição é byte-determinístico. A publicação real em BigQuery depende de nuvem — Preview, sem SLA e sem tempo de publicação publicado. Nada aqui é "GA".

Faça você mesmo#

No workspace de treino Aurora Varejo, sobre um pipeline de vendas que já tenha a versão 1 publicada.

  1. Na tela do pipeline, leia o painel Publicação e agenda: selo da versão, selo da agenda e a data de publicação.
  2. Use Ativar agenda e confirme que o botão do meio passa a ser Pausar agenda.
  3. Baixe Baixar definição publicada (JSON) da v1 e guarde o arquivo. Abra-o e confirme que não há nenhuma credencial e nenhum dado de tabela.
  4. Altere a definição: troque a escrita de vendas para Append com atualizado_em e marque clientes.cpf como PII. Volte ao painel e confirme o selo Mudanças não publicadas.
  5. Use Revisar e publicar e leia o bloco "Diferenças em relação à versão publicada" inteiro. Anote quais linhas vêm com ⚠.
  6. Leia a frase de efeito sobre a agenda e confirme que ela diz que a agenda continua ligada.
  7. Marque a caixa de confirmação das mudanças destrutivas e publique a v2. Baixe o JSON da v2.
  8. Compare os dois arquivos com diff e confirme que as diferenças em texto são as mesmas que a tela mostrou. Por fim, tente publicar de novo sem mudar nada e observe que não nasce uma v3.

Você terminou quando a v2 está publicada com a agenda ainda ligada, você leu e justificou cada linha com ⚠, tem os JSON da v1 e da v2 lado a lado com um diff legível, e comprovou que publicar sem mudança não cria versão nova.

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#

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

Carregando seu progresso…