Editar

Share via


SaaS multi-inquilino no Azure

Microsoft Entra ID
Azure App Service
Azure DNS
Azure Front Door
Azure Kubernetes Service (AKS)

Quando você identifica uma parte da solução de software da sua empresa que você pode desmarcar e comercializar para outras empresas, isso adiciona um novo fluxo de receita para uma empresa. No entanto, configurar a solução para dar conta da carga que uma série de inquilinos traz é muitas vezes um obstáculo desafiador a ser enfrentado. Esta solução percorre um conjunto de tecnologias do Azure que protegem e equilibram o tráfego.

Arquitetura

Diagrama mostrando uma arquitetura SaaS multilocatária configurada no Azure em duas regiões diferentes.

Transfira um ficheiro do Visio desta arquitetura.

Fluxo de Trabalho

Um conjunto de tecnologias do Azure protege e equilibra a carga do tráfego.

  1. O Microsoft Azure Front Door lida com algumas tarefas iniciais:

    • Processamento do pedido inicial

    • Balanceamento de carga entre as regiões

    • Terminação e descarregamento de SSL (HTTPS)

    • Falha se houver uma interrupção regional

  2. O DNS do Azure gerencia registros DNS e garante o roteamento para o ponto de extremidade correto da Porta da Frente do Azure.

  3. A arquitetura usa o Microsoft Entra ID como o provedor de identidade para autenticação.

  4. Depois de roteado para a região apropriada, o Gateway de Aplicativo roteia e equilibra a carga, direcionando as solicitações para o Serviço de Aplicativo do Azure apropriado.

  5. Para essa arquitetura, o uso do Serviço de Aplicativo é o serviço preferencial para:

    • Qualquer aplicação baseada em HTTP.

    • Veiculação de conteúdo da web.

    • Expondo APIs RESTful.

    • Implementação da lógica de negócios por trás do aplicativo front-end.

    Você pode configurar o Serviço de Aplicativo para aumentar e diminuir a escala automaticamente. Ele torna o Serviço de Aplicativo uma boa opção para dimensionar uma série de solicitações orientadas por HTTP de locatário sob demanda.

  6. Os serviços de camada de acesso a dados também são dimensionados de forma independente com base na carga. Os serviços de dados gerenciam modelos de dados, clientes de conexão e drivers. Os serviços também fornecem uma interface de dados consistente para todos os serviços de nível superior que desejam consumir dados no aplicativo. Você pode implantar e dimensionar esses serviços de dados usando o Serviço Kubernetes do Azure (AKS). Cada cluster AKS é responsável por um conjunto de recursos relacionados na camada. O AKS pode implementar uma arquitetura de microsserviços, que apresenta uma série de contêineres que encapsulam funcionalidades específicas dentro do cluster. Isso permite um alto grau de abstração e dissociação dentro do código. Ele também permite que os clusters sejam dimensionados individualmente para levar em conta o aumento da carga de vários locatários. Cada cluster pode aumentar seus recursos se a carga aumentar no cluster. O aumento de escala não afeta os outros clusters no grupo de recursos, desde que eles não estejam experimentando o mesmo aumento.

  7. Armazene e gerencie dados relacionais fora da estrutura do aplicativo. Isso fornece um único ponto de entrada de dados para cada região. Você pode obter replicação, disponibilidade, escalabilidade e segurança aproveitando a força dos SQL Elastic Pools do Azure. Provisione um banco de dados para cada locatário em um pool. Aloque os recursos disponíveis no pool para bancos de dados sob demanda à medida que a carga e as solicitações chegam. Isso otimiza os recursos de banco de dados disponíveis para locatários em relação ao seu orçamento.

Componentes

Os componentes principais são os componentes sugeridos para a arquitetura nesta solução. Se algum dos componentes principais não se adequar à sua arquitetura, consulte a lista de componentes alternativos.

