Melhor arquitetura para sistema utilizado por varias filiais

Pessoal,

Estou construindo uma aplicação que será utilizada por várias filias. Cada filial é independente porém algumas pessoas chaves acessam os dados de mais de uma filial. A matriz também utiliza o mesmo software porém ela precisa consolidar os dados de todas as filiais que utilizam esse aplicativo. Minha dúvida de arquitetura é: O que é melhor, instalar o software em cada empresa e construir um segundo aplicativo que consolida os dados gerenciais de todas as filiais para a matriz ou construir um único aplicativo que separa os dados de cada filial mediante os cadastros de usuário porém em uma única base unificada?

At.te,

Um dos pontos importantes a serem avaliados é a disponibilidade do sistema.

Se por ventura você optar por fazer tudo centralizado, você tem que garantir que todas as filiais sempre tenham acesso à rede.

Se por ventura, houver uma chance, mesmo que mínima de a filial ficar Offline (Problemas de Telefonia por exemplo), a filial não pode ficar parada, e deve poder trabalhar “off line” e depois consolidar os dados.

Caso não seja algo tão crítico, e esta situação de “ficar off line” não exista, não vejo problemas num primeiro momento em centralizar os dados.

Abs

2 curtidas

@Eliezerreis é complicado responder uma pergunta deste gabarito com pouquíssimas informações como esta. O máximo que podemos fazer é supor e, baseado nisso, opinar.

Eu vejo este cenário como um excelente modelo para se aplicar SaaS e a famosa arquitetura de Microserviço.
Dê uma lida sobre o assunto, pesquise e veja se encaixa na sua necessidade. A sugestão do colega do sistema funcionar offline é outro ponto que você deve avaliar.

Bom trabalho.

Analise as vantagens e desvantagens de cada solução e deixe o cliente resolver.

Faz um sistema só e inclui os ids das filiais nos cadastros. Daí é só caprichar no módulo de autorização e segurança.

Na verdade a minha dúvida é puramente técnica do ponto de vista da arquitetura. A minha pergunta foi mais para dar um ponta pé inicial em termos de tecnologias disponíveis para ambas as situações.

Pelo que entendi até agora basicamente devo ir para um abordagem multi serviços ou para uma abordagem monolítica. Se for para multi-serviços terei que adquirir uma bagagem grande de infra estrutura como proposto pela ideologia devops. Ai vem essas questões de containers, cloud e etc.

Se for para uma abordagem monolítica terei que resolver essas questões basicamente a nível de banco de dados. O problema é que já fiz um sistema assim e ficar passando chave primaria da filial em todas as requisições e buscas do banco de dados torna a aplicação perigosa do ponto de vista do isolamento dos dados. Mediante algumas pesquisas encontrei um tal de multi tenancy. Isso me parece muito interessante do ponto de vista da arquitetura. Alguém já utilizou esses serviços? Qual a experiência na pratica?

At.te,

Meu conselho: especifique seus requisitos funcionais e não-funcionais e projete uma arquitetura que atenda esses requisitos. Não use seu cliente de cobaia para qualquer palavrinha da moda. Se os requisitos indicarem a necessidade de usar alguma dessas tecnologias, excelente. Se não houver necessidade, não invente moda.

Contrate um bom analista funcional e um bom arquiteto, se não se sentir capaz de realizar isso sozinho.

Se você tiver bons requisitos, seu caminho será mais tranquilo.

1 curtida