O que exatamente é um aplicativo multilocatário?

13

De acordo com a definição disponível on-line, " A multilocação é uma arquitetura na qual uma única instância de um aplicativo de software atende vários clientes ". Isso significa que eu tenho um site de restaurante ou escola e forneço acesso a diferentes restaurantes ou escolas para usar meu aplicativo com seus próprios dados usando suas credenciais que forneço quando compram meu produto de gerenciamento escolar. Como se meu site fosse como schoolmanagement.com e forneço subdomínios diferentes para clientes de escolas diferentes como school1.schoolmanagement.com e school2.schoolmanagement.com, mas o código é o mesmo por trás desses dois subdomínios. Ambas as escolas têm funcionalidades ou temas diferentes, dependendo do banco de dados separado. Então eu preciso fornecerschoolmanagement.com para login e uma vez que meu cliente efetue login com base nas credenciais de login, eu redireciono para o respectivo URL, por exemplo, school1.schoolmanagement.com .

Este é o meu entendimento da aplicação de vários inquilinos. Meu entendimento está correto? Existe algum aplicativo multilocatário on-line que eu possa acessar.

Nomi Ali
fonte
11
O que você quer dizer com "Existe algum aplicativo multilocatário on-line que eu possa acessar"? Deseja obter a fonte ou experimentar como inquilino ou executar como host? Como você observa, a hospedagem de domínio é um exemplo comum de vários locatários, tanto para empresas grandes quanto para pequenas. O Google Apps for Business (ou qualquer que seja a marca atual) também é um aplicativo para vários locatários bastante amplo.
Kristian H
11
Até agora, você está no caminho certo. A multilocação refere-se à propriedade dos dados. Os dados são segmentados por tenans (proprietários). O aplicativo costuma ser o mesmo por um motivo simples: economia de escala. O armazenamento de dados também pode ser o mesmo ou pode ser diferente para cada tenan. Os dados não são compartilhados entre os tenans (ou geralmente não são, até agora eu sei).
LAIV
@ KristianH obrigado pelo exemplo de hospedagem de domínio, eu entendi.
Nomi Ali
@ Laiv Para que possamos ter um banco de dados diferente para cada cliente com sua própria configuração separada?
Nomi Ali
2
Sim. Essa (IMO) é a maneira preferível. Mas também é o caro. Quando digo bancos de dados diferentes, eles podem ser: a) Esquemas diferentes ou instâncias de banco de dados no mesmo RDBMS ou b) RDBMS totalmente diferentes.
LAIV

Respostas:

8

Sim é isso. Mas a definição da wikipedia não é suficientemente geral. Ele não trata arquiteturas de várias camadas ou novas formas de arquitetura, como SOA ou microsserviços.

A multilocação é sobre sistemas de software e isolamento de dados . Alguns exemplos:

  • um sistema de várias camadas com um banco de dados exclusivo pode ser multilocatário. Exemplo: um sistema SAP é composto de um back-end de banco de dados e alguns servidores de aplicativos da web que expõem de forma escalável serviços da web. É multilocatário: você pode adicionar um novo cliente sem alterar a instalação do software em execução, e vários clientes podem usar o sistema sem nunca se conhecerem. Os dados são completamente isolados (tecnologia proprietária).
  • seu sistema é composto de um ou vários processos executando serviços da Web expostos a clientes diferentes por meio de nomes de domínio diferentes (mas ainda são os mesmos processos que o executam no servidor). O isolamento de dados é alcançado com bancos de dados separados. É definitivamente multi-inquilino.
  • um sistema de microsserviço pode executar da mesma forma vários conjuntos de serviços da Web de baixo acoplamento, cada um usando um próprio micro-banco de dados. Se necessário para aumentar a escala, você pode iniciar novos clones dos mesmos microsserviços e eles, através de algum recurso de registro, encontrarão seus pares e se conectarão automaticamente a eles, oferecendo ao usuário o comportamento de um único aplicativo. Depois, existem dois cenários possíveis:
    • se, quando você deseja atender um novo cliente, precisa iniciar um novo conjunto separado de microsserviços e organizar que os microsserviços de um cliente se conectem apenas aos microsserviços relacionados ao mesmo cliente, será de um único inquilino.
    • mas se você puder atender novos clientes usando as instâncias em execução (e novos microsserviços serão necessários apenas para desempenho), será multilocatário
Christophe
fonte
1

Eu diria que sim, seu entendimento está basicamente correto. O aplicativo é compartilhado por vários clientes e também os dados de cada cliente são obtidos no banco de dados. Compartilhar o mesmo código sem que dados de clientes diferentes entrem no mesmo banco de dados provavelmente não seria considerado multitenant.

Andy
fonte
2
@NomiAli Não, eu não consideraria esse multitenant. Isso representa um ambiente separado para cada cliente. um dos benefícios do multitenant é que o banco de dados e o software são atualizados para todos os clientes ao mesmo tempo. Uma implantação e todos estão na versão mais recente. O que você está falando é que todo cliente tem sua própria instalação separada. Suponho que você possa ter uma base de código compartilhada, mas com bancos de dados diferentes, mas isso seria tolice, pois você precisa ter muito cuidado com as alterações no seu banco de dados, tornando-o mais caro, o que anula o objetivo do multitenant.
Andy
11
@NomiAli Um esquema por cliente teria ainda mais desvantagens do que um banco de dados por cliente, é ainda mais difícil de gerenciar porque você precisa executar os mesmos scripts apenas alterando os nomes dos esquemas. Novamente, não é impossível, mas o objetivo de um aplicativo multitenant é reduzir os custos para o fornecedor do software; as coisas que você está perguntando sobre empurrá-los de volta.
Andy
2
Então, se meu banco de dados solitário, que contém todos os tenans, falha ou fica comprometido ... Para onde vai a redução de custos? E o que acontece quando todo tenan tem diferentes necessidades de recursos e desempenho? E se eles quiserem ter acesso ao armazenamento de dados? ... Sim. Diferentes armazenamentos de dados por tenan e esquemas diferentes são multitenacy. Aqui, a estratégia de negócios e os serviços que queremos fornecer ao cliente é mais importante que os detalhes da implementação. A multilocação é um recurso, um valor diferencial. Quanto mais próximo estiver das necessidades dos clientes, melhor.
LAIV
2
Ele pode interessar a você softwareengineering.stackexchange.com/q/340531/222996
LAIV
4
Você superestima um pouco o aspecto do banco de dados múltiplo. Vários bancos de dados são apenas uma decisão de design; você pode ter vários bancos de dados compartilhando o mesmo esquema e usar um script para atualizá-los todos simultaneamente. Todos os aplicativos multilocatários devem separar os dados de cada cliente dos outros clientes; o mecanismo pelo qual isto é feito é um detalhe de implementação, e depende de factores como o grau de isolamento desejado, etc
Robert Harvey