Para a versão 19.2 da Tecnologia, programada para ser liberada em dezembro, nós da Squad de Backend da Tecnologia estamos preparando uma grande novidade a respeito dos agendamentos: Será possível configurar o sistema para que todos os agendamentos sejam executados através do BTL!
O que isto significa?
Atualmente os agendamentos são disparados pelo BServer que no horário marcado irá executar um Provider (BPrv230.exe) e este Provider irá executar a rotina agendada.
Cada execução de agendamento significa um novo Provider no servidor e a utilização de agendamentos pelos sistemas da Benner é insana! Só para ter uma ideia no nosso ambiente Benner Cloud de sistemas em SQL Server, cerca de 300 mil Providers são executados por dia!
Sabemos que muitos desses agendamentos acabam não executando coisa alguma, pois o papel deles é simplesmente fazer um polling para saber se tem algo para executar. Isto gera um consumo de CPU e memória constante nos servidores (sim, o Provider gasta recursos para ser inicializado!) mesmo que o sistema não esteja fazendo nada efetivamente.
A partir da 19.2, quando for a hora de executar um agendamento, o BServer irá criar uma tarefa no BTL para rodar aquela rotina agendada. A partir daí é papel do Worker executar a rotina.
Na prática o consumo de CPU irá despencar nos ambientes que utilizam muitos agendamentos. Afinal no BTL os Workers mantem os Providers no ar pois eles são reaproveitados para executar várias tarefas. O custo de subir um Provider para executar um agendamento irá sumir.
Além do uso eficiente de recursos o BTL irá permitir priorização (através do roteamento de mensagens), balanceamento, alta disponibilidade e elasticidade para os agendamentos!
É um grande avanço no backend da nossa plataforma, que irá, no final das contas, reduzir sensivelmente os custos para rodar os produtos Benner!
Interessante pessoal,
Hoje é comum que nossos agendamentos tenham as seguintes configurações:
– REPETIR – indica se o processo a ser executado fará uma nova checagem (polling) antes de “morrer”;
– Tempo máximo: Por até quanto tempo o processo ficará executando em loop antes de morrer
– Tempo de intervalo: Tempo de intervalo entre fazer o novo loop.
Com esse novo recurso, o correto que é desativemos essas opções de REPETIR dos agendamentos, certo?
Exatamente. Esse tipo de técnica é bastante utilizada nos sistemas da Benner para economizar CPU de servidor, pois não fica subindo Provider o tempo todo. Porém com o BTL isso não faz sentido, é até prejudicial, pois você estará ocupando um Provider de Worker, que é compartilhado, por horas. O ideal é criar um agendamento de intervalo que faz uma única checagem, deixando que o BServer execute ele na frequência desejada. Como o BTL reaproveita os Providers, não haverá consumo desnecessário de recursos com inicialização de Provider.
Excelente, poderemos reduzir custo de VM’s e aumentar nosso ambiente de Container em Azure Kubernetes.