Classic ou Flex Template? Descomplicando a Escolha para Orquestrar suas Pipelines
- Michel Souza Santana
- 30 de set.
- 4 min de leitura

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

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

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.

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