Proposta de Monografia

 

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

 

 

 

 

Introdução

 

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.

 

 

Objetivos

 

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.

 

 

Atividades já realizadas

 

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.

 

 

Cronograma das atividades para o segundo semestre

 

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.

 

 

Estrutura esperada da monografia

 

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 Hibernatetuning, 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.