Ir para conteúdo
Ederson Mendes Goulart

Arquitetura de um Software MULTIEMPRESAS(multi tenancy)

Recommended Posts

Bom dia, boa tarde ou boa noite!

 

Nesse artigo vou falar de um assunto que sempre quis compartilhar com o pessoal de T.I., a analise de desenvolvimento e arquitetura de um software de gestão MULTIEMPRESAS.

 

Notas: Todo o sucesso de um sistema está em sua análise.

 

Antes de começar escrever sobre essa arquitetura, acho válido falar da evolução dos sistemas ao longo desses últimos anos, antes dos serviços de servidores nas nuvens chegarem com toda essa força, existiam poucas soluções no mercado nacional de softwares de gestão na web, a maioria dos softwares de gestão era desktop instalado em uma maquina servidora(ou não) e compartilhado com outros computadores da rede local. Não estou dizendo que software desktop é ultrapassado, ambos tem vantagens e desvantagens, tudo depende do que vai ser apresentado ao software, mas é realidade que com a chegada das nuvens os softwares web ganharam muito mais demanda, e com essa nova realidade tecnológica por que não desenvolver um único sistema que funcione para todos os nossos clientes? Um único software multiempresas.

 

Fiz algumas pesquisas na internet sobre o tema, porém não achei muita informação, ou nenhuma. Achei estranho pois a maioria das empresas de grande fluxo de dados na web hoje trabalham com essa ideia de projeto, o facebook, youtube, linkedin e toda ferramente de mídia social tem essa estrutura de B.D. similar. O próprio linkedin seria um exemplo, pois cada usuário tem seu acesso e só ele pode alterar suas informações. A única diferença de um software gerencial multiempresa, seria que cada empresa não conseguiria visualizar a informação da outra, porém estariam todas juntas no mesmo sistema e no mesmo Banco de Dados.

 

O desenvolvimento realmente necessita de cuidados especiais, porém acredito que existem mais vantagens que desvantagens, separei alguns pontos positivos sobre:

  1. Implantação do Software Simples
  2. Suporte ágil, onde quando ajustado bugs pra um, replica automaticamente para todos.
  3. Um único servidor para todos as empresas(no nosso caso são 5 servidores, cada um com sua função, mas vou deixar para falar sobre arquitetura de servidores em um próximo artigo), com isso não terás problemas com instalação em sistemas operacionais ou máquinas virtuais de versões diferentes, ou aquelas atualizações indesejadas de sistema operacional que muitas vezes ferram todo o sistema.
  4. Uma unica versão do sistema que é replicado para todos no mesmo momento da atualização
  5. Diminuição de requisição de suporte e atendimento ao cliente
  6. Elimina do cliente exigências e compras de produtos e serviços como:

- Computadores, Nobreak, Modem, etc.

- Sistema operacional

- Contratação de ip fixo

- Internet própria para o servidor com boas taxas de uploads(raridade no Brasil).

- Equipe ou profissional de infraestruturas em redes.

 

A equipe se concentra em apenas um produto com isso consegue aplicar uma qualidade superior ao software, diminuir drasticamente o estresse da equipe por não ter que dar suporte em vários softwares diferentes e a vários tipos de problemas ao mesmo tempo, e temos de consequência uma equipe mais tranquila e focada na criação de novas ideias e melhoras do software.

Esquema técnico: Na parte técnica desenvolvemos uma modelagem de B.D. de solução simples. Tenho uma tabela empresa, que é recursiva, ou seja, se relaciona com ela mesmo, os relacionamentos são as filiais para poder agrupar empresas que tenham mais de uma filial(Cadastramos sempre uma empresa pai e outra filha mesmo se ela não tiver filiais, indicando e preparando o sistema para inclusão de uma nova filial se um dia precisar). Usamos o código da empresa pai para cadastrar registros gerais que serão listados para todas as filiais, mas tem também registros que são cadastrados e vinculado a uma determinada filial, esses são listados apenas para a filial lançada, porém o usuário matriz pode visualizar de todos os registros de todas as filiais.

 

No cadastro de usuário, é solicitado a empresa que ele pertence e a filial, se não for definido filial o sistema vai entender que o usuário tem acesso a todas as filiais, se for definido a filial ele vai ter acesso apenas as informações daquela filial. 

 

No script ao fazer o login criamos uma variável global(SESSION), onde recebe os códigos das empresas que o usuário pertence, se não for definido filial o usuário vai receber o código de todas as filiais onde vai ser listados registros de todas as filiais. Se for definido a filial no cadastro, vai receber apenas o código da filial onde vai listar apenas registros dessa filial. 

 

O cuidado que deve ter e o ponto chave desse modelo é sempre comparar em TODOS os SQL's usando essa variável global. Se o projeto for bem gerenciado, fiscalizado e testado, não terá problema algum. 

 

Agora, crie sua ideia e boa sorte no mercado. 

 

O que acharam?

 

Espero ter ajudado. 

 

Dúvidas, críticas positivas e negativas são muito bem vindas.

 

Linkedin: https://www.linkedin.com/in/ederson-mendes-goulart-74a0a4aa/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.