Multitenancy é uma arquitetura de design de software em que uma única instância de um aplicativo atende vários locatários ou clientes. Esta abordagem permite a utilização eficiente de recursos, escalabilidadee economia de custos, tornando-o popular em cloud computação e Software como Serviço (SaaS) ambientes.
O que é multilocação?
Multitenancy é uma abordagem arquitetônica no design de software em que uma única instância de um aplicativo é utilizada para atender vários locatários ou clientes. Cada locatário, que pode ser um usuário individual, uma empresa ou uma organização, compartilha o mesmo software Formulário on line e banco de dados mas permanece isolado e invisível para os outros. Esse isolamento garante privacidade e segurança aos dados de cada locatário, ao mesmo tempo que permite que o aplicativo use os recursos computacionais de maneira eficiente.
A multilocação é particularmente vantajosa em cloud computação e ambientes de software como serviço (SaaS), pois permite a entrega de serviços escaláveis e econômicas. A infraestrutura compartilhada reduz a necessidade de recursos redundantes, diminuindo custos e simplificando a manutenção. Além disso, permite que os desenvolvedores implementem atualizações e novos recursos de forma centralizada, garantindo que todos os locatários se beneficiem de melhorias sem a necessidade de instalações individuais. Esta arquitetura também suporta a personalização da experiência de software para cada inquilino, permitindo-lhes configurar a sua interface e configurações de acordo com as suas necessidades específicas, ao mesmo tempo que aproveita uma aplicação partilhada e gerida centralmente.
Como funciona a multilocação?
A multilocação funciona permitindo que vários locatários compartilhem uma única instância de um aplicativo, mantendo seus dados e configurações separados e seguros. Veja como funciona em detalhes:
- Instância de aplicativo compartilhada. Em uma arquitetura multitenant, uma única instância do software é executada em um server ou um aglomerado de servers. Esta instância foi projetada para lidar com vários clientes simultaneamente, com cada cliente sendo chamado de locatário.
- Isolamento do inquilino. Os dados de cada locatário são isolados dos demais. Este isolamento é conseguido através de vários meios, por exemplo, tendo bases de dados separadas para cada inquilino, utilizando uma base de dados partilhada com tabelas específicas do inquilino, ou empregando uma combinação de ambos. O isolamento garante que os locatários não possam acessar os dados uns dos outros, proporcionando privacidade e segurança.
- Compartilhamento de recursos. Os recursos subjacentes, como CPU, memória e armazenamento são compartilhados entre todos os locatários. O aplicativo gerencia esses recursos com eficiência para garantir desempenho e escalabilidade ideais. O compartilhamento de recursos reduz o custo geral, pois vários locatários utilizam a mesma infraestrutura.
- Ambientes de locatário personalizáveis. Cada locatário pode ter um ambiente personalizado apesar de compartilhar a mesma instância do aplicativo. A personalização pode incluir configurações específicas, interfaces de usuário e controles de acesso. O aplicativo lida com essas personalizações enquanto mantém um sistema unificado codebase.
- Gestão centralizada. Os aplicativos multilocatários geralmente incluem ferramentas de gerenciamento centralizadas para administração, monitoramento e manutenção. A centralização simplifica a implantação de atualizações, patches e novos recursos, pois as alterações são aplicadas uma vez e propagadas para todos os locatários. Também permite um dimensionamento eficiente, uma vez que novos inquilinos podem ser adicionados sem alterações significativas na infraestrutura.
- As medidas de segurança. Medidas de segurança robustas são implementadas para garantir que os dados dos inquilinos permaneçam confidenciais e seguros. Estas medidas incluem autenticação, autorização, criptografiae mecanismos de auditoria para proteger os dados e cumprir os requisitos regulamentares.
Tipos de arquitetura multilocatário
A arquitetura multilocatário foi projetada para atender vários locatários usando uma infraestrutura compartilhada, garantindo ao mesmo tempo o isolamento e a segurança dos dados. Existem vários tipos de arquiteturas multilocatários, cada uma com sua própria abordagem para gerenciar dados e recursos. Aqui estão os principais tipos:
- Banco de dados compartilhado, esquema compartilhado. Nesta arquitetura, todos os locatários compartilham o mesmo banco de dados e o mesmo conjunto de tabelas. Cada linha nas tabelas é marcada com um identificador de locatário para distinguir quais dados pertencem a qual locatário. Esta abordagem é rentável e oferece alta eficiência na utilização de recursos, mas exige rigorosos segurança de banco de dados medidas para garantir o isolamento dos dados.
- Banco de dados compartilhado, esquema separado. Cada locatário tem seu próprio conjunto de tabelas no mesmo banco de dados, efetivamente usando um esquema. Esse tipo fornece um nível de isolamento de dados mais alto do que a abordagem de esquema compartilhado. Ele simplifica o gerenciamento e a personalização de dados para cada locatário, ao mesmo tempo em que se beneficia da infraestrutura compartilhada, embora possa ser mais complexo de manter.
- Banco de dados separado. Cada inquilino tem seu próprio banco de dados. Essa arquitetura oferece o mais alto nível de isolamento e segurança, facilitando o gerenciamento de personalizações específicas do locatário e a conformidade com os requisitos regulatórios. No entanto, pode consumir mais recursos e ser caro, pois não aproveita os recursos de banco de dados compartilhados de forma tão eficaz quanto os outros tipos.
- Abordagens híbridas. Algumas arquiteturas combinam elementos dos tipos acima para equilibrar eficiência e isolamento. Por exemplo, uma abordagem híbrida pode usar um banco de dados compartilhado com esquemas separados para locatários menores e bancos de dados separados para locatários maiores. Isso permite que o sistema seja dimensionado de forma eficiente, ao mesmo tempo que fornece flexbilidade em gestão de dados.
Exemplos de multilocação
Multitenancy é um padrão de arquitetura comum usado em vários aplicativos e plataformas de software, particularmente em cloud modelos de computação e software como serviço (SaaS). Aqui estão alguns exemplos de multilocação em ação, juntamente com explicações de como cada exemplo emprega essa arquitetura:
- Cloud plataformas de computação. Cloud provedores de serviços como Amazon Web Services (AWS), Microsoft Azure e Google Cloud A plataforma oferece ambientes multilocatários onde vários clientes (locatários) compartilham os mesmos recursos subjacentes de hardware e software. Os dados e aplicativos de cada locatário são isolados para garantir segurança e privacidade.
- Software como serviço (SaaS). Aplicativos SaaS como Salesforce, Microsoft Office 365 e Google Workspace operam em um modelo multilocatário. Várias organizações usam a mesma instância de aplicativo, mas seus dados e configurações são mantidos separados, permitindo a utilização eficiente de recursos e a manutenção simplificada.
- Serviços de hospedagem na web. Provedores de hospedagem na Web, como Bluehost e GoDaddy, oferecem soluções de hospedagem multilocatário onde vários sites compartilham o mesmo server recursos. Cada site é hospedado em um ambiente isolado, garantindo que os problemas de desempenho e segurança de um site não afetem outros.
- Sistemas de Gerenciamento de Banco de Dados. Bancos de dados multilocatários como Amazon RDS e Microsoft SQL Server permitir que vários bancos de dados residam em um único server instância. Os dados de cada locatário são isolados em seu próprio esquema de banco de dados, proporcionando uso eficiente de server recursos e gestão simplificada.
- Plataformas de virtualização. Hipervisores como VMware ESXi e Microsoft Hyper-V permitem multilocação, permitindo vários máquinas virtuais (VMs) para rodar em um único físico server. Cada VM opera como uma entidade independente, com seu próprio sistema operacional e aplicativos, enquanto compartilha os recursos de hardware subjacentes.
- Sistemas de gerenciamento de conteúdo (CMS). Plataformas CMS como WordPress Multisite e Drupal Multisite permitem que vários sites sejam gerenciados a partir de uma única instalação. Cada site tem seu próprio conteúdo e configuração exclusivos, mas compartilha a mesma base de código e infraestrutura.
- Plataformas de Internet das Coisas (IoT). Internet das coisas plataformas como IBM Watson IoT e AWS IoT suportam multilocação, permitindo que várias organizações se conectem e gerenciem seus dispositivos por meio de uma infraestrutura compartilhada. Os dispositivos e fluxos de dados de cada locatário são isolados com segurança, garantindo privacidade e segurança.
- Sistemas de planejamento de recursos empresariais (ERP). ERP sistemas como SAP S/4HANA e Oracle ERP Cloud use multitenancy para atender diversas organizações com uma única instância de software. Os dados e processos de cada organização são isolados dentro do sistema, permitindo configurações customizadas e operações seguras.
Vantagens e desvantagens da multilocação
A multilocação oferece diversas vantagens e desvantagens que afetam sua adequação para diversas aplicações. Compreendê-los pode ajudar as organizações a decidir se uma arquitetura multilocatária está alinhada com suas necessidades e objetivos de negócios.
Diferenciais
Aqui estão algumas vantagens principais da multilocação, cada uma explicada em detalhes:
- Poupança de custos. A multilocação reduz os custos gerais de infraestrutura ao compartilhar recursos como servers, armazenamento e equipamentos de rede entre vários inquilinos. Esse ambiente compartilhado permite que os provedores ofereçam serviços a um custo menor em comparação com configurações dedicadas de inquilino único.
- Utilização eficiente de recursos. As arquiteturas multilocatários maximizam o uso de recursos computacionais. Como vários locatários usam a mesma infraestrutura, recursos como CPU, memória e armazenamento podem ser alocados dinamicamente com base na demanda, garantindo uma utilização eficiente e minimizando o desperdício.
- Escalabilidade A multilocação permite fácil escalabilidade. Os provedores podem adicionar novos locatários sem alterações significativas na infraestrutura subjacente. Essa escalabilidade garante que o aplicativo possa lidar perfeitamente com números crescentes de usuários e cargas de trabalho maiores.
- Manutenção e atualizações simplificadas. Com uma única instância do aplicativo atendendo a vários locatários, atualizações, patches e tarefas de manutenção podem ser executadas centralmente. Isso reduz o tempo e o esforço necessários para gerenciar instâncias individuais de cada locatário, garantindo que todos os usuários se beneficiem dos recursos e aprimoramentos de segurança mais recentes simultaneamente.
- Desempenho consistente. Ambientes multilocatários geralmente incluem mecanismos para equilibrar cargas e alocar recursos de forma eficaz, garantindo um desempenho consistente para todos os locatários. Isto significa que nenhum inquilino monopoliza recursos em detrimento de outros.
- personalização e flexhabilidade. Apesar de compartilharem o mesmo aplicativo, os locatários podem personalizar seus ambientes para atender às suas necessidades específicas. Esse flexA flexibilidade permite que cada locatário defina configurações, interfaces de usuário e fluxos de trabalho de acordo com suas preferências.
- Gestão centralizada. Os provedores podem gerenciar centralmente todos os locatários a partir de uma única interface administrativa, simplificando tarefas como monitoramento, gerenciamento de segurança e conformidade.
- Desenvolvimento rápido. A multilocação facilita o provisionamento rápido de novos inquilinos. Como a infraestrutura e o aplicativo já estão implementados, novos locatários são integrados rapidamente, sem a necessidade de instalações ou configurações extensas, acelerando o tempo de lançamento no mercado para novos usuários.
Desvantagens
Aqui estão algumas desvantagens principais da multilocação, juntamente com explicações de cada uma:
- Riscos de segurança. Embora a multilocação inclua medidas para isolar dados entre locatários, a infraestrutura compartilhada significa que vulnerabilidades de aplicativos ou plataformas podem expor os dados de um locatário a outro. Garantir protocolos de segurança robustos e auditorias regulares é essencial para mitigar estes riscos.
- Complexidade no isolamento de dados. Manter um isolamento rigoroso de dados para vários locatários pode ser complexo. Os desenvolvedores devem implementar e gerenciar mecanismos de isolamento cuidadosamente para evitar Vazamento de informações e garantir que os dados de cada inquilino permaneçam seguros e privados.
- Variabilidade de desempenho. Como os recursos são partilhados entre vários inquilinos, o desempenho da aplicação pode variar. O alto uso de recursos por um locatário pode impactar o desempenho experimentado por outros, exigindo gerenciamento e monitoramento sofisticados de recursos para manter níveis de desempenho consistentes.
- Limitações de personalização. Embora as arquiteturas multilocatários permitam algum nível de personalização para cada locatário, existem limitações. A necessidade de manter uma única base de código restringe até que ponto os locatários individuais podem modificar ou personalizar o aplicativo para atender às suas necessidades específicas.
- Desafios de conformidade. Atender aos requisitos regulatórios e de conformidade pode ser mais desafiador em um ambiente multilocatário. Diferentes locatários podem ter necessidades de conformidade variadas e garantir que a infraestrutura compartilhada atenda a todos esses requisitos pode ser complexo e consumir muitos recursos.
- Problemas de escalabilidade. À medida que o número de inquilinos cresce, a arquitetura deve ser dimensionada de acordo. Isso introduz desafios no gerenciamento e manutenção do desempenho, segurança e isolamento. Garantir que o sistema possa lidar com o aumento da carga e da complexidade sem degradar o desempenho ou a segurança exige planejamento e gerenciamento cuidadosos.
- Sobrecarga de suporte e manutenção. Fornecer suporte e manutenção para um sistema multilocatário pode ser mais exigente. Os problemas que afetam a infraestrutura compartilhada podem afetar vários locatários simultaneamente, exigindo respostas rápidas e eficazes para minimizar tempo de inatividade e interrupções.
Multilocação vs. Locação única
Em uma arquitetura multilocatário, uma única instância de um aplicativo atende a vários locatários, cada um com dados e configurações isolados, o que permite utilização eficiente de recursos, economia de custos e manutenção simplificada. No entanto, também introduz complexidades na garantia do isolamento dos dados, da segurança e do desempenho consistente entre os inquilinos.
Por outro lado, a locação única envolve uma instância dedicada de um aplicativo para cada locatário, oferecendo maior segurança, desempenho e personalização ao custo de maior uso de recursos e maior sobrecarga operacional.
A locação única costuma ser preferida quando requisitos rigorosos de segurança, conformidade e desempenho são fundamentais, enquanto a locação múltipla é ideal para a prestação de serviços escalonáveis e econômicos.