Redefinindo a multilocação - Fundamentos da arquitetura SaaS

Redefinindo a multilocação

Os termos multilocação e SaaS geralmente estão intimamente conectados. Em alguns casos, as organizações descrevem SaaS e multilocação como a mesma coisa. Embora isso possa parecer natural, equiparar SaaS e multilocação tende a levar as equipes a adotar uma visão puramente técnica do SaaS quando, na realidade, o SaaS é mais um modelo de negócios do que uma estratégia de arquitetura.

Para entender melhor esse conceito, vamos começar com a visão clássica da multilocação. Nessa visão puramente focada na infraestrutura, a multilocação é usada para descrever como os recursos são compartilhados pelos inquilinos para promover agilidade e eficiência de custos.

Suponha, por exemplo, que você tenha um microsserviço ou uma instância do Amazon Elastic Compute Cloud (Amazon EC2) que seja consumida por vários inquilinos do seu sistema SaaS. Esse serviço seria visto como executado em um modelo multi-inquilino, porque os inquilinos estão compartilhando o uso da infraestrutura que executa esse serviço.

O desafio dessa definição é que ela também vincula diretamente a noção técnica de multilocação ao SaaS. Ele presume que a característica definidora do SaaS é que ele deve ter uma infraestrutura compartilhada e multilocatária. Essa visão do SaaS começa a se desfazer à medida que observamos as várias maneiras pelas quais o SaaS é realizado em diferentes ambientes.

O diagrama a seguir fornece uma visão de um sistema SaaS que expõe alguns dos desafios que temos com a definição de multilocação.

Aqui você verá o modelo SaaS clássico descrito anteriormente, com uma série de serviços de aplicativos cercados por serviços compartilhados que permitem gerenciar e operar seus inquilinos coletivamente.

A novidade são os microsserviços que incluímos. O diagrama inclui três exemplos de microsserviços: produto, pedido e catálogo. Se você observar atentamente o modelo de locação de cada um desses serviços, notará que todos eles empregam padrões de locação ligeiramente diferentes.

Um diagrama que mostra SaaS e multilocação.

SaaS e multilocação

O serviço do produto compartilha todos os seus recursos (computação e armazenamento) com todos os inquilinos. Isso se alinha à definição clássica de multilocação. No entanto, se você observar o serviço de pedidos, verá que ele tem computação compartilhada, mas armazenamento separado para cada inquilino.

O serviço de catálogo adiciona outra variação em que a computação é separada para cada inquilino (uma implantação de microsserviço separada para cada inquilino), mas compartilha o armazenamento para todos os inquilinos.

Variações dessa natureza são comuns em ambientes SaaS. Vizinho barulhento, modelos hierárquicos, necessidades de isolamento — esses são alguns dos motivos pelos quais você pode compartilhar ou isolar seletivamente partes de sua solução SaaS.

Dadas essas variações — e muitas outras possibilidades — fica mais difícil descobrir como você deve usar o termo multi-inquilino para caracterizar esse ambiente. No geral, no que diz respeito ao cliente, esse é um ambiente multi-inquilino. No entanto, se usarmos a definição mais técnica, algumas partes desse ambiente são multilocatárias e outras não.

É por isso que se torna necessário deixar de usar o termo multi-inquilino para caracterizar ambientes SaaS. Em vez disso, podemos falar sobre como a multilocação é implementada em seu aplicativo, mas evite usá-la para caracterizar uma solução como SaaS. Se o termo multi-inquilino for usado, faz mais sentido usá-lo para descrever todo o ambiente SaaS como sendo multi-inquilino, sabendo que algumas partes da arquitetura podem ser compartilhadas e outras não. No geral, você ainda está operando e gerenciando esse ambiente em um modelo multi-inquilino.

O caso extremo

Para destacar melhor essa noção de locação, vamos dar uma olhada em um modelo SaaS que tem inquilinos que compartilham zero recursos. O diagrama a seguir fornece um exemplo de ambiente SaaS que é empregado por alguns provedores de SaaS.

Um diagrama que mostra a pilha por inquilino.

Pilha por inquilino

Neste diagrama, você verá que ainda temos nosso ambiente comum em torno desses inquilinos. No entanto, cada inquilino é implantado com uma coleção dedicada de recursos. Nada é compartilhado pelos inquilinos neste modelo.

Este exemplo desafia o que significa ser multi-inquilino. Esse é um ambiente multi-inquilino, mesmo que nenhum dos recursos seja compartilhado? Os inquilinos que consomem esse sistema têm as mesmas expectativas que você teria de um ambiente SaaS com recursos compartilhados. Na verdade, eles podem não ter consciência de como seus recursos são implantados sob o capô do ambiente SaaS.

Embora esses inquilinos estejam operando em uma infraestrutura isolada, eles ainda são gerenciados e operados coletivamente. Eles compartilham uma experiência unificada de integração, identidade, métricas, faturamento e operação. Além disso, quando uma nova versão é lançada, ela é implantada em todos os inquilinos. Para que isso funcione, você não pode permitir uma personalização única para inquilinos individuais.

Esse exemplo extremo fornece um bom modelo para testar a noção de SaaS multi-inquilino. Embora possa não obter todas as eficiências da infraestrutura compartilhada, é um ambiente SaaS multi-inquilino totalmente válido. Para alguns clientes, seu domínio pode determinar que alguns ou todos os clientes usem esse modelo. Isso não significa que eles não sejam SaaS. Se eles usam esses serviços compartilhados e todos os inquilinos executam a mesma versão, isso ainda está em conformidade com os princípios fundamentais do SaaS.

Dados esses parâmetros e essa definição mais ampla de SaaS, você pode ver a necessidade de evoluir o uso do termo multi-inquilino. Faz mais sentido se referir a qualquer sistema SaaS gerenciado e operado coletivamente como sendo multi-inquilino. Em seguida, você pode usar uma terminologia mais granular para descrever como os recursos são compartilhados ou dedicados na implementação de uma solução SaaS.