Sistema MultiUsuarios

Prezados boa tarde.

Sei que o titulo do topico nao condiz muito com programação java sendo que multiusuarios é utilizado para S.O

gostaria de tirar algumas duvidas.

Estou desenvolvendo um sistema onde varias empresas do mesmo seguimento iram utiliza-lo em ao mesmo tempo (Acho que seria melhor chamar de simultâneos)

quero sabe a opnião de vocês sobre este assunto

qual seria a melhor forma para desenvolver?

seria mais facil desenvolver um sistema para cada empresa? e a questão da atualização destes sistemas? se eu precisar corrigir um bug que afete todos os clientes? teria a possibilidade de atualiza-los digamos 100 clientes de uma unica vez?

ou seria melhor desenvolver um sistema onde é unico e ele se adéqua conforme o usuario logado, isso iria impactar muito o desenvolvimento do banco de dados na opnião de vocês

estou postando na area de JavaEE pois o sistema utilizará JavaEE6 EJB3.1 JPA2.0 JSF2

todas as suguestões são extremamente bem vindas e importantes!

abs.

Procure por “multitenancy”, não por “multiusuário” (que tem um sentido bem diferente).

primeiro. a maquina que vai gerenciar tudo isso ai. Aguenta? qual a configuração?
e mais…
sera que por algum processo, por exemplo algum relatorio feito no mesmo horário. Não irá sobre carregar o servidor?

quantas empresas vao se conectar?

entanglement

Obrigado pela dica estou vendo o material.

denisspitfire

nao defini ainda a questao desse servidor… pois nao sei ainda qual a melhor maneira para desenolver esse sistema. é um sistema razoavelmente grande é um controle empresarial.
eu estava pensando em colocar um cliente em um servidor.

a principio são 100 clientes com acessos diarios simultaneos.

tenho este medo tambem… pois o sistema tem a possibilidade de gerar varios relatorios, isso pode impactar.

meu problema é que se a base de clientes estiver muito grande e eu precisar fazer um modulo que ira atender todos os clientes. vou ter que fazer isso nos 100 projetos.

Obrigado pelas respostas pessoal

Amigão,

Sobre o servidor, não devia se preocupar pois existem serviços cloud que você vai expandindo a máquina de acordo com a necessidade.
O tipo de serviço que utilizo, é um sistema para vários clientes. De acordo com o usuário logado: mostro determinada funcionalidades, mostro determinada imagem, determinado cabeçalho, rodapé, etc…

O banco tem que ser muito bem modelado, pois toda essa lógica se replica no banco.
Qualquer dúvida, me encontro a disposição.

gfao

meu velho… estou vendo um servidor cloud mesmo… e os preços acredito que estao acessiveis para meu bolso atualmente…

vc usa alguma padrao de desenvolvimento?
tipo uma tecnica como Multi-tenancy como nosso amigo citou acima?

Obrigado

Segundo esse artigo:
http://imasters.com.br/artigo/19067/cloud/entendendo-o-modelo-multi-tenancy

Eu uso o modelo 4(Multi-inquilino via todo o stack de software compartilhado).

Eu criei minha própria arquitetura em cima do Spring, Hibernate, JSF2 com Primefaces(inclusive criei componentes que fazem as telas simples pra mim, os famosos CRUDs). Essa parte foi a mais fácil. Depois disso trabalhei na modelagem, nesse modelo, tive que criar, como se fosse uma separação lógica, banco “mutável” para a aplicação mudar de acordo com parametros que é definido em uma tabela no banco preso a um cliente especifico.
Depois veio o mais fácil, construir a aplicação e correr pro abraço.

gfao

estou lendo o artigo muito obrigado

eu irei trabalhar em cima de uma arquitetura baseada em DDD com EJB, JPA,Eclipselink,JSF,Primefaces e jboss para AS

irei estudar bem esse SaaS e a questão do banco de dados logico e mutavel.

existe algum livro bom sobre esses assuntos que vc possa me indicar?

Tks

Cara, quando eu tive essa ideia, foi assim que li esse artigo e vi um artigo sobre banco “mutáveis”.
Estou tentando achar aqui, mas posso te exemplificar via MP.

Vou te mandar uma ai.

[]s

Olá, concordo com as respostas dadas até agora.

Na empresa em que trabalho, ajudo a desenvolver um software que vários bancos utilizam.
Não há como ter uma instância única, já que o sistema roda dentro das instituições.
No entanto, temos a preocupação de manter um fonte e um “executável” (na verdade, um WAR) únicos.
Isso facilita muito o gerenciamento e o processo de desenvolvimento. Porém, sem o devido cuidado, o código pode virar um emaranhado de IFs.
Além disso, evitamos colocar IF pelo cliente em específico, dando preferência a parâmetros gerais, onde cada cliente possui um perfil de parâmetros pré-definidos.

Outras técnicas que utilizamos são:
[list]No banco de dados: quando há diferenças em procedures, criamos subrotinas (outras procedures) que executam condicionalmente de acordo com algum parâmetro do sistema
[/list][list]No java: programamos com orientação a interfaces, criando diferentes implementações quando necessário, a instância é definida de acordo com os parâmetros do sistema
[/list][list]Nas telas: geralmente utilizamos controle de visibilidade[/list]

[duplicado]

utluiz

obrigado pelas dicas…
e a questao dos IF’s andei analisando vou fazer por perfil pre definido mesmo…

para nao virar uma cocha de retalhos e a manutenção ficar amarrada por cliente.

pessoal será que é melhor eu utilizar uma arquitetura mais simples que a DDD e em vez do eclipse link

eu utilizar o Hibernate 4?

Sinceramente eu acho que sim.
Você tem que visar uma arquitetura mais produtiva e mais intuitiva ao usuário final e também mais programável.