Opinião sobre Arquitetura / Performace  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
leonardo.carbone
HelloWorld

Membro desde: 13/08/2009 11:34:12
Mensagens: 11
Offline

Olá pessoal!
Estou desenvolvendo um projeto aqui na empresa onde a camada de visão será desenvolvida em Flex e as regras de negócio e persistencia em Java com JPA/Hibernate usando banco Postgre.
O pessoal aqui da empresa cogitou a idéia de colocarmos essa aplicação em nossa hospedagem e utilizarmos bases diferentes para cada cliente, ou seja, todos os nossos clientes usariam a mesma aplicação mas que acessaria a base de cada cliente. Os usuários por cliente podem variar, 10, 50........(espero que tenha sido claro rsrs)
Bom, atualmente nossa hospedagem tem a seguinte infraestrutura:
Sistema Operacional Linux RedHat Enterprise
Webserver Apache
Placa de rede PCI Intel 100 Mbits
Servidores 2 x Xeon Quad Core
256 mb de ram para JVM


Conforme for a demanda, passaremos para uma hospedagem dedicada, collocation etc....
Não tenho muita esperiência ainda, então gostaria da opinião de vocês sobre trabalhar dessa maneira.!
É uma boa opção fazer isso? ou seria melhor eu contratar uma hospedagem para cada cliente e trabalar individualmente? Nessa segunda opção eu teria que estar sempre controlando as atualização para cada cliente, teria que fazer um maior controle.....

O que vocês acham!?

Desde já agradeço!

Abraços a todos!

Leonardo.

cristian_clever
JavaTeenager
[Avatar]

Membro desde: 16/09/2009 14:43:45
Mensagens: 163
Offline

Perguntinha legal essa.... com certeza dá uma boa discussão ...

A questão é Todos irão compartilhar a mesma a aplicação, na mesma VM?

Não seria interessante cada cliente ter sua Instancia de aplicação? Todos compartilham as bibliotecas core da sua aplicação mas, se vc tiver 3 clientes, deverá ter 3 aplicações rodando...
Dessa forma acredito que possa até ser mais fácil vc ter estatisticas de consumo de memória (Afinal vc pode ter um cliente Glutão e como vc saberá quem é quem?) e até migrar clientes de máquina quando for o caso.

Outra grande questão... em relação a "divisão dos bancos de dados", vc terá de pré autenticar um usuario para a seguir saber qual o DB que ele irá utilizar, e não bastando outra questão que me surge na cabeça são os Pools de conexão vc deverá possuir vários pools, e sua aplicação deverá escolhelos em tempo de execução...

Aliás qual o servidor J2EE?

[]s

Cristian Clever
http://alemdocafe.wordpress.com
[WWW] [MSN]
palmadias
JavaTeenager

Membro desde: 08/07/2008 07:41:08
Mensagens: 192
Localização: São Paulo/SP
Offline

Para tudo temos o bom e velho 'depende'... rsrrs

Pq vcs não fazem testes de carga. Criem uma POC... um cadastro basico, por exemplo.

Tudo pode ser muito relativo.

Mas de cara 256 mb para JVM na minha opinião é muito pouco. Mas isso não é regra, vai depender muito da sua aplicação.

http://palmadias.blogspot.com/
[WWW] [MSN]
Luca
Moderador
[Avatar]

Membro desde: 06/09/2002 14:30:10
Mensagens: 5810
Localização: São Paulo/SP ou Paraty/RJ
Offline

Olá

Assim de olhômetro parece pouco. O planejamento de capacidade não dá para ser feito assim no chute sem saber dados mais precisos da aplicação.

[]s
Luca

Dare Obasanjo (Program Manager at Microsoft)
"The folks I know from across the industry who have to build large scale Web services on the Web today at Google, Yahoo!, Facebook, Windows Live, Amazon, etc are using RESTful Web services. The only times I encounter someone with good things to say about WS-* is if it is their job to pimp these technologies or they have already "invested" in WS-* and want to defend that investment."


CEP, JMS, JMX e coisas afins (ou não)
http://lucabastos.blogspot.com/
[Email] [WWW]
leonardo.carbone
HelloWorld

Membro desde: 13/08/2009 11:34:12
Mensagens: 11
Offline

cristian_clever wrote:Perguntinha legal essa.... com certeza dá uma boa discussão ...

A questão é Todos irão compartilhar a mesma a aplicação, na mesma VM?

Não seria interessante cada cliente ter sua Instancia de aplicação? Todos compartilham as bibliotecas core da sua aplicação mas, se vc tiver 3 clientes, deverá ter 3 aplicações rodando...
Dessa forma acredito que possa até ser mais fácil vc ter estatisticas de consumo de memória (Afinal vc pode ter um cliente Glutão e como vc saberá quem é quem?) e até migrar clientes de máquina quando for o caso.

