Multency

Boa tarde a Todos. Estou preste de mudar o meu sistema para um sistema multency, assim estudei sobre o assunto e vários relatos, mas ainda estou com uma pulga atrás da orelha e gostaria que os companheiros compartilha-se as ideias e experiência sobre este assunto. O que mais gera duvida no multency e quando você tem vários cliente e no meio existe um que tem uma movimentação tensa de trafego de dados. Mesmo o projeto sendo todo feito corretamente tudo bem planejado há alguma possibilidade de ocorrer alguns transtorno não por conta do projeto, mas sim desta inovação(Multency). Pois por ser uma coisa nova não conseguir achar nada que relatasse a eficaz disto.

OBS: Deixando claro que o servidor atente todos os requisitos necessários.

Cara, usa o termo multitenancy ou até multitenant que talvez vc vai ter mais sucesso nas buscas :wink:

Já fiz isso é até mesmo em sites estrangeiros, Os americanos são que mais relata isso e o que observei parece que no php é mais usado e mais estável e não vi muito coisa sobre isso no java web.

Pesquise sobre load balancer. Não sou de infra pra poder te explicar bem isso, mas é o que costumam usar.

Eu ja fiz um projeto assim com java e spring, praticamente peguei esse projeto e dei uma modificada nele.
também considero tirar algumas dúvidas sobre isso no site D-Zone.

Cara, talvez esteja havendo uma confusão sobre oq exatamente vc quer fazer.
A definição de MULTITENANCY é a seguinte:


Veja se é isso q vc quer. E já lhe adianto que tem sim muito material sobre isso na internet (em java), com código e tudo.
Se vc chegou a este assunto, ao menos já deve ter pensado em como vai separar seus tenants(clientes), por banco, esquema ou coluna identificadora?
Já implementei por esquema e por coluna. Em nenhum caso vai ser algo simples. Vai ter de dominar mto bem a tecnologia base do seu projeto.

Sim Amigo Rodrigo, o protótipo esta sendo criando e seria um único sistema interligado com vários bancos inclusive no Caelum tem exemplo como nesse link: http://blog.caelum.com.br/acessando-multiplos-bancos-de-dados-com-jpa-e-cdi/#comments. Como expliquei anteriormente se por acaso os amigos já tiveram problema nesta arquitetura e se vale apena deixar o velho procedimento tradicional um sistema para cada cliente. Entendeu?

Sim, problemas sérios podem surgir, mas é normal se tratando de uma arquitetura complexa pq deve ser mto bem desenvolvida. Com certeza eu recomendo multitenancy ao invéz de separar em vários projetos.
Não sei se recomendaria separação por banco, eu recomendaria por esquema (no caso do postgreSql).
Separando por esquema vc já consegue isolar na conexão, mas se por acaso quiser fazer uma busca mesclando outro esquema vc consegue sem mta magia, exemplo de necessidade disso é pq geralmente tem uma base centralizadora, onde ficam os dados principais como usuários… ai fica mais simples n precisa d outra magia pra pegar dados de outra base.
Se bem implementada, qualquer método de multitenancy é bom, depende diretamente da lógica de separação de dados da sua aplicação. Se bugado, pode ser gravíssimo, tipo, permitindo um usuário ver dados de outra empresa…

O hibernate tem suporte a multitenancy por banco ou por esquema, por coluna não, já implementei e é tenso, não faria novamente se realmente não fosse necessário ser assim(por coluna identificadora).

O problema estará se usar isso sem a real necessidade. Você tem que partir das necessidades e políticas dos clientes. Exceto se está querendo lançar um produto genérico para quem quiser assinar como serviço fechado sob os aceites da sua empresa.

Produto genérico que seja vendável a vários clientes, onde cada um terá acesso à mesma plataforma, mas com dados separados: MULTITENANCY
Ai vem tudo aquilo que eu já disse: só precisa escolher QUAL a forma de separação de dados que será adotada.

Rodrigo agradeço por postar sua experiência com multitenancy já estava pensando separar os bancos por schemas, pois acho mais seguro. Você já teve a oportunidade de de realizar multitenancy com jpa? Caso teve é melhor do que Hibernate?

Não tem como usar só o JPA, pq ele é só uma especificação.
Vc precisa usar algo que o implemente como o Hibernate, EclipseLink, MentaBean…
Se usar hibernate estará usando jpa.
Sim, quando implementei era usando hibernate/jpa, até já tentei com EclipseLink mas não foi nada amigável.

1 curtida

Velho isso que estou tentando fazer no clipseLink, nossa estou passando raiva foi bom ter me avisado amigo. :slight_smile:

Bom cheguei a conclusão que clipseLink é melhor para mim mesmo sendo menos amigável que hibernate/jpa para minha estrutura e o que mais encaixou. Agradeço a todos que Participaram deste post.