17 Novembro 2016

Orquestrador 2.0.

Cada vez mais temos de apenas dar diretrizes aos computadores e deixa-los fazer o melhor trabalho possível.

No caso de processos ETL dentro de um Data Warehouse, estes têm os seus tempos e ordens de execução próprios, pelo que apenas devemos configurar estes parâmetros e deixar que um processo mais abrangente faça o trabalho.

A implementação que fizemos para este novo Orquestrador tem em conta essas premissas. Para isso basta configurar o que correr e como correr, ou seja, que dependências é que os processos têm entre si, e todo o processo é gerido pela máquina. Atrás das precedências sabe o que pode correr a cada momento e, verificando os últimos tempos de execução dos processos, adapta a altura em que estes correm, para que consigo obter o máximo de performance da máquina.

Conseguimos fazer tudo isto apenas com um processo, desenvolvido num DTSx.

Alguns desafios foram ultrapassados com recurso a algumas configurações. Seguem alguns exemplos:

  • Passar variáveis aos processos;
  • Indicar o que fazer em caso de erro do processo (podemos configurar para ele devolver sucesso, mesmo que tenha dado erro);
  • Criar o conceito de sequencia paralelizada. Permite que haja uma série de processos a correr em sequencia, mas em paralelo com outros processos;

 

O processo tem um motor de inteligência que otimiza as execuções das cadeias diárias com base no seu historial de execuções. Este processo tenta ao máximo otimizar o paralelismo de execuções para que execute todos os processos no mais curto espaço de tempo.

Existe também a funcionalidade de ajuste do número de threads utilizadas para a execução em paralelo dos processos. À medida que a carga do servidor (memoria por exemplo) vai diminuindo, o Orquestrador limita o número de processos a correr em paralelo para que não haja sobrecarga do servidor.

Abaixo podemos ver a evolução dos tempos de execução de uma cadeia noturna. A cadeia tem mais de 600 processos ETL, com extrações de várias fontes, transformações e diversos tipos de carregamento de informação.

Nota-se claramente um decréscimo aquando do inicio da utilização do Orquestrador pela primeira vez. Porém, a partir do momento em que temos histórico de execuções, o processo otimiza as cadeias de execução e paraleliza de uma forma mais eficiente os processos, fazendo com que todo o processo seja mais rápido.

Continuamos a melhorar o processo para que seja cada vez mais eficiente. Os próximos passos serão encontrar o caminho mais longo para ser esse o primeiro a ser executado.

         
.
.
.
.
.
         Rui Valente
   Associate Manager
Solutions Development