Português (Portugal)
  • multi-inquilino
  • saas
  • software
  • desenvolvimento
  • arquitetura

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.

Guamian
Guamian
Product & Design

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.

Compreender diferentes modelos de locação de um ponto de vista técnico

Arquitetura de inquilino único

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.

single-tenant

Características

  • Isolamento: Cada cliente ou inquilino opera em um ambiente isolado com recursos, bases de dados e configurações dedicados.
  • Personalização: Arquiteturas de inquilino único frequentemente permitem maior personalização e flexibilidade para atender às necessidades específicas do cliente.
  • Segurança: Segurança e privacidade de dados aprimoradas, pois os dados do cliente não são misturados com os de outros inquilinos.
  • Escalabilidade: Escalar recursos e capacidade pode ser mais direto, já que a instância de cada inquilino pode ser ajustada de forma independente.
  • Manutenção: Manutenção e atualizações independentes, já que mudanças feitas no ambiente de um inquilino não afetam outros.
  • Custo: Tipicamente custos de infraestrutura e operação mais altos devido à necessidade de manter instâncias separadas para cada inquilino.

Exemplos

  • Hospedagem dedicada: Provedores tradicionais de hospedagem na web oferecem arquiteturas de inquilino único, onde cada cliente obtém seus próprios recursos, bases de dados ou configurações.
  • Software no local: Algumas aplicações de software em nível empresarial, como gestão de relacionamento com clientes (CRM) ou sistemas de gestão de recursos humanos (HRMS), oferecem opções de implantação de inquilino único para organizações com requisitos estritos de segurança de dados e personalização.
  • SaaS com níveis premium: Em algumas ofertas de Software as a Service (SaaS), níveis premium ou empresariais fornecem opções de inquilino único para clientes que exigem maior segurança, conformidade ou personalizaçã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.

Arquitetura multi-inquilino

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

multi-tenant

Características

  • Recursos compartilhados: Múltiplos inquilinos compartilham a mesma infraestrutura, incluindo servidores, bases de dados e recursos de rede, para otimizar a utilização de recursos.
  • Isolamento: Os dados e configurações dos inquilinos são logicamente segregados, garantindo a privacidade e segurança dos dados.
  • Economias de escala: Multi-locação pode ser rentável, já que a sobrecarga é distribuída entre múltiplos usuários, reduzindo custos operacionais e de infraestrutura.
  • Escalabilidade: A arquitetura pode escalar horizontal ou verticalmente para acomodar um número crescente de inquilinos e usuários.
  • Manutenção: Atualizações e manutenção são simplificadas, já que as mudanças se aplicam uniformemente a todos os inquilinos, simplificando o gerenciamento.
  • Personalização: Embora alguma personalização seja possível, é tipicamente mais limitada em comparação com arquiteturas de inquilino único para manter a consistência sistêmica.

Exemplos

  • SaaS baseado em nuvem: A maioria das aplicações Software as a Service (SaaS), como Google Workspace e Salesforce, empregam multi-locação para servir múltiplas organizações ou usuários em uma plataforma compartilhada.
  • Hospedagem compartilhada: Em hospedagem na web, serviços de hospedagem compartilhada hospedam múltiplos websites no mesmo servidor, cada um pertencente a um cliente ou organização diferente.
  • Serviços de nuvem pública: Provedores de nuvem pública, como AWS e Azure, usam multi-locação para atender diversos clientes com recursos virtualizados isolados dentro de data centers compartilhados.
  • Soluções de infraestrutura em nível empresarial: Como um cluster Kubernetes compartilhado usado por múltiplas unidades de negócios dentro de uma organização.

Redefinindo aplicações multi-inquilino no mundo real

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.

mixed-tenant

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.

Considerações chave para determinar sua estratégia de modelo de locação

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:

  • Quais são seus objetivos de negócios?
  • Uma solução de inquilino único pode suportar seus planos de crescimento futuro?
  • Quão grande é sua equipe de operações e quanto da sua gestão de infraestrutura pode ser automatizada? Você se preocupa com agilidade e eficiência de custos?
  • Seus clientes estão confortáveis com várias opções de multi-locação?
  • Como cada opção impacta a conformidade, tanto a sua quanto a de seus clientes?
  • Você está destinado a atender acordos de nível de serviço (SLAs) ou almejar objetivos de nível de serviço (SLOs) específicos?
  • Você considerou segurança, custo, desempenho, confiabilidade e capacidade de resposta às necessidades individuais dos inquilinos como um todo?

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.

Próximos Passos

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!