Free Trial

Blog

Insights e ideias das mentes mais brilhantes em análise de dados.
carlosteixeira
15 - Aurora
15 - Aurora

 

Contexto

Dentro dos ambientes corporativos, muitas vezes, e eu diria que não são poucas, nos deparamos com algumas limitações de ferramentas. E como bons conhecedores dos problemas de nossos clientes sempre estamos dispostos a encontrar uma solução para os problemas que nos são apresentados não é mesmo?

 

O cenário apresentado se deu em um ambiente de Alteryx Server.

 

Cenário

O Alteryx Server tem uma funcionalidade que podemos configurar no Alteryx System Settings que cancela Jobs que estão sendo executados e atingem um determinado limite de tempo.

carlosteixeira_0-1644604912452.png

Nesse item podemos definir, em segundos qual é a quantidade máxima de tempo permitido para um workflow ser executado.

Para o ambiente que estávamos trabalhando esse limite era de 3600 segundos (1 Hora)

 

Problema

Nesse cenário qualquer workflow que estivesse agendado e fosse executado por um tempo maior que os 3600 segundos configurados seria automaticamente cancelado pelo sistema.

 

Acontece que essa configuração só funciona para os workflows que estejam agendados no gallery. Se o usuário executar o workflow manualmente através do Gallery essa configuração não funciona.

 

O usuário colocava o workflow para executar de forma manual e deixava o mesmo executando por horas.

 

Nesse cenário, em grandes ambientes, com vários usuários fazendo isso temos o problema se fila de execução. Muitos workflows sendo executados ao mesmo tempo no Gallery, de forma manual gerando uma fila de mais de 20 workflows aguardando para serem executados, mesmo estando agendados.

 

Para nós administradores de ambiente isso fica quase impossível de gerenciar, pois não sabemos quais workflows podem ser cancelados ou não.

 

carlosteixeira_1-1644605031334.png

 

Solução

Ao percebermos que isso estava impactando o nosso ambiente, o cliente, nos solicitou que estudássemos uma possível solução. Com a ajuda dos meus amigos @Thableaus  e @marcusblackhill  conseguimos chegar na solução abaixo:

 

Criamos um workflow que faz o monitoramento do que está sendo executado no Alteryx server e caso identifique algum job, sendo executado há mais de um determinado tempo, independentemente de ser agendado ou manual ele cancela o job através de uma chamada via Download TOOL.

 

carlosteixeira_2-1644605075044.png

Abaixo vou explicar um pouco do fluxo que se divide em 4 partes

 

Parte 1:

Nessa primeira parte fomos ao mongodb para identificar quais sessões tínhamos ativa dentro do banco e utilizando filtros/Summarize/Joins chegamos a apenas 1 sessão ativa para ser utilizada como credencial no final do 4 processo.

Junto com essa sessão também incluo a URL do gallery

 

carlosteixeira_3-1644605100092.png

 

Parte 2:

Na segunda parte do fluxo, também fomos diretamente na base do mongodb para identificar qual/quais workflows estão sendo executados naquele momento.

 

No exemplo abaixo podemos identificar 1 workflow sendo executado.

 

Utilizando os filtros e fórmulas conseguimos calcular há quanto tempo esse workflow está sendo executado. Primeiro filtro identifica se o workflow está com status “running”, passa pela fórmula tool e calcula o tempo de execução desse workflow. No segundo filtro checamos se o workflow está sendo executado a mais do que o tempo estipulado.

 

No terceiro filtro, e aqui também foi uma solicitação feita pelo cliente, incluímos os workflows que podem fugir à regra de cancelamento. Para isso nesse filtro incluímos os nomes dos workflows que entram nos casos de exceção.

 

carlosteixeira_4-1644605146403.png

 

Parte 3:

Nessa etapa, também indo ao mongobd, conseguimos identificar quem é o usuário responsável por aquele fluxo (Owner) e criamos alertas que são enviados aos administradores e também ao próprio usuário que o workflow executado foi cancelado por estar sendo executado com um tempo maior que o estipulado pelas diretrizes da empresa.

carlosteixeira_5-1644605174429.png

Parte 4:

Nessa última etapa criamos as variáveis necessárias ao sistema para podermos criar uma chamada de http e enviar as credenciais necessárias para que o comando seja executado pelo sistema como se estivéssemos cancelando o workflow de forma manual.

 

Assim quando um workflow é identificado com um tempo maior de execução do que aquele estipulado pela empresa ele será cancelado.

 

carlosteixeira_6-1644605206289.png

 

Implementação:

Para que este workflow funcionasse implementamos o mesmo da seguinte forma.

 

Dentro do Servidor (Alteryx Server) incluímos o workflow de forma agendada pelo Alteryx Designer para ser executado a cada 5 minutos. Notem que o tempo de execução do workflow completo é bem rápido, cerca de menos de um minuto.

carlosteixeira_7-1644605235636.pngcarlosteixeira_8-1644605247092.png

 

Dessa forma o workflow não consome um dos slots de execução que está configurado no Alteryx System Settings com a quantidade de workflows que podem ser executados de forma simultânea.

 

Vou deixar o workflow em anexo caso algum de vocês queira implementar ou estudar e até mesmo melhorar o processo no ambiente de vocês.

 

Dica: no ambiente em que isso foi implementado, eu ainda incluí alguns alertas para antecipar a informação para os administradores, por exemplo, receber um email caso o workflow atinja 90% do tempo pré estabelecido. Assim o administrador pode ter uma idéia antecipada de qual, ou quais workflow serão cancelados.

Outra dica, que utilizei no ambiente em questão é que desabilitamos a configuração no Alteryx System Settings para cancelar os Jobs por lá.

 

Até que essa feature seja implementada nas novas versões do Alteryx server para que independente da forma como o workflow é iniciado ele caia nessa regra de cancelamento essa é uma solução que tem atendido bem o cliente e pode ser implementada de forma rápida.

 

Alguns processos foram implementados pela equipe do cliente a fim de termos uma governança melhor do ambiente, como por exemplo solicitação de inclusão de workflows nas exceções para que o mesmo rode em qualquer tempo independente do tempo estipulado.

Com esse processo workflow de grande relevância para o negócio, entravam nessa lista de exceções e também avaliamos em conjunto com o usuário qual o melhor horário para que o mesmo fosse agendado ou executado.

 

Galera é isso. Qualquer pergunta, dúvida ou curiosidade sobre esse workflow e como implementá-lo fiquem à vontade para me procurar, ficarei feliz em ajudar.

 

Grande abraço

Carlos A Teixeira - Alteryx ACE

 

Comentários
Thableaus
17 - Castor
17 - Castor

Quando o cara é fera, é outra história. Bela referência @carlosteixeira, uma descoberta incrível da sua parte e do @marcusblackhill 

Sensacional Carlão! Impecável como sempre

silvestremoreira
Asteroide

Sensacional @carlosteixeira!

Rótulos