top of page

Classic ou Flex Template? Descomplicando a Escolha para Orquestrar suas Pipelines

ree

Olá, pessoal! Aqui é Michell Santana.

No universo do Google Cloud, o Dataflow é uma ferramenta indispensável para o processamento de dados, seja em lote ou streaming. Mas na hora de colocar nossas pipelines para rodar de forma orquestrada, uma dúvida sempre surge no time de engenharia de dados: devo usar um Classic Template ou um Flex Template?


Pode parecer um detalhe, mas a escolha errada pode levar a retrabalho, inflexibilidade e, claro, custos mais altos. Como engenheiros, nosso objetivo é construir soluções eficientes, escaláveis e de fácil manutenção. Entender a fundo a diferença entre esses dois modelos é fundamental para atingir esse objetivo.

Vamos direto ao ponto e desmistificar essa escolha.


Modelo Tradicional (Classic Templates): A Força da Previsibilidade

ree

Pense no Classic Template como um "executável" com parâmetros pré-definidos. Ele é a abordagem original e mais antiga para criar templates no Dataflow.

Como funciona?

O ponto crucial aqui é o momento da compilação (deployment time). Quando você cria um Classic Template, o grafo de execução do seu pipeline Apache Beam é criado, validado e otimizado nesse momento. O resultado é uma especificação de job imutável, armazenada no Google Cloud Storage. Ao executar o job, você apenas fornece os parâmetros que deixou "abertos" (como o bucket de origem ou a tabela de destino).


Ideal para:

  • Pipelines recorrentes e com lógica de negócios estável.

  • Jobs agendados que executam a mesma tarefa repetidamente, sem variações na sua estrutura.

  • Cenários onde a simplicidade e a velocidade de inicialização do job são prioridade.

Exemplo de caso de uso real:

Imagine um job noturno que processa logs de um sistema. Ele sempre lê os arquivos de um bucket específico no Cloud Storage, aplica as mesmas transformações (limpeza, anonimização) e carrega o resultado em uma tabela particionada por dia no BigQuery. A estrutura é fixa, apenas os dados mudam. Um Classic Template é perfeito para isso.


Vantagens Principais:

  • Simplicidade: Fácil de executar, uma vez que o template já foi criado e validado.

  • Rapidez na Execução: O tempo de "startup" do job tende a ser menor, pois o grafo já está pré-construído.

  • Segurança: A lógica da pipeline é imutável, evitando que parâmetros inesperados alterem o comportamento do job.


Exemplo de Script (gcloud):

Para executar um Classic Template, o comando é direto. Você aponta para o arquivo de metadados do template no GCS e passa os parâmetros.


gcloud dataflow jobs run my-nightly-log-job \
    --gcs-location gs://meu-bucket-templates/classic/log_processing_template \
    --project=meu-projeto-gcp \
    --region=us-central1 \
    --parameters inputFile=gs://meu-bucket-logs/2025/09/30/*,outputTable=meu_dataset.logs_processados

Modelo Flex (Flexible Templates): O Poder da Customização Dinâmica

ree

Como o próprio nome sugere, flexibilidade é a palavra-chave. O Flex Template é a evolução natural do modelo clássico, pensado para o ecossistema moderno de CI/CD e orquestração dinâmica.


Como funciona?


A grande virada aqui é que o grafo de execução é construído apenas no momento da execução (runtime). O template é empacotado como uma imagem Docker e enviado para o Google Container Registry (GCR). Ao iniciar o job, o Dataflow baixa essa imagem, e o seu código Beam é executado para construir o grafo dinamicamente, usando os parâmetros que você forneceu naquele exato momento.


Isso significa que você pode não apenas mudar valores de parâmetros, mas também a própria estrutura da pipeline (ex: adicionar ou remover etapas) com base nesses parâmetros.


Ideal para:

  • Cenários que exigem customização a cada execução.

  • Pipelines integradas a esteiras de CI/CD.

  • Jobs orquestrados por ferramentas como Cloud Composer (Airflow) ou acionados por


Cloud Functions, onde cada execução pode ter parâmetros e lógicas diferentes.


Exemplo de caso de uso real:

Uma DAG no Airflow que monitora múltiplos buckets de GCS. Quando um arquivo chega em qualquer um desses buckets, a DAG dispara um job do Dataflow Flex Template. Ela passa dinamicamente o caminho do arquivo, o nome da tabela de destino no BigQuery (que pode variar de acordo com a origem) e talvez um parâmetro extra indicando o tipo de processamento a ser feito ("processamento_completo" vs. "processamento_simples").


Vantagens Principais:

  • Alta Customização: Permite que sistemas externos decidam o comportamento da pipeline em tempo de real, sem precisar gerar um novo template para cada variação.

  • Integração com CI/CD: O processo de build e deploy se encaixa perfeitamente em esteiras automatizadas.

  • Parâmetros Dinâmicos: Suporta um número muito maior de parâmetros e não requer que eles sejam definidos como ValueProvider.


Exemplo de Script (gcloud):

A execução de um Flex Template aponta para a imagem Docker no Container Registry.


gcloud dataflow flex-template run my-dynamic-ingestion-job \
    --template-file-gcs-location gs://meu-bucket-templates/flex/dynamic_ingestion_spec.json \
    --project=meu-projeto-gcp \
    --region=us-central1 \
    --parameters inputFile=gs://outro-bucket-dados/cliente_x/arquivo.json,outputTable=meu_dataset.tabela_cliente_x,processingType=completo

Note que o template-file-gcs-location aponta para um arquivo de especificação que, por sua vez, aponta para a imagem Docker.


Resumindo a Diferença com uma Analogia


Para fixar a ideia, vamos usar uma analogia com um restaurante:

Classic Template: É como pedir um prato executivo. O cardápio é fixo. Você pode escolher entre "bife ou frango" e "arroz branco ou integral" (os parâmetros), mas a estrutura do prato já está definida pelo chef (o grafo). É rápido e previsível.
Flex Template: É como ir a um restaurante "monte o seu prato". A cada pedido, você decide os ingredientes (proteína, carboidratos, molhos, vegetais) e a forma de preparo. Você tem total controle sobre o resultado final a cada visita.

ree

Qual o Caminho Certo para o Meu Projeto?


Não existe uma resposta única, mas sim uma escolha estratégica baseada no seu caso de uso.

  • Se você tem pipelines estáveis, com pouca ou nenhuma variação, e preza pela simplicidade na execução, o Classic Template é uma escolha sólida e confiável. Ele cumpre o seu papel com eficiência e menos complexidade no setup.

  • Por outro lado, se o seu ambiente de dados é dinâmico, se suas pipelines são parte de um ecossistema maior orquestrado por ferramentas como o Airflow, ou se você precisa de flexibilidade para adaptar o processamento a cada execução, os Flex Templates são, sem dúvida, o caminho a seguir. Eles são a base para construir sistemas de dados modernos, ágeis e automatizados.

Como engenheiro de dados, minha recomendação é: comece entendendo a natureza do seu job. A necessidade de customização em tempo de execução é o principal fator que deve guiar sua decisão.

Espero que esta análise ajude a clarear as ideias na hora de arquitetar suas soluções de dados com o Google Cloud Dataflow.


Até a próxima!

Comentários


bottom of page