Para grupos e várias marcas
Várias empresas, uma instalação, sem clientes partilhados
Os grupos normalmente resolvem isto duas vezes mal: ou cinco instalações separadas e cinco de tudo o resto, ou uma instalação e uma promessa solene de que a aplicação filtra sempre corretamente. A primeira é cara. A segunda é uma promessa, e promessas não são um modelo de segurança.
Se geres mais do que uma empresa — uma holding com subsidiárias, uma franquia, duas marcas dirigidas a mercados diferentes, uma agência e a coisa de que a agência saiu — já conheces a forma do problema. As marcas partilham pessoas, ferramentas e um departamento financeiro. Não partilham clientes, e não podem parecer partilhar.
A iKonekt executa todas a partir de uma única instalação, e a separação entre elas é mantida pela base de dados e não pelo código. Essa distinção parece académica até ao dia em que deixa de ser.
Porque é que a camada importa
Um filtro ao nível da aplicação é uma frase numa consulta. Funciona enquanto todas as consultas que vierem a ser escritas a contiverem — incluindo a que foi escrita com pressa, a que foi escrita pelo programador novo e a que foi escrita para um relatório que só ia ser usado uma vez.
Empurra a fronteira para dentro da base de dados e a aritmética inverte-se. A política corre em cada leitura e em cada escrita, por baixo de tudo. Uma consulta que se esquece da empresa não devolve as linhas erradas; não devolve nenhuma. O modo de falha passa a ser um ecrã vazio e um programador confuso, que é o modo de falha correto.
Os ecrãs vazios são uma funcionalidade. Preferimos explicar um ecrã vazio a um dos nossos próprios engenheiros do que explicar uma lista de clientes a dois clientes que não esperavam encontrar-se.
- 1Clientes & conversasDelimitado. Um vendedor da marca A não consegue aceder aos da marca B, por construção e não por configuração.
- 2Reclamações sobre um cliente"Já temos esta conta" é um bloqueio detido por empresa — por isso duas marcas podem trabalhar o mesmo mercado sem colidir.
- 3Prompts & configuraçõesCada empresa edita os seus. O único sítio onde isto já foi partilhado era um bug, e é o bug de que este sistema mais se orgulha de ter encontrado.
- 4Programas de parceirosUm módulo por empresa, não um global que todos herdam.
Fronteira imposta abaixo da aplicação
O que um grupo realmente pode partilhar
A separação não é isolamento por gosto. As coisas que vale a pena partilhar num grupo são partilhadas deliberadamente, e são quase todas as aborrecidas — o que é exatamente certo, porque as aborrecidas são onde vive o custo duplicado:
- Uma instalação para executar e atualizar. Um deployment, um conjunto de credenciais a tratar, uma coisa a manter corrigida.
- Uma equipa de pessoas, com chapéus diferentes. Uma pessoa pode trabalhar em mais do que uma empresa; o que não pode fazer é ver ambas ao mesmo tempo através de uma consulta que se esqueceu de perguntar.
- Um conjunto de hábitos. A forma como um lead é atribuído, a forma como uma nota é escrita, a forma como um trabalho chega a uma fatura — aprende-se uma vez, aplica-se em todo o lado, o que encurta a integração para cerca de uma manhã.
- Uma relação com o resto da família. castomAPI por baixo, a mesma conta, os mesmos conectores — configurados por empresa onde importa.
A pergunta que um grupo sempre faz em segundo lugar
"Podemos fazer relatórios sobre todas?" Sim — a partir do ponto de vista do próprio grupo, deliberada e explicitamente, e não como efeito secundário de uma fronteira com fugas. A distinção é todo o desenho: atravessar a linha tem de ser um ato que alguém praticou de propósito, com autoridade para o fazer. Nunca pode ser algo que um identificador perdido consiga fazer por acidente.
E a pergunta que fazem em terceiro lugar: "o que acontece se vendermos uma das marcas?" Uma fronteira que a base de dados mantém é também uma fronteira de onde podes retirar uma cópia limpa. Isso não é uma coincidência — separação e portabilidade são a mesma propriedade vista a partir de duas reuniões diferentes.
Por baixo do piso
O que está a segurar a linha, concretamente
Não é uma afirmação, é uma lista. Se um fornecedor não conseguir produzir esta lista sobre o seu próprio produto, isso vale a pena notar.
26
Tabelas que transportam a sua empresa, com a verificação forçada a ativa e não meramente disponível.
72
Políticas, escritas uma a uma para que cada uma tenha sido lida por uma pessoa, e não geradas em ciclo.
942
Testes, executados contra uma base de dados reconstruída do zero sempre que algo muda.
0
Empresas por omissão. Um pedido sem âmbito falha antes de chegar aos dados — não há fallback de que alguém se esqueça de desativar.

"Cinco empresas, cinco instalações, cinco faturas tuas."
Uma instalação. Cinco fronteiras que a base de dados mantém.
Pessoas partilhadas, hábitos partilhados, plataforma partilhada — e nem um cliente partilhado. Atravessar essa linha tem de ser algo que uma pessoa fez de propósito, nunca algo que um identificador conseguiu por acidente.
Como a separação é construída →