Modelos de locação para uma aplicação multi-inquilino
Aprofundar-se na noção de "multi-locação" e partilhar as nossas percepções sobre como a percebemos.
Aprofundar-se na noção de "multi-locação" e partilhar as nossas percepções sobre como a percebemos.
Frequentemente ouvimos falar sobre a importância de criar uma aplicação multi-inquilino, especialmente no contexto do desenvolvimento de uma aplicação Software as a Service (SaaS).
Há alguma confusão sobre o conceito de uma "aplicação multi-inquilino" e os vários modelos usados para desenvolver uma. Neste artigo, analisámos mais de perto esses termos de uma forma mais prática.
Arquitetura de inquilino único é um modelo de software ou computação em nuvem onde cada cliente ou inquilino tem uma instância dedicada de uma aplicação ou serviço. Se olharmos para a origem do modelo de negócios B2B, começa com cada instância do software servindo apenas um cliente ou organização.

Arquitetura de inquilino único é comumente usada em cenários onde a conformidade é primordial ou há necessidade de requisitos de segurança personalizados. Por exemplo, indústrias como finanças, saúde e governo, que possuem requisitos regulatórios estritos, frequentemente preferem soluções de inquilino único para garantir a conformidade.
No entanto, é importante notar que arquiteturas de inquilino único podem ser mais intensivas em recursos e complexas de gerenciar em comparação com arquiteturas multi-inquilino, já que cada instância de cliente requer sua própria infraestrutura e manutenção. Como resultado, elas podem ser mais adequadas para aplicações com menos, mas maiores clientes ou onde personalização e isolamento são críticos.
Multi-locação de software é uma arquitetura de software na qual uma única instância de software é executada em um servidor e serve múltiplos inquilinos. Sistemas projetados de tal forma são "compartilhados" (em vez de "dedicados" ou "isolados"). Um inquilino é um grupo de usuários que compartilham o acesso comum com privilégios específicos à instância de software. Com uma arquitetura multi-inquilino, uma aplicação de software é projetada para fornecer a cada inquilino uma parte dedicada da instância - incluindo seus dados, configuração, gestão de usuários, funcionalidade individual dos inquilinos e propriedades não funcionais. -- Wikipedia

Fornecemos definições de uma perspectiva arquitetônica, tornando simples distinguir entre designs multi-inquilino e de inquilino único. No entanto, isso pende mais para a definição técnica. Se usarmos essas definições em nosso ambiente de desenvolvimento do mundo real ao projetar modelos de locação, esse modo de pensar pressupõe que uma aplicação multi-inquilino deve ter uma infraestrutura puramente compartilhada, de múltiplos inquilinos.
No entanto, negócios e produtos variam muito e têm muitos requisitos caso a caso, então não há uma solução única.
Imagine um cenário em que um inquilino está usando recursos de uma infraestrutura compartilhada, mas devido a necessidades específicas de negócios, eles requerem que uma ou duas partes do sistema sejam exclusivamente dedicadas a eles. Essas partes dedicadas poderiam ser a base de dados, instâncias ou uma combinação de outros componentes, tudo enquanto compartilham a infraestrutura global. É aqui que a arquitetura de inquilino misto entra em jogo.
No desenvolvimento prático de produtos SaaS, é comum encontrar um cenário onde um produto é projetado principalmente com um modelo genérico de múltiplos inquilinos. No entanto, certos aspectos da arquitetura ou recursos podem estar voltados para uma abordagem de "locação única".
A AWS usou o seguinte caso como exemplo para comunicar este conceito: multi-locação é um conceito amplo, e é caso a caso combinar e escolher a estratégia certa para definir o que você deseja alcançar com os recursos compartilhados e isolamento de dados.

Em outras palavras, às vezes as pessoas ainda chamam esse modelo de "Multi-locação", então na definição mais ampla de multi-locação, não implica que cada componente em uma solução é compartilhado. Em vez disso, implica que pelo menos alguns componentes de uma solução são reutilizados por múltiplos inquilinos.
Compreender esse termo de forma ampla pode ajudar melhor a empatizar com as necessidades do seu cliente e de onde eles vêm.
Em vez de se fixar em um único modelo arquitetônico, a multi-locação reflete a praticidade da arquitetura de um produto SaaS no mundo real. Quando nos referimos a uma aplicação multi-inquilino, não significa necessariamente que a aplicação adere a um único modelo arquitetônico; ela pode utilizar várias estratégias de locação, indicando que pelo menos alguns de seus componentes são compartilhados.
Aqui vem a questão, como proponho a estratégia de locação para o meu produto? Aqui estão algumas perguntas importantes a serem feitas:
Lembre-se de que não existe uma divisão rígida em seu produto onde você deve optar por um modelo puramente multi-inquilino ou exclusivamente de inquilino único. Sua decisão deve ser baseada em como você divide os componentes arquitetônicos do seu produto e nos níveis específicos de isolamento necessários para seus clientes ou negócios. Você pode então aplicar diferentes abordagens conforme necessário.
Falamos sobre a "nova" definição de uma aplicação multi-inquilino, no entanto, e quanto ao isolamento de inquilinos, identidades e como determinar se suas identidades devem ser isoladas ou não? O que significa para identidades serem "isoladas"?
A confusão muitas vezes surge ao lidar com situações em que um usuário do mundo real tem duas identidades diferentes. É apropriado rotular essa situação como - "identidades isoladas"?
Abordaremos essas questões em nossa próxima série de artigos. Fique atento!