Quais são as melhores práticas na construção de aplicações multi-tenancy?
-
23-08-2019 - |
Pergunta
Quais são as melhores práticas na construção de aplicações que suportam vários inquilinos, como Software as a Service?
Os links para documentos técnicos que se expandem sobre este tema são muito apreciados.
Solução
Você pode encontrar alguns conselhos valiosos em uma série de posts por Oren Eini.
Este é um dos últimos lugares na série, com links para posts anteriores: http://ayende.com/Blog/archive/2008/08/16/Multi-Tenancy--Approaches-and-Applicability.aspx
Outras dicas
Para o banco de dados:
A. Coloque tudo no mesmo banco de dados, colocar uma coluna tenant_id em suas tabelas
Prós: Fácil de fazer
Contras: muito propenso a erros: é fácil de vazamento de dados de um inquilino para outro.
B. Coloque tudo no mesmo banco de dados, mas colocar cada inquilino em seu próprio namespace (chamadas PostgreSQL los esquemas)
Prós: Oferece proteção melhores dados de vazamento do que a opção A
Contras: Não é suportado por todos os bancos de dados. AFAIK PostgreSQL e Oracle oferece suporte a ele.
C. banco de dados de uma configuração por inquilino
Pros: Absolutamente nenhuma chance de dados vazamento de um inquilino para outro
Contras: Criação de novos inquilinos é mais complicada. conexões de banco de dados são caros.
Eu aprendi apenas as idéias acima de Guy Naor. Aqui está um link para sua apresentação: http : //aac2009.confreaks.com/06-feb-2009-14-30-writing-multi-tenant-applications-in-rails-guy-naor.html