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!
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?
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.
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.
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.
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.
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]