iKonekt

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.

Uma instalaçãoPor empresa
  • 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.

Como a separação é construída →

"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 →