Avaliação da ferramenta Hibernate em um ambiente de produção de larga escala |
Aluno: | Rogério Manente (manente arroba gmail.com) |
Supervisor: | Prof. Dr. João Eduardo Ferreira (jef arroba ime.usp.br) |
Tipo de Projeto: | Análise do Hibernate num ambiente de produção de larga escala |
O Hibernate é uma poderosa ferramenta para persistência de dados em aplicações orientadas a objetos. Mesmo sendo uma das ferramentas mais utilizadas para mapeamento Objeto-Relacional, existem muito poucos textos sobre seu desempenho num ambiente de produção de larga escala.
É muito difícil para arquitetos de software decidirem entre as diversas opções de persistência de dados sem textos com análises das soluções em ambientes reais onde as soluções já foram aplicadas e testadas.
Já vi diversos profissionais decidirem usar o Hibernate simplesmente pela comodidade ou por acreditarem que a perda de performance não é significativa. Assim como outros optam pelo acesso direto ao banco de dados usando procedimentos armazenados e compilados por assumirem que desta forma o desempenho é muito superior.
Este texto trata da avaliação qualitativa e quantitativa da ferramenta Hibernate usando como base uma aplicação financeira desenvolvida numa grande corretora de valores para o roteamento de ordens de clientes profissionais para a bolsa de valores Bovespa.
O principal objetivo deste trabalho é fazer uma análise dos limites do Hibernate num ambiente real de larga escala. Pretende-se mostrar as características da ferramenta num ambiente de produção no qual o desempenho da aplicação é fundamental. Os pontos críticos do Hibernate serão analisados e comparados a uma outra opção de persistência de dados, que é o acesso direto ao banco de dados usando procedimentos armazenados e compilados.
Os principais critérios de comparação serão desempenho, facilidade de expansão do sistema, facilidade de manutenção da aplicação e custo. Em custo, a idéia é comparar o custo com hardware e desenvolvedores para se ter um resultado final semelhante entre Hibernate e acesso direto ao banco de dados.
Os principais itens analisados sob o aspecto de desempenho serão as camadas de cache e as opções de tuning do banco de dados. Entre as opções de tuning serão priorizadas algumas que se aplicam aos muitos gerenciadores de banco de dados. Alguns exemplos dessas opções são o controle de concorrência, ordenação externa e otimização do plano de consultas.
O intuito do trabalho é escrever um relatório técnico que seja útil a arquitetos de software que precisam resolver o problema da persistência de dados e consideram o Hibernate como uma alternativa.
A aplicação mencionada está em produção com o Hibernate há quase um ano e meio. Já existem dados suficientes para análise do desempenho do Hibernate assim como para saber os pontos insatisfatórios, falhos e críticos da persistência feita com esta ferramenta.
A aplicação já foi adaptada para que a persistência seja feita por acesso direto ao banco de dados. Foi criada uma camada para que a migração entre o Hibernate e o acesso direto seja viável e para que a comparação seja possível.
Julho: Criação da
persistência por acesso direto ao banco de dados. Farei a implementação da
persistência das classes por acesso direto.
Agosto: Início da coleta dos dados de persistência por ambas as formas. Pretendo definir quais dados serão mais importantes para a análise futura assim como pretendo coletar os dados definidos.
Setembro: Análise dos dados coletados. Usarei os dados coletados para tirar as principais conclusões sobre a comparação dos métodos de persistência. Além dos dados pretendo conseguir conclusões sobre os outros aspectos além de desempenho (como facilidade de expansão e manutenção do sistema e as análises de custo). Esta comparação deve ser a parte mais demorada e difícil do trabalho e só deve terminar em Outubro.
Outubro: Término das comparações e análise de outros pontos do Hibernate como tuning e camadas de cache.
Novembro: Espero que em Novembro o trabalho seja praticamente retoques finais na monografia, preparação do pôster e da apresentação.
Segundo o roteiro para preparação das monografias, a monografia será dividida em duas partes:
1 – Primeira parte – Descrição do trabalho e aspectos técnicos
Essa parte será dividida em outras três partes:
Primeira parte - Introdução
· Objetivos do trabalho, problemas a serem resolvidos, descrição de alguns objetivos e problemas sobre persistência de dados;
· Descrição das duas abordagens de solução de persistência: uso do Hibernate e acesso direto ao banco de dados;
· Descrição da aplicação na qual as opções de persistência foram usadas e testadas.
Segunda parte – Atividades realizadas
· Apresentação dos dados obtidos;
· Comparação do Hibernate/acesso direto nos itens analisados (desempenho, facilidade de expansão, facilidade de manutenção e custo);
· Análise de outros pontos do Hibernate – tuning, camadas de cache, problemas de concorrência etc.
Terceira parte – Resultados, conclusões e bibliografia
· Resultados finais – um resumo dos resultados obtidos de todas as análises realizadas;
· Conclusões – uma conclusão final sobre o dilema Hibernate/acesso direto. Uma descrição subjetiva dos resultados obtidos com todas as análises realizadas e indicações pessoais sobre as vantagens e desvantagens de cada paradigma tentando ser o mais direto possível;
· Bibliografia
2 – Segunda parte – Experiência pessoal
Pretende-se incluir os itens mencionados no roteiro para preparação das monografias. Pretende-se priorizar os seguintes itens:
· Desafios e frustrações encontrados.
· Lista das disciplinas cursadas no BCC mais relevantes.
· Observações sobre a aplicação de conceitos estudados nos cursos no contexto prático de aplicações reais.