Posts com Tag ‘JSON’

Palestra: Arquitetura para aplicações Java de médio porte – Falando em Java 2009

maio 25, 2009

Arquitetura para aplicações Java de médio porte

Palestra apresentada por Guilherme Moreira e Sergio Lopes (Caelum)

A palestra teve como foco o crescimento de sites ou aplicações Web, que ocorrendo de forma desordenada e sem planejamento tendem a gerar downtime, timeouts de resposta, inconsistência de dados, etc. Com isso perde-se dinheiro; as vezes muito dinheiro. Tendo como base esses tipos de aplicações os palestrantes abordaram problemas passíves de ocorrer, análise e as possíveis soluções a serem tomadas.

Problema 1: SOAP e gargalo de Rede

  • JSON x XML x WSDL (podem gerar problemas de tamanho de arquivo e compactação).

Solução: Uso do Fast Infoset (FI), que compacta XML (em até 30%) e tem performance.

Problema 2: Hibernate não otimizado

  • Banco de Dados é o gargalo (famosa primeira conclusão).

Solução:

  • Conhecer o cache de primeiro nível e evitar de carregar muitos objetos na memória (risco dejava.lang.OutOfMemoryError: Java heap space”);
  • Aprender a usar “stateless session“.
  • Cuidado com o “n+1 selects“;
  • Aprenda a usar as configurações certas do Hibernate (“@BatchSize“, por exemplo).

Problema 3: BD sobrecarregado

Solução:

  • Abrir conexões somente quando for necessário;
  • Use pool para reaproveitar conexões entre requests;
  • Só inicie transações quando for necessário;
  • Evite o uso do BD o tempo todo;
  • Use cache!

Problema 4: indisponibilidade

Solução:

  • Uso de cluster. Vantagens: escalabilidade e disponibilidade. Desvantagens: performance e não-simplicidade;
  • Uso de load balance. Vantagens e Desvantagens idênticas ao caso do cluster;
  • Gerenciar estados do cluster: Sticky Sessions (caiu a sessão, acabou), replicação (manda os dados para outra máquina) ou stateless (s/ estado nenhum. “Pra que estado?…rs”).

Após as apresentações dos “problemas-análise-solução” ambos palestrantes colocaram a prova e ao vivo uma demo de máquinas em cluster e load balance usando JBoss. Resultado : FAIL! Isso provou que mesmo tendo experiência no assunto, preparando anteriormente a demo, usando bons micros e outros poréns, é certo que algo pode ocorrer e que outros fatores podem influenciar.

Outras idéias para análise de arquiteturas:

Para finalizar eles deixaram uma frase de Martin Fowler para pensar: “Primeira Lei do Design de distribuição de objetos: Não distribua seus objetos” (Nem sempre o gargalo é a rede…).

É importante ressaltar novamente que na palestra houve a apresentação de códigos conforme os exemplos foram passados. Isso facilitou e muito o entendimento do público (tirando a falha na apresentação do cluster).


Seguir

Obtenha todo post novo entregue na sua caixa de entrada.