SAAS e BD por cliente

Olá pessoal,
Estou num processo de migração de um sistema que irá se tornar SAAS, ou seja, uma instância e um BD para N clientes.
Porém há clientes, que por motivos de ‘protocolo’ da empresa, exigem que os dados permaneçam em um servidor próprio.
Como proceder nesse caso? Qual seria a melhor alternativa sem fazer gambiarras?

PS: Vou usar Rails.

putz, assunto chato, mas tive um request parecido há algum tempo atrás e analisei 2 maneiras, uma é baseada em RoundingDataSource, uma espécie de connjunto de datasources para cada cliente, e outra baseada no login do cliente, que o Spring intercepta e direciona à database correta.

ajudou? rs

Tecnoage,

Você chegou a avaliar o Hibernate4 com o suporte nativo a multi-tenancy?

não, na época eu não tinha hibernate 4… mas achei interessante

Estávamos discutindo isso dias atrás nesse tópico http://www.guj.com.br/java/281339-resolvidoautenticacao-de-usuarios-em-ambiente-saas#1484873

Também estou com dúvidas em relação a esse ambiente.

j0nny,

Tenho um problema parecido na minha app Rails.
Eu resolvi fazendo um rack middleware que antes de chegar na app rails o middleware conecta em um schema diferente baseado no subdominio da request. No meu caso, ele só troca o schema usando “use database xpto”. Mas deve ser possível conectar em outra instância.

O problema é a app web acessar banco remoto, vai performance vai sofrer bastante. Se o banco tem que ficar dentro do ambiente do cliente, não seria melhor colocar a app no ambiente do cliente também?

[quote=Rubem Azenha]j0nny,

Tenho um problema parecido na minha app Rails.
Eu resolvi fazendo um rack middleware que antes de chegar na app rails o middleware conecta em um schema diferente baseado no subdominio da request. No meu caso, ele só troca o schema usando “use database xpto”. Mas deve ser possível conectar em outra instância.

O problema é a app web acessar banco remoto, vai performance vai sofrer bastante. Se o banco tem que ficar dentro do ambiente do cliente, não seria melhor colocar a app no ambiente do cliente também?[/quote]

Foi uma solução pensada também, porém teria o problema do deploy, que a princípio, o Capistrano nos ajuda muito nisso. Mas ficaria dependente da infra do cliente.