Outra grande questão... em relação a "divisão dos bancos de dados", vc terá de pré autenticar um usuario para a seguir saber qual o DB que ele irá utilizar, e não bastando outra questão que me surge na cabeça são os Pools de conexão vc deverá possuir vários pools, e sua aplicação deverá escolhelos em tempo de execução...

Aliás qual o servidor J2EE?

[]s


Olá Cristian!!
Então, eu vou ter um banco para cada cliente!!! No meu persistence.xml vou ter uma PU para cara cliente com o pool C3P0 configurado!! Não sei se seria esse a melhor maneira de fazer!! Ainda não sou um expert no assunto, rsrsr!!!
Em princípio usaremos TomCat, nesse caso como eu teria uma instância para cada aplicação?

Grato pela ajuda!!!
cristian_clever
JavaTeenager
[Avatar]

Membro desde: 16/09/2009 14:43:45
Mensagens: 163
Offline

Bom dia Leonardo, desculpe a demora!

Isso com certeza mereceria uma pesquisa... a principio a ideia de "pedreiro" seria rodar um script de deploy para cada cliente mantendo assim uma APLICAÇÂO para cada um dos seus clientes... dessa forma seria acredito que até mais simples futuras customizações/Alterações. Lembrnado que sua biblioteca Core iria conter toda sua aplicação de forma que todos iriao apontar para um mesmo .jar.

A ideia precisa ser melhorada!

Cristian Clever
http://alemdocafe.wordpress.com
[WWW] [MSN]
leonardo.carbone
HelloWorld

Membro desde: 13/08/2009 11:34:12
Mensagens: 11
Offline

Legal Cristian!!!
Obrigado pela ajuda, vou rever isso para chegar numa melhor solução!

Valew!


cristian_clever wrote:Bom dia Leonardo, desculpe a demora!

Isso com certeza mereceria uma pesquisa... a principio a ideia de "pedreiro" seria rodar um script de deploy para cada cliente mantendo assim uma APLICAÇÂO para cada um dos seus clientes... dessa forma seria acredito que até mais simples futuras customizações/Alterações. Lembrnado que sua biblioteca Core iria conter toda sua aplicação de forma que todos iriao apontar para um mesmo .jar.

A ideia precisa ser melhorada!
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

leonardo.carbone wrote:Olá pessoal!
Estou desenvolvendo um projeto aqui na empresa onde a camada de visão será desenvolvida em Flex e as regras de negócio e persistencia em Java com JPA/Hibernate usando banco Postgre.
O pessoal aqui da empresa cogitou a idéia de colocarmos essa aplicação em nossa hospedagem e utilizarmos bases diferentes para cada cliente, ou seja, todos os nossos clientes usariam a mesma aplicação mas que acessaria a base de cada cliente. Os usuários por cliente podem variar, 10, 50........(espero que tenha sido claro rsrs)

O que vocês acham!?



Eu acho má ideia. Quando vc precisam adicionar features ( e acredite que irá fazer isso) terá que as adiconar para todos os clientes já que a aplicação é apenas uma. Do ponto de vista da aquitetura isso viola o conceito de deploy e um pesadelo para segurança.

O unico jeito disso funcionar é se vc tem controlo total sobre as features da aplicação.Ou seja, é um produto que vc vende como serviço e não evolui ondemand (como o Google Docs , por exemplo). Caso contrário não é boa ideia.

Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
bandrade
GUJ Ranger

Membro desde: 20/01/2003 15:45:15
Mensagens: 782
Offline

Porque um banco de dados para cada cliente? isso parece loucura...

Imagina quando tiver que atualizar o banco... vai rodar o script em cada um deles?

Dá uma olhada nesse artigo:

http://msdn.microsoft.com/en-us/library/aa479069.aspx

Sim, é msdn, mas eles não propoe produtos, apenas discute o problema e propeo solucoes sem citar produtos...

Leia principalmente a 2a parte, Multi-Tenant Data Architecture

Will Code For Food
leonardo.carbone
HelloWorld

Membro desde: 13/08/2009 11:34:12
Mensagens: 11
Offline

Pelo que entendi, eu teria que ter uma aplicação para cada cliente, ou seja, na pior das hipóteses, se eu não contratar um datacenter para colocar as aplicações teria que contratar uma hospedagem Java para cada cliente, estou correto!? OK, mas no meu projeto se eu precisar adicionar uma customização para um cliente eu faria um deploy para o cliente especifico! Se eu precisar fazer um deploy para outro cliente, essas alterações iriam junto,
Na verdade das duas maneiras eu vou ter que controlar isso !!


Eu acho má ideia. Quando vc precisam adicionar features ( e acredite que irá fazer isso) terá que as adiconar para todos os clientes já que a aplicação é apenas uma. Do ponto de vista da aquitetura isso viola o conceito de deploy e um pesadelo para segurança.

O unico jeito disso funcionar é se vc tem controlo total sobre as features da aplicação.Ou seja, é um produto que vc vende como serviço e não evolui ondemand (como o Google Docs , por exemplo). Caso contrário não é boa ideia.
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team