Balanceamento de carga utilizando Oracle Forms
[ad#texto]
Muitas vezes encontramos um sistema cliente-servidor lento e a culpa não é o tráfego de rede, o problema está na concepção do próprio sistema, pelo fato de todo o processamento ou está sendo executado do lado do servidor ou em casos piores do lado do cliente.
Falando em Oracle, existem diversos meios de realizar esse balanceamento de carga, para que o processamento seja realizado de forma simétrica entre o servidor e o cliente resultando em performance otimizada.
Neste post vou explicar a mais simples, que na verdade resume-se tanto na utilização do Oracle Forms e no Oracle Reports.
No momento que o usuário executa um Form ou um Report, é acionado um client, semelhante à JVM do Java, que tem o papel de executar o arquivo compilado no padrão da Oracle e exibir em tela seja o Form ou o Report.
Esse client está preparado para executar esse balanceamento de carga de forma automática, para evitar gargalos tanto no servidor como no cliente, porém é interessante que algumas considerações sejam analisadas.
Vários sistemas possuem suas regras de negócio armazenas no servidor com a finalidade de simplificar a sua manutenção, fiabilidade e disponibilidade ficando o Form com a finalidade de uma mera “casca”, apenas a view do sistema. Um sistema com este tipo de arquitetura, embora correta, é determinante para que a grande carga de processamento seja executada do lado do servidor, sobrecarregando-o.
Do ponto de vista de performance o interessante é que parte das operações de aritmética e demais cálculos sejam migrados para o Form ou Report, se de um lado quebra-se a regra de negócio totalmente do lado do servidor do outro teremos um sistema mais rápido devido a um melhor aproveitamento do processamento das estações.
Quando realizar esse tipo de operação? Infelizmente não existe regra mágica, o seu analista terá que analisar todo o sistema e regra de negócio em questão para que sejam efetuadas as alterações necessárias de forma correta (iremos nos deparar com este problema de quebrar a arquitetura em busca de performance em diversas ocasiões).
Um exemplo: hoje mesmo, verifique um Report que demorava cerca de 16 minutos para ser executado, devido a complexidade da sua consulta, pois todos os campos estavam sendo calculados na select e o Report era um mero exibidor dos campos na formatação desejada. O que fiz? Alterei a select para ela apenas me trazer os dados e inseri todas as operações aritméticas e demais cálculos em Campos de Formula do Report.
Embora eu tenha quebrado a arquitetura original consegui diminuir o tempo de execução em 12 minutos, hoje o Report é executado em apenas 4 minutos.