Exemplo de pipeline extensa

Cenário antes da otimização

Uma pipeline foi configurada para realizar todas as etapas do processamento de dados em um único fluxo, com as seguintes características:

  • Número de steps (tarefas): 35 tasks interdependentes, cobrindo desde a ingestão de dados até a validação final.
  • Uso de variáveis de ambiente: 8 variáveis para armazenar configurações importantes, como credenciais, identificadores e parâmetros temporários.
  • Problemas identificados: O tamanho das configurações e a complexidade da pipeline impediram sua execução e, ultrapassou o limite técnico do orquestrador de workflows, resultando em erro de execução.


Solução aplicada

Para resolver o problema e evitar falhas futuras, as seguintes ações foram implementadas:

  1. Divisão da pipeline:
    • A pipeline original foi dividida em duas pipelines menores e independentes:
      • Pipeline 1: Focada na ingestão de dados, limpeza inicial e geração de configurações temporárias.
      • Pipeline 2: Responsável pelo processamento avançado e validação dos dados.
    • Dados intermediários foram compartilhados entre as pipelines usando um banco de dados leve (SQLite).
  2. Redução do uso de variáveis de ambiente:
    • Variáveis que eram utilizadas temporariamente foram substituídas por parâmetros diretos entre etapas ou armazenadas no banco SQLite.
    • Apenas variáveis essenciais e globais foram mantidas como variáveis de ambiente.

Cenário após otimização

  • Número de steps por pipeline:
    • Pipeline 1: 15 steps.
    • Pipeline 2: 20 steps.
  • Uso de variáveis de ambiente:
    • Reduzido para 4 variáveis globais, com o restante gerenciado por banco de dados ou parâmetros diretos.
  • Resultado:
    • A divisão reduziu significativamente o tamanho das instruções geradas, garantindo que o limite técnico do orquestrador de workflows não fosse ultrapassado.
    • A execução das pipelines foi concluída com sucesso.
    • Maior facilidade de manutenção e monitoramento.

Lições aprendidas

  1. Limitação no número de steps e complexidade:
    • Pipelines com mais de 30 steps e uso considerável de variáveis de ambiente podem atingir os limites técnicos do orquestrador de workflows
    • Dividir pipelines maiores é uma prática essencial para evitar problemas de execução
  2. Redução e Gerenciamento de Variáveis:
    • Substituir variáveis de ambiente temporárias por alternativas mais leves, como parâmetros diretos ou bancos de dados, ajuda a manter a pipeline eficiente e dentro dos limites técnicos.
  3. Modularidade para Escalabilidade:
    • Pipelines menores e independentes são mais fáceis de escalar e monitorar, além de reduzir o risco de erros devido à complexidade

Conclusão

A compreensão das limitações técnicas e a adoção de boas práticas no design de pipelines são essenciais para garantir estabilidade e eficiência nos processos. Seguindo as recomendações apresentadas neste artigo, é possível evitar problemas relacionados ao tamanho das instruções e criar pipelines escaláveis e fáceis de manter.

Se precisar de ajuda ou tiver dúvidas sobre como implementar essas práticas, entre em contato com nossa equipe de suporte.