Componentes primários

  • Azure Front Door: um balanceador de carga regional que roteia o tráfego do cliente para a região correta. Ele pode fazer failover para a segunda região se ocorrer uma falha regional e pode proteger o ponto de entrada voltado para a Internet por meio do Firewall de Aplicativo Web do Azure.

  • Microsoft Entra ID: Atua como o provedor de identidade para todo o aplicativo, impondo autenticação e autorização de ponta a ponta da solicitação no aplicativo.

  • DNS do Azure: um serviço de hospedagem no Azure para resolução de nomes de domínio. Em uma solução multilocatário, vários clientes acessam a solução por meio de seus próprios domínios individuais. Use o DNS do Azure para configurar e resolver solicitações de cliente para sua pilha de aplicativos correta.

  • Application Gateway: roteia e equilibra a carga do tráfego internamente no aplicativo para os vários serviços que satisfazem as necessidades de negócios do cliente. Embora o Azure Front Door equilibre a carga em regiões de alto nível, é o Application Gateway que tem conhecimento da carga em serviços individuais dentro de um grupo. O Azure Front Door e o Application Gateway combinam-se para fornecer balanceamento de carga complexo em todos os níveis em uma solução multilocatário. Para obter mais informações sobre opções de balanceamento de carga no Azure, visite esta visão geral sobre o balanceamento de carga do Azure.

  • Serviço de Aplicativo: o principal serviço do Azure para aplicativos Web e APIs baseadas na Web. A segurança integra-se com serviços como o Microsoft Entra ID e o Azure Key Vault. Você pode configurar o dimensionamento automático. Além disso, a quantidade de recursos disponíveis para dimensionar é flexível entre os vários planos do Serviço de Aplicativo nos quais o aplicativo pode ser executado. O Serviço de Aplicativo também pode aproveitar os recursos integrados de DevOps para integração e implantação contínuas em vários ambientes. Esses e outros recursos de suporte da plataforma Azure permitem que os desenvolvedores se concentrem no desenvolvimento de seus aplicativos.

  • Serviço Kubernetes do Azure (AKS): orquestra instâncias de imagens de contêiner implantadas em um cluster. O gerenciamento de dados de vários clientes geralmente envolve a implementação de um conjunto de componentes para gerenciar:

    • Modelação de dados

    • Conectividade da origem de dados

    • Extrair, transformar, carregar (ETL)

    • Atividades de importação/exportação

    O desenvolvimento desses muitos componentes menores como microsserviços baseados em contêiner cria um cenário ideal para a implantação em um cluster AKS. Ferramentas para dimensionamento automático, balanceamento de carga e capacidade de atualização são incorporadas à estrutura. O AKS integra-se bem com uma estratégia de integração contínua/entrega contínua (CI/CD) usando os recursos de DevOps disponíveis e o Azure Container Registry.

  • Azure SQL Elastic Pools: fornece uma solução para gerenciar um conjunto de bancos de dados de forma flexível com um pool de recursos. O serviço aloca recursos sob demanda para os bancos de dados. Ele dá ao desenvolvedor de uma arquitetura SaaS multilocatária o poder de fornecer recursos de banco de dados aos clientes conforme eles precisam. O serviço também reduz o orçamento e a sobrecarga de manutenção de vários SQL Servers com grandes blocos de recursos de computação não utilizados.

  • Azure Cognitive Search (anteriormente conhecido como Azure Search): um serviço que adiciona um poderoso mecanismo de indexação e consulta ao seu aplicativo. Ele dá aos clientes acesso a uma forte funcionalidade de consulta. Eles também podem usar os recursos de IA do Azure para enriquecer e aprimorar a funcionalidade de consulta. A Pesquisa Cognitiva do Azure pode contabilizar a multilocação usando uma estratégia de índice por locatário ou serviço por locatário.

  • Cache do Azure para Redis: aplica uma camada de cache como um serviço à solução, fornecendo um cache gerenciado na memória para reduzir a latência e aumentar o desempenho para os clientes. Alta taxa de transferência permite um alto volume de solicitações para lidar com vários locatários que acessam o sistema. Você pode expandir o serviço de forma flexível à medida que as cargas de aplicativos aumentam. Ele também suporta criptografia em repouso para proteger e isolar dados de locatários armazenados em cache.

