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:
- 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).
- A pipeline original foi dividida em duas pipelines menores e independentes:
- 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
- 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
- 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.
- 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.
Updated 7 days ago