Estou com aquele velho problema, entrei em uma empresa a uns meses e me deparei com um sistema
legado em Java 6 com (JSTL, JSP, Servlets, Webservices SOAP, Hibernate,Applets e etc…) o grande problema é, o cara que trabalhava no sistema a anos foi mandado embora pois não era transparente e profissional e fiquei com problema em mãos, sem documentação atualizada e nada que pode me explicar melhor do sistema.
O sistema tem um processamento terrível, o servidor de Produção tem 8GB de ram e sempre que executam uma certa rotina que usa um WS tenho que reiniciar o Tomcat pois todos os outros usuários deixam de conseguir acessar o sistema, sempre que reinicio o tomcat ele dispara diversos ‘memory leaks’ que ainda não consegui entender o porque disso.
Esse sistema é bem antigo e a arquitetura dele está toda bagunçada, o MVC está ao avesso, regras de negócio junto aos controllers, tem onSubmits que dentro dele ficam: o pequisar , o salvar, e alterar, as validações estão bagunçadas também. Tem Applets que cuidam de uma parte de assinatura de certificado e isso também me preocupa pois o chrome já não da mais suporte a Applets e penso que elas logo deixarão de estar em uso. O Hibernate está todo configurado através dos xml HBM e não por annotations, não sei se isso gera alguma diferença em performance, gostaria dessa explicação também… No sistema tem vários tratamentos de exceptions retornando exceptions para outros tratamentos de trycatch e quando ele retorna algum erro dificilmente acho o erro de acordo com a mensagem retornada pois é tantos rodeios que quando expõe na tela a mensagem, quase nunca é o princípio do problema.
Bom galera, estou com esse problema nas minhas mãos e sei que a melhor coisa seria um novo sistema muito bem arquitetado e com tecnologias novas, MAS no momento não tenho tempo para produzir algo novo, pois a demanda de suporte é muito grande. Então queria uma opinião de vocês de como posso começar a melhorar esse sistema, o que seria melhor para melhorar a performance dele, como consigo analisar essa performance e tudo mais.
Sei que muitos pensariam cai fora e deixa essa bomba de lado, mas não sou esse perfil de profissional, quero fazer o melhor pela empresa e pelos usuários do sistema, então piadinhas nesse sentido podem deixa-las de lado, por favor.
A primeira coisa a fazer é listar os problemas e bugs, analisar seu impacto e priorizá-los (sem se preocupar em entender como o sistema funciona ainda). Por exemplo, o MVC estar ao contrário ou o excesso de try…catch… é bem menos ruim do que o sistema estar travando o servidor. Ataque o problema mais grave primeiro.
Use ferramentas que te permitam entender onde estão os problemas de desempenho (como profilers) e memory leaks, que parecem ser o problema mais grave.
Considere os applets como um mal temporário, pois mexer neles certamente tomará muito tempo e pode haver questões mais importantes a se resolver.
E alinhe muito bem com seus líderes o que será feito em cada etapa, deixando claro que as correções poderão levar muito tempo e que durante esse período ainda haverá muitas reclamações, e que não tem como consertar tudo de uma vez.
Olá @TerraSkilll
Valeu cara, era exatamente o que precisava uma ideia de plano de ação, vou fazer isso, já instalei o Your Kit Java Profiler, uma ferramenta de análise preciso aprender a usar agora!!
Se não for pedir demais poderia me tirar outras duvidas se você souber?
O fato de o servidor ser Windows e ter 8GB de ram influencia muito no desempenho?
Como consigo saber o quanto teria que ter de hardware para o sistema/usuarios que poderão utilzar?
Dizem que em breve sai um servidor novo, pensando em um ambiente de melhor desempenho em produção, um servidor com linux passaria as expectativas de um servidor com windows?
Os applets estou vendo exatamente desta forma, já alertei meus chefes e sabem como está a situação do sistema em seu todo, fui bem claro quanto a isso, se não ouve-se transparência da minha parte não teria como mostrar o serviço que quero fazer.
Não tenho experiência em implantação de aplicações Java em servidores, então não tenho como te ajudar a respeito. Olhando por cima, esse servidor parece ser suficiente para uma aplicação pequena/média rodando numa intranet, mas sem saber como está essa aplicação não há como saber se é suficiente.
Recomendo tentar resolver todos os problemas possíveis antes de tentar um servidor novo, pois nem tudo pode ser resolvido com força bruta (ou seja, simplesmente adicionando mais poder de processamento). Um ponto importante, por exemplo, é entender essa rotina do WS que te obriga a reiniciar o servidor.