Componentes alternativos

  • Conjuntos de Dimensionamento de Máquina Virtual do Azure: Permite a implantação de serviços em um ambiente de máquina virtual (VM) que é dimensionado e cresce automaticamente conforme necessário. Os conjuntos de dimensionamento de máquina virtual integram-se bem com um balanceador de carga ou gateway de aplicativo para reequilibrar automaticamente a carga à medida que o conjunto de dimensionamento cresce. Os Conjuntos de Dimensionamento de Máquinas Virtuais fornecem a escalabilidade que esta solução exige. Em muitos casos, porém, é desnecessário gerenciar o ambiente de VM completo, e podemos adiar esse nível da pilha para o Serviço de Aplicativo ou AKS.

  • Banco de Dados SQL do Azure: implemente como instâncias dedicadas individuais como um substituto para Pools Elásticos. O uso do Banco de Dados SQL do Azure adiciona maior sobrecarga no gerenciamento direto da instância e incorre em mais custos para os recursos alocados. Dito isso, é uma alternativa aceitável quando o locatário requer um servidor dedicado. Em particular, o cliente pode exigir mais controle sobre a instância e recursos disponíveis dedicados. Os locatários que exigem um SQL Server dedicado podem existir lado a lado com os locatários em uma configuração do Elastic Pool. Você pode tornar uma camada de bancos de dados SQL uma das opções de preços disponíveis para locatários ao comprar licenças para o SaaS.

  • SQL Server em máquinas virtuais: outra opção para a implantação de bancos de dados SQL. O locatário pode ter uma infraestrutura de TI pré-existente e SQL Servers existentes no local. Nesse caso, o locatário pode querer usar suas licenças atuais, seja como uma migração completa ou em um cenário híbrido. A natureza dissociada do SaaS permite que a camada de dados do aplicativo direcione qualquer Banco de Dados SQL por meio da configuração.

Detalhes do cenário

Quando você identifica uma parte da solução de software da sua empresa que você pode desmarcar e comercializar para outras empresas, isso adiciona um novo fluxo de receita para uma empresa. No entanto, configurar a solução para dar conta da carga que uma série de inquilinos traz é muitas vezes um obstáculo desafiador a ser enfrentado.

O Azure oferece uma gama de serviços para gerir uma solução de software que:

  • Mantém de forma flexível bases de dados para todos os clientes.

  • Dimensiona a camada de negócios e lógica da solução para evitar gargalos na camada de computação.

  • Integra disponibilidade e failover regional.

  • Fornece segurança de ponta a ponta em todos os níveis da solução.

Potenciais casos de utilização

Esses casos de uso têm padrões de design que podem se beneficiar de uma solução SaaS multilocatária hospedada no Azure:

  • Desenvolver uma solução de gestão de relacionamento com o cliente (CRM) que os clientes possam comercializar e vender aos clientes.

  • Implemente um sistema de gerenciamento de conteúdo (CMS) e entregue-o a vários usuários usando essa arquitetura.

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.

Multilocação

Uma solução multilocatária é a principal consideração nesta solução. A solução lida com vários clientes simultaneamente. Ele também aloca recursos suficientes para processar todas as solicitações do cliente de forma eficaz. Ao processar solicitações, a solução protege o tráfego de endpoints globais e isola os dados do cliente para evitar violações e contaminação cruzada. Implante clientes em um par de grupos de recursos regionais com base em seu local principal. Isso otimiza a disponibilidade regional.

Você pode implantar muitos clientes em um único grupo de computação porque o sistema isola solicitações com base em autenticação e chaves de cliente, o que diferencia solicitações com base nesses identificadores exclusivos. O sistema pode criptografar todas as solicitações do cliente separadamente por suas chaves para que nenhum cliente possa descriptografar os dados de qualquer outro cliente. O gerenciamento de vários clientes em uma única pilha de computação oferece a capacidade de otimizar a alocação de recursos para fornecer aos clientes a capacidade de resposta de que precisam a custo.

