Header Ads

O que é multilocação e como isso afeta os aplicativos SaaS?

Shutterstock / Peshkova

A multilocação descreve uma arquitetura de software em que uma única instalação física pode fornecer várias instalações lógicas. Cada instalação lógica atende a uma base de usuários dedicada chamada de “ locatário. ”

A multilocação é vista com mais frequência no contexto de serviços SaaS em nuvem. As organizações que se inscrevem em um serviço tornam-se “ locatários. ” O locatário encapsula a configuração no nível da organização e geralmente oferece suporte a várias contas de usuário final. Quando um usuário faz login, ele vê a visão personalizada do serviço por sua organização.

Por que usar a multilocação?

A principal alternativa à multilocação é a locação única. Nesse modelo, cada locatário recebe sua própria instalação autônoma do sistema. Na prática, isso significa que a infraestrutura de servidor dedicado precisa ser configurada para cada locatário.

A multilocação existe exclusivamente em seu aplicativo. Cada locatário compartilha a mesma infraestrutura de servidor. Isso simplifica a configuração de novos locatários, pois você não precisa provisionar nenhum recurso extra. Os custos de execução de um serviço multilocatário podem, portanto, ser menores do que uma implementação de locatário único comparável.

Infraestrutura compartilhada também significa maior eficiência operacional. Você pode ter um inquilino que usa o serviço com pouca frequência. Com uma plataforma de locatário único, você ainda estaria provisionando uma instalação dedicada, mesmo que ela ficasse ociosa na maior parte do tempo.

Com uma arquitetura multilocatário, você mantém um conjunto de sistemas. Você pode antecipar a carga agregada geral e não precisa manter os sistemas estacionados na eventualidade de um locatário fazer login. Os recursos são distribuídos entre os usuários ativos. O outro lado é que um locatário particularmente ocupado pode impactar negativamente os outros, causando problemas de desempenho indiretos.

A multilocação pode ser muito mais fácil de manter ao longo do tempo. Você tem uma instalação do seu serviço, o que significa um conjunto de migrações. A multilocação se alinha bem com fluxos de trabalho de desenvolvimento de software modernos impulsionados por integração contínua e implementações rápidas. A iteração em um sistema de locatário único significa que você precisa criar scripts de orquestração para atualizar todos os seus ambientes de locatário individualmente.

Mais uma vez, há dois lados nisso: a locação única tem uma vantagem significativa quando você deseja uma implantação gradual. O isolamento por locatário simplifica lançamentos incrementais, onde apenas uma minoria de sua base de usuários vê um novo recurso no primeiro dia.

A locação única também ajuda a atender às solicitações individuais dos clientes. Um locatário pode desejar permanecer em uma versão de plataforma mais antiga por um pouco mais, dando a seus usuários mais tempo para se prepararem para a mudança. Não há necessidade de que todos se mudem juntos quando os inquilinos podem ser migrados individualmente.

A multilocação funciona melhor quando todas as organizações têm os mesmos requisitos gerais. Nesse cenário, todos os locatários se beneficiam de todas as alterações feitas. O provedor se beneficia do tempo de lançamento reduzido e da eficiência operacional aprimorada, mas perde um grau de isolamento do locatário.

Desvantagens da multilocação

Juntamente com os problemas descritos acima, a multilocação apresenta algumas considerações importantes em cada aplicativo. No topo da lista está a segurança, que poderia ser mais facilmente comprometida em um serviço multilocatário.

A locação única permite que você coloque proteções fortes em torno dos dados de cada locatário. Em um ambiente multilocatário, os dados de todos existirão na mesma infraestrutura. Isso significa que há um local centralizado para um atacante mirar.

A multilocação pode exigir mais dos desenvolvedores. Cada operação em seu serviço precisa ter o escopo definido manualmente para o inquilino ativo. As tabelas de banco de dados que armazenam recursos alugados precisarão incluir um campo tenant_id ou semelhante, permitindo que cada registro seja vinculado a seu inquilino.

Em um aplicativo de locatário único, em que cada locatário obtém sua própria instalação autônoma, a seguinte consulta de banco de dados pode ser aceitável:

 SELECIONE * DOS pedidos; 

Em um ambiente multilocatário, você &’ precisará ajustar isso:

 SELECIONE * DOS pedidos WHERE tenant_id = 1; 

Uma única consulta de banco de dados com falha pode revelar informações confidenciais de seus outros locatários.

Fazer backup de um serviço multilocatário geralmente é simples. Você só precisa cuidar de uma instalação de aplicativo. No entanto, surgem desafios na restauração. É mais difícil restaurar seletivamente os dados de um locatário, pois todos os dados existem em um único dump. Fornecer a um inquilino seu arquivo de dados levanta preocupações semelhantes – você precisará de um mecanismo personalizado para extrair seus registros da infraestrutura compartilhada.

Locação híbrida?

Alguns aplicativos estão evoluindo para a “ locação híbrida. ” Este conceito combina o melhor dos dois modelos. A locação híbrida se alinha bem com sistemas construídos com microsserviços. Alguns serviços serão de locação única, enquanto outros usarão uma forma de multilocação.

Isso pode ajudá-lo a melhorar ainda mais a eficiência de sua arquitetura. Você pode querer uma abordagem multilocatária para funções globais, como autenticação e integrações de terceiros. Os dados gerados pelos usuários do seu serviço podem ser armazenados separadamente, usando várias instâncias de um serviço de locatário único.

Usar uma combinação de serviços de locatário único e multilocatário oferece mais flexibilidade. Você pode acelerar o lançamento de novos recursos usando a abordagem que funciona melhor para cada um. A locação híbrida pode oferecer maior valor geral, fornecendo um equilíbrio mais ideal entre facilidade de desenvolvimento, segurança, custo e manutenção.

Existem pontos críticos, particularmente em torno da complexidade e distribuição. Separar artificialmente seu aplicativo em serviços autônomos de um e vários locatários não é a maneira certa de abordar a locação híbrida. Ele tende a funcionar melhor em sistemas que já possuem componentes voltados para o usuário claramente distintos.

Acesso do locatário

Seu serviço provavelmente precisará armazenar alguns dados globais que não pertencem a nenhum locatário específico. A lista de inquilinos registrados é um exemplo.

Em um sistema de locatário único, você pode ter um “ superusuário ” dedicado; instalação do seu serviço. Com uma abordagem multilocatário, você pode simplesmente ter uma tabela de inquilinos em seu banco de dados.

Quando um usuário acessa seu serviço, você precisa saber a qual locatário ele pertence. Uma maneira comum de identificar inquilinos é por detecção de subdomínio:

 inquilino1. example. com inquilino2. example. com 

Alguns sites usam caminhos de URL (example. com/tenant1) ou podem permitir que os locatários tragam seus próprios nomes de domínio. Outros exporão um único ponto de entrada (example. com), mas definirão cookies de identificação de locatário ou cabeçalhos HTTP após o login do usuário.

Você também precisa lidar com usuários que pertencem a vários inquilinos. Muitos serviços agora permitem que você faça login com credenciais compartilhadas. Os registros do usuário são armazenados globalmente – fora do sistema de locação – e se conectar a locatários por meio de relações de banco de dados. Isso nem sempre será apropriado para o seu sistema: se você fornecer subdomínios dedicados ou oferecer suporte a domínios fornecidos por locatários, pode ser indesejável permitir que o usuário “ mude de organização. ”

Resumo

“ Locação ” refere-se a como um aplicativo lida com dados de várias bases de usuários distintas. Cada locatário obtém seu próprio ambiente operacional; como isso é provisionado depende do modelo de locação.

Os serviços de locatário único são simples, mas ineficientes. Os serviços multilocatários minimizam os requisitos de manutenção, mas exigem mais reflexão para o design. A locação híbrida é um padrão emergente que usa microsserviços para combinar as duas abordagens.

Não há regra para ajudá-lo a determinar a abordagem a ser usada. Avalie o desempenho de cada modelo nos atributos que mais importam para você. Se você está procurando um isolamento forte e vai personalizar significativamente seu serviço por locatário, a locação única pode ser a melhor. Por outro lado, se você sabe que terá um grande número de inquilinos, considere a multilocação, mas mantenha a segurança em primeiro plano.

Nenhum comentário