A arquitetura multi-tenant por tras de um CRM que atende centenas de clientes

A arquitetura multi-tenant por tras de um CRM que atende centenas de clientes

Por que multi tenancy e decisao de arquitetura, nao recurso

Toda plataforma que atende varios clientes em uma instalacao precisa responder a uma pergunta central: como garantir que o dado de um cliente nunca apareca para outro. Isso nao se acrescenta depois; e uma decisao que toca quase toda consulta, todo relatorio e todo upload.

Erros nessa camada nao sao bugs comuns: um bug funcional quebra um recurso, um bug de isolamento vaza dados de clientes, e reputacao nao se recupera rapido disso.

Tres padroes de isolamento

  • Banco separado por cliente: isolamento mais forte e facil de explicar, mas caro de operar.
  • Schema separado no mesmo banco: meio termo, com possiveis problemas de desempenho em grande numero de schemas.
  • Tabelas compartilhadas com coluna de tenant: mais eficiente e escalavel, porem mais exposto a erro humano.

Para CRMs de conversa o padrao compartilhado costuma ser o pratico, desde que a aplicacao do filtro seja sistematica e nao dependa da memoria do desenvolvedor.

Defesas em camadas

  • Na camada de acesso a dados, com filtro de tenant adicionado automaticamente.
  • No middleware, com identidade vinda da sessao autenticada, nunca de parametro do cliente.
  • No banco, com seguranca em nivel de linha.
  • Chaves compostas com o tenant, tornando referencias cruzadas estruturalmente impossiveis.

Onde os vazamentos realmente ocorrem

  • Relatorios e agregacoes escritos fora do caminho padrao.
  • Exportacoes, sobretudo em processos de fundo.
  • Busca global com motor separado.
  • Arquivos de midia com links adivinhaveis ou sem checagem de propriedade.
  • Jobs e filas que perdem a identidade do tenant.
  • Webhooks de entrada, que devem mapear o tenant por dado verificado.

Testar isolamento de forma sistematica

  • Testes de integracao com dois tenants.
  • Testes negativos em cada endpoint.
  • Checagens automaticas de codigo para consultas fora do padrao.
  • Testes especificos de jobs de fundo.

Desempenho e operacao

  • Indices comecando pela coluna de tenant.
  • Atencao a clientes gigantes.
  • Limites de taxa por tenant.
  • Plano de exclusao e exportacao por tenant.

Perguntas frequentes

Banco separado e sempre mais seguro?

E mais facil de garantir, nao automaticamente mais seguro; disciplina decide.

Da para mudar de padrao depois?

Sim, com custo; sair de tabelas compartilhadas para bancos separados e mais facil que o inverso.

Proximo passo

Audite as areas de borda citadas: exportacao, busca, midia e jobs. Veja a pagina do produto.