Explicação sobre a arquitetura multitenancy
Multitenancy é uma arquitetura de software em que uma única instância do software opera em um ambiente compartilhado para atender a vários grupos diferentes de usuários, também chamados de tenants. As ofertas de Software como Serviço (SaaS) são um exemplo de arquitetura multitenant.
Na cloud computing, a arquitetura multitenancy também se refere à hospedagem compartilhada, em que os recursos do servidor são divididos por diferentes clientes.
Multitenancy é o oposto de single-tenancy: quando uma instância de software ou sistema de computador têm apenas um usuário final ou grupo de usuários.
Em geral, as aplicações multitenant permitem personalizar os tenants até certo grau. Por exemplo, personalizar a aparência da aplicação ou configurar o tenant para definir restrições e permissões específicas de controle de acesso para os usuários.
Do time-sharing ao SaaS
O conceito de multitenancy existe há muitos anos. Na década de 1960, universidades com mainframes avançados e caros desenvolveram o software de time-sharing para possibilitar que vários usuários acessassem o computador basicamente ao mesmo tempo.
Essa ideia nunca desapareceu, e hoje o conceito de multitenancy é o que faz a cloud computing ser possível. A nuvem pública divide por vários tenants um pool de recursos compartilhados, como capacidade de processamento e memória. As cargas de trabalho e os dados de cada tenant ficam isolados, mesmo quando executados na mesma máquina física ou grupo de máquinas.
Quando vamos um pouco além e aplicamos essa mesma ideia à arquitetura de software, chegamos ao conceito moderno de SaaS. O provedor de SaaS executa uma instância de uma aplicação e oferece acesso a clientes individuais. Os dados de cada usuário ficam isolados, mesmo que eles estejam acessando o mesmo software que outras pessoas.
No contexto das plataformas de orquestração de containers como o Kubernetes, o termo multitenancy costuma significar um cluster que atende a vários projetos. Esse cluster é configurado de modo que cada projeto tenha sua execução isolada dos outros.
Recursos da Red Hat
Diferença entre multitenancy e cloud computing
Como já mencionado antes, a multitenancy, como um conceito, é uma importante funcionalidade de cloud computing porque é uma instância única de aplicação de software oferecida a vários locatários. Nuvens são consideradas plataformas como serviço (PaaS), ao contrário da multilocação, comumente associada a aplicações SaaS.
A partir de um pool de recursos, os provedores de serviços de nuvem entregam aos usuários a plataforma e a infraestrutura de TI subjacente necessária para cloud computing. Esse recursos são, em seguida, alocados para vários usuários (ou locatários).
A arquitetura é como todos os componentes e recursos necessários no desenvolvimento de uma nuvem são conectados para construir uma plataforma online onde as aplicações serão executadas.
A arquitetura de uma plataforma de nuvem precisa de um grau maior de desenvolvimento para incorporar containerização, orquestração, interfaces de programação de aplicações (APIs), roteamento, segurança, gerenciamento e software de automação.
Arquitetura de nuvem pública: um ambiente de nuvem criado a partir de recursos sem um proprietário, como um usuário final, que pode ser redistribuído para outros locatários.
Arquitetura de nuvem privada: em termos gerais, definida como um ambiente de nuvem dedicado ao usuário final, normalmente protegido pelo firewall do usuário e às vezes localizado on-premise.
Benefícios da arquitetura multitenant
A multitenancy traz uma diversas de vantagens, o que é evidente pela popularidade da cloud computing.
A multilocação ajuda a economizar: os recursos computacionais são mais baratos em escala. Com a multilocação, é possível consolidá-los e alocá-los de maneira eficiente, reduzindo os custos operacionais. Para um usuário individual, pagar pelo acesso a um serviço em nuvem ou uma aplicação de SaaS geralmente representa um custo-benefício melhor do que usar um software e hardware que atendam a apenas um locatário.
A multilocação oferece flexibilidade: se você investir tudo em seu próprio hardware e software, chegará ao ponto em que ambos atingirão a capacidade máxima em momentos de grande demanda ou ficarão ociosos quando a demanda estiver muito baixa. Por outro lado, em uma nuvem com multilocação, é possível alocar um pool de recursos para os usuários que precisam deles, conforme essa necessidade aumenta ou diminui. Sendo cliente de um provedor de nuvem pública, você pode ter acesso a uma capacidade extra quando precisar e não pagar por ela quando não houver necessidade.
A multilocação pode aumentar a eficiência: com a abordagem de multilocação, há menos necessidade de que usuários individuais gerenciem a infraestrutura e façam atualizações e manutenções. Todos os locatários contam com um provedor de nuvem central, em vez de depender das próprias equipes para lidar com essas tarefas rotineiras.
Quando a abordagem de locatário único é mais adequada?
A arquitetura de multilocação oferece muitas vantagens, mas a adoção de sistemas de computador de locatário único é mais adequada para alguns casos de uso, como a nuvem privada ou seu próprio datacenter.
Isso se relaciona principalmente à segurança em aplicações que lidam com dados altamente confidenciais. As soluções de SaaS e os ambientes de nuvem pública são projetados para isolar cargas de trabalho e dados, e costumam funcionar conforme o previsto. No entanto, em testes controlados, os pesquisadores descobriram vulnerabilidades que teoricamente poderiam facilitar invasões entre locatários em ambientes de nuvem.
Na prática, esses riscos são relativamente pequenos. As vulnerabilidades da locação compartilhada são raras e exigem um alto nível de sofisticação dos ataques, de acordo com um relatório de 2020 sobre vulnerabilidades da nuvem publicado pela Agência de Segurança Nacional dos EUA (NSA). Segundo o relatório, não há registro de nenhuma invasão entre locatários nos principais provedores de nuvem pública. A NSA considera esses riscos menores do que aqueles resultantes do controle de acesso precário e das configurações inadequadas.
Ambientes de multilocação no Linux
Qualquer um que deseja configurar um ambiente de multilocação precisará escolher entre máquinas virtuais ou containers para isolar ambientes.
No caso das máquinas virtuais, um hipervisor inicia máquinas guest, cada uma com sistema operacional, aplicações e dependências próprias. O hipervisor também assegura o isolamento dos usuários.
Em comparação com as máquinas virtuais, os containers oferecem um modelo mais leve, flexível e fácil de escalar. Com os containers, as implantações de multilocação são mais simples porque é possível implantar várias aplicações em apenas um host, usando o kernel e o ambiente de execução para iniciar novos containers. Diferentemente das máquinas virtuais (cada uma tem o próprio kernel), as aplicações executadas em containers compartilham o mesmo kernel, mesmo quando usadas por vários locatários.
No Linux®, os namespaces possibilitam que vários containers usem um mesmo recurso simultaneamente, sem gerar nenhum conflito. Manter a segurança dos containers é um esforço semelhante ao empregado em qualquer outro processo em execução.
Quando o Kubernetes é utilizado na orquestração de containers, é possível configurar vários ambientes de multilocação usando apenas um cluster. Também é possível separar os locatários em seus próprios namespaces e criar políticas para impor o isolamento deles.
Blog da Red Hat
Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.