No Winthor a “Rotina 2075” é o programa usando nos caixas, também chamado de “Winthor Varejo”. Supostamente (falarei sobre isso em outro post) essa rotina funciona completamente offline, pois mantém seu próprio banco de dados local (Oracle) em cada caixa com todo o necessário para efetuar uma venda. O processo de sincronizar esse banco de dados local com o banco principal, também Oracle, é chamado de “carga”.
Quando cheguei a essa empresa fiquei espantado com o fato dessa carga levar até 15 minutos. O servidor principal ficava em outra cidade e essa comunicação ocorria via internet usando uma VPN, mas ainda assim não se justificava, porque o banco de dados era pequeno, a banda efetiva (testado) era de 3.5Mbps e uma observação do uso da rede durante a carga mostrava que uma fração desprezível dessa banda estava sendo usada. Não havia congestão do link pois essa demora acontecia a qualquer hora, mesmo quando as empresas nas duas cidades ainda estavam fechadas.
Isso era um problema para a operação, porque qualquer mudança de preços efetuada durante o dia levava no mínimo 15 minutos para ser propagada. “No mínimo” porque como o caixa não podia operar durante esse processo isso tinha que ser feito em um caixa de cada vez. Também era um problema para a manutenção, porque muitos testes envolviam efetuar a carga e às vezes era preciso fazer isso múltiplas vezes.
A única pista que eu tinha da razão estava na latência. Um ping através dessa VPN levava no mínimo 70ms, não sendo incomum ficar em um mínimo de 100ms. Eu suspeitei de programação mal feita. Em vez de coletar toda a informação em um pacote só e aí esses 100ms seriam irrelevantes, a 2075 provavelmente estava dividindo a carga em milhares de querys. Digamos que você tenha 10 mil produtos cadastrados e consulte cada um deles individualmente: numa rede local, cabeada, cuja latência não passa de 1ms essas querys não devem levar mais que (10000×0,001) 10 segundos e um “erro” desses passa despercebido. Mas quando a latência é 100 vezes maior temos 1000s (16 minutos) desperdiçados para efetuar a mesma operação. Note que não é preciso usar uma VPN para ter esse tipo de problema. Basta querer conectar os caixas via Wi-Fi para ter latências piores.
Por essa e outras razões ficou decidido mover o servidor principal para a mesma rede local dos caixas, na outra cidade. Depois que efetuei essa operação, que exigiu semanas de planejamento por causa da complexidade do Winthor, a carga dos caixas passou a levar até 15s.
Deixe um comentário