Você gerencia bancos de dados cliente de maneira semelhante fora da pilha de computação, porque uma solicitação de cliente pode chegar de qualquer uma das pilhas regionais. Muitos bancos de dados cliente podem existir no mesmo Elastic Pool, isolados e protegidos por criptografia de dados transparente (TDE). Você pode configurar cada banco de dados para criptografar dados usando uma chave gerenciada pelo cliente e descriptografar os dados just in time (JIT). A descriptografia do JIT protege os dados do cliente do desenvolvedor e de outros clientes. O sistema aproveita o Elastic Pool para fornecer recursos sob demanda aos clientes atribuídos a ele, mantendo os custos baixos para você. Você pode atribuir políticas de replicação a cada Elastic Pool para fornecer backup e failover para dados do cliente. Coloque mais Elastic Pools online à medida que integra mais clientes no sistema.

Para obter mais informações sobre soluções multilocatário, consulte Arquiteto de soluções multilocatárias no Azure.

Fiabilidade

A confiabilidade garante que seu aplicativo possa atender aos compromissos que você assume com seus clientes. Para obter mais informações, consulte Visão geral do pilar de confiabilidade."

Escalabilidade e disponibilidade

Esta solução foi projetada para dar conta de um grande número de locatários que usam o SaaS. Ele aproveita o grande número de componentes e serviços escaláveis para crescer com base na carga. Essa arquitetura não foi projetada para soluções que atendem a alguns locatários ou a uma pequena carga de solicitações e dados. Ele pode enfatizar o orçamento de uma solução direcionada a um único cliente ou carga menor. Também é desnecessário ter a sobrecarga de várias regiões onde a alta disponibilidade global não é um requisito, porque adiciona complexidade e custo desnecessários.

Segurança

A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar de segurança.

O sistema aborda a segurança de ponta a ponta em cada nível do aplicativo:

  • O Azure Front Door fornece suporte HTTPS interno para seus domínios. Isso significa que o sistema pode criptografar todo o tráfego para o aplicativo SaaS. O Azure Front Door também implementa o Firewall de Aplicativo Web do Azure, protegendo a pilha de SaaS contra ataques na borda, antes que o sistema roteie solicitações para o aplicativo.

  • Cada pilha de aplicativos em cada região está dentro de uma Rede Virtual do Azure. O sistema restringe o tráfego na rede virtual aceitando solicitações da Porta da Frente do Azure, protegendo todos os serviços de aplicativos do tráfego externo. Uma vez dentro do firewall seguro, o Application Gateway pode encerrar o SSL e fornecer balanceamento de carga e roteamento de desempenho dentro do aplicativo.

  • Você pode gerenciar com segurança todas as credenciais, segredos e cadeias de conexão usando o Cofre da Chave do Azure. Ao gerenciar esses dados confidenciais como segredos, os desenvolvedores podem injetar credenciais no aplicativo no momento da implantação. Isso garante que o código não esteja poluído com informações confidenciais. O uso de segredos protege os dados do cliente, garantindo que uma violação no código ou um ataque man-in-the-middle não obtenham acesso aos bancos de dados do locatário.

  • Nesse cenário, os dados de vários locatários podem existir lado a lado no mesmo servidor de banco de dados, se não o mesmo banco de dados. Usando TDE e descriptografia JIT protege os dados no banco de dados. O sistema encripta todos os dados na base de dados em repouso e apenas os desencripta quando solicitado pelo inquilino. Os clientes podem fornecer suas próprias chaves e você pode armazenar todas as chaves de cliente no Cofre de Chaves do Azure para gerenciar a criptografia para vários locatários. Ele protege os dados do cliente de ponta a ponta, impede que o desenvolvedor tenha acesso aos dados do cliente, isola os dados entre locatários e ajuda a atender aos requisitos de conformidade para segurança e dados.

Otimização de custos

A otimização de custos consiste em procurar formas de reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custos.

O Serviço de Aplicativo do Azure fornece muitas camadas de preços com base nos recursos de computação esperados necessários. Para um SaaS multilocatário, a alta disponibilidade e os recursos de expansão são componentes fundamentais na escolha do plano de serviço. Se você espera hospedar muitos locatários, escolher uma camada premium ou isolada pode ser necessário para fornecer os recursos de computação necessários para levar em conta o alto tráfego. As camadas padrão, premium e isolada são todas instâncias de VM dedicadas. Você pode calcular o custo por unidade de tempo por quantas VMs dessa camada você especificou. Para obter mais informações, visite a visão geral dos planos de preços do Serviço de Aplicativo.

O Serviço Kubernetes do Azure fornece um serviço de contêiner econômico. As cobranças para nós AKS só ocorrem no uso, portanto, você só é cobrado por:

  • As VMs

  • Recursos de rede e armazenamento consumidos

  • Custo de dimensionamento diretamente relacionado ao uso

Usar o AKS como o serviço de camada de dados é ideal se você estiver procurando reduzir custos. Para obter uma estimativa sobre o preço de uma camada de instâncias AKS, visite a calculadora de serviço do Kubernetes.

Por design, a definição de preço do SQL Elastic Pool do Azure é altamente econômica em um cenário multilocatário. Os bancos de dados de locatários em um Pool Elástico compartilharão os recursos disponíveis. À medida que a demanda muda entre os inquilinos ao longo do tempo, os recursos também mudarão. O SQL Elastic Pool do Azure fornece o máximo de recursos disponíveis para bancos de dados demandados sem a necessidade de sobrecarga de recursos em todos os bancos de dados. O serviço mantém o custo baixo para o desenvolvedor do SaaS e os inquilinos. Use a calculadora de preços do Banco de Dados SQL do Azure para definir o preço e determinar a camada e a quantidade de recursos necessários para atender seus locatários e seus dados.

  • O uso de um modelo de preços de núcleo virtual (vCore) oferece maior flexibilidade no dimensionamento para atender aos recursos necessários. Além disso, você pode aproveitar o Benefício Híbrido do Azure. As licenças existentes do SQL Server fornecem um desconto para os recursos do vCore SQL na nuvem. Portanto, em uma instância em que os servidores locais já fazem parte da infraestrutura do desenvolvedor, você pode gerenciar o custo ainda mais usando esses descontos. Você pode estimar suas economias potenciais usando a calculadora de economia do Benefício Híbrido do Azure.

  • Você também pode economizar custos em recursos do SQL Server comprando a capacidade reservada do Banco de Dados SQL do Azure. A compra de capacidade reservada marca um compromisso de uso de longo prazo do Banco de dados SQL. O prazo é geralmente entre um a três anos. Em troca, você recebe descontos nos custos de cálculo dos recursos na reserva. Por exemplo, você pode reservar 32 vCores de uso geral por um ano, o que reduz o custo desses 32 vCores para esse ano. Ter vários locatários comprando licenças para um SaaS é um forte indicador de que fazer uso da capacidade reservada se encaixa na solução, e uma economia de custos ideal nessa carga de trabalho.

Você pode encontrar a estrutura de preços do Cache do Azure para Redis na página de preços do Cache do Azure para Redis. Ajuste a camada de cache a qualquer momento entre uma camada Basic, Standard e Premium com base na necessidade. Você verá preços mais altos nos limites de cache maiores e recursos adicionais, como replicação e recuperação de desastres. O Cache Redis do Azure também oferece preços de capacidade reservada para compromissos de uso de longo prazo.

O preço do Azure Front Door depende da quantidade de transferência de dados dentro e fora do serviço. Para dados de saída, o preço é diferente com base nas zonas. Diferentes regiões incorrerão em custos diferentes. Se você se deparar com um diferencial de preço, estime o custo separadamente. O preço inclui alguma capacidade de roteamento e domínio, mas o sistema incorre em custos além dos limites iniciais. O Firewall de Aplicativo Web do Azure incorre em uma pequena cobrança adicional por política ou regra aplicada. Você pode encontrar os detalhes de preços do Azure Front Door na página de preços do Azure Front Door.

O preço da Pesquisa Cognitiva do Azure é um sistema totalmente hierárquico. Um nível gratuito está disponível para desenvolvimento e testes. Depois disso, cada camada incorre em um custo por hora para cada instância de Pesquisa Cognitiva alocada. À medida que os níveis aumentam, o armazenamento total, o número de índices e os limites de expansão também aumentam. A Pesquisa Cognitiva do Azure fornece extração de imagens como um serviço à mesma taxa para todos os níveis pagos.

Próximos passos