Partilhar via


Considerações para planos de controle multilocatário

Uma solução multilocatária tem vários planos, e cada plano tem suas próprias responsabilidades. O plano de dados permite que usuários e clientes interajam com um sistema. O plano de controle gerencia tarefas de nível superior, como controle de acesso, provisionamento e manutenção do sistema, em todos os locatários para dar suporte às tarefas dos administradores da plataforma.

Diagrama que mostra um design de sistema lógico. Um único plano de controle fornece gerenciamento em vários planos de dados específicos do locatário.

Este artigo fornece informações sobre as responsabilidades dos planos de controle e como projetar um plano de controle que atenda às suas necessidades.

Por exemplo, considere um sistema de contabilidade para gerenciar registros financeiros. Vários locatários armazenam seus registros financeiros no sistema. Quando os usuários acessam o sistema para visualizar e inserir seus registros financeiros, eles usam o plano de dados. O plano de dados é provavelmente o principal componente de aplicativo para sua solução. Os locatários normalmente o veem como a interface principal para usar o sistema conforme pretendido.

Em contraste, o plano de controle integra novos locatários, cria bancos de dados para cada locatário e executa outras operações de gerenciamento e manutenção. Sem um plano de controle, os administradores devem confiar em processos manuais. Em alguns casos, as tarefas do plano de dados e do plano de controle ficam entrelaçadas, o que complica demais as soluções.

Muitos sistemas complexos incluem um plano de controle. Por exemplo, o plano de controle do Azure, Azure Resource Manager, é um conjunto de APIs, ferramentas e componentes back-end que implantam e configuram recursos do Azure. E o plano de controlo do Kubernetes administra muitas tarefas, tais como a colocação de pods do Kubernetes em nós de trabalho. Quase todas as soluções de software como serviço (SaaS) têm um plano de controle para lidar com tarefas entre locatários.

Ao projetar soluções multilocatário, você precisa considerar planos de controle. As seções a seguir descrevem como definir o escopo e projetar um plano de controle.

Responsabilidades de um plano de controlo

Não há um modelo único para um plano de controle ou suas responsabilidades. Os requisitos e a arquitetura da sua solução ditam o que seu plano de controle precisa fazer e como ele funciona. Em algumas soluções multilocatário, o plano de controle tem uma ampla gama de responsabilidades e é um sistema complexo por si só. Em outras soluções multilocatário, o plano de controle tem apenas responsabilidades básicas.

Em geral, um plano de controlo pode ter muitas das seguintes responsabilidades principais:

  • Gestão de recursos: Ele provisiona e gerencia recursos do sistema que atendem à carga de trabalho, incluindo recursos específicos do locatário. O plano de controle pode invocar e orquestrar um pipeline de implantação ou executar operações de implantação diretamente.

  • Configuração de recursos: Ele reconfigura recursos compartilhados para reconhecer novos locatários. Por exemplo, o plano de controle pode configurar o roteamento de rede para garantir que o tráfego de entrada atinja os recursos do locatário correto ou talvez seja necessário dimensionar sua capacidade de recursos.

  • Configuração do locatário: Ele armazena e gerencia a configuração de cada locatário.

  • Gestão do ciclo de vida do inquilino: Ele lida com eventos do ciclo de vida do locatário, incluindo integração, realocação e desembarque de locatários.

  • Telemetria: Ele rastreia o uso de seus recursos por cada locatário e o desempenho do sistema.

  • Acompanhamento do consumo:Mede e agrega o consumo de recursos de cada inquilino. As métricas de consumo podem informar seus sistemas de faturamento ou dar suporte à governança de recursos.

Se você usar o modelo totalmente multilocatário e não implantar recursos específicos do locatário, um plano de controle básico poderá rastrear apenas locatários e seus metadados associados. Por exemplo, quando um novo locatário se inscreve no seu serviço, o plano de controle pode atualizar os registros apropriados em um banco de dados para que o restante do sistema possa atender às solicitações do novo locatário.

Por outro lado, se sua solução usa um modelo de implantação que requer infraestrutura específica do locatário, como o modelo automatizado de locatário único, seu plano de controle pode ter mais responsabilidades. Pode ser necessário implantar ou reconfigurar a infraestrutura do Azure quando você integrar um novo locatário. Nesse cenário, o plano de controle provavelmente interage com os planos de controle para outras ferramentas, como o Gerenciador de Recursos ou o plano de controle do Kubernetes.

Os planos de controlo avançados podem assumir mais responsabilidades:

  • Operações de manutenção automatizadas: Ele executa operações de manutenção comuns, incluindo a exclusão ou arquivamento de dados antigos, a criação e o gerenciamento de índices de banco de dados e a rotação de segredos e certificados criptográficos.

  • Colocação do inquilino: Ele aloca locatários a implantações ou carimbos existentes com base em critérios como metas de uso de carimbo, requisitos de locatário e estratégias de empacotamento de compartimentos.

  • Reequilíbrio de locatários: Ele reequilibra os locatários existentes entre os pontos de implantação à medida que o uso deles muda.

  • Acompanhamento da atividade do cliente: Ele se integra a soluções de gerenciamento de clientes externos, como o Dynamics 365, para rastrear a atividade do cliente.

Definir o âmbito de um plano de controlo

Considere cuidadosamente quanto esforço gastar na construção de um plano de controle para sua solução. Um plano de controle não fornece valor imediato ao cliente, o que pode dificultar a justificação do esforço de engenharia no projeto e construção de um plano de controle de alta qualidade. No entanto, à medida que seu sistema cresce e se expande, você precisa cada vez mais de gerenciamento e operações automatizados para acompanhar seu crescimento.

Em determinadas situações, você pode não precisar de um plano de controle total. Essa abordagem pode funcionar se o sistema tiver menos de 10 locatários. A sua equipa pode assumir as responsabilidades do plano de controle e usar operações e processos manuais para integrar e gerir clientes. No entanto, você ainda deve ter um processo e manter um local central para rastrear seus locatários e suas configurações.

Sugestão

Se você não criar um plano de controle total, ainda deverá aplicar uma abordagem sistemática aos seus procedimentos de gerenciamento:

  • Documente os seus processos minuciosamente.
  • Crie e reutilize scripts para suas operações de gerenciamento quando possível.

Se você precisar automatizar processos no futuro, sua documentação e scripts podem formar a base do seu plano de controle.

À medida que cresce para além de alguns inquilinos, pode beneficiar do acompanhamento de cada inquilino e da aplicação de monitorização em toda a sua frota de recursos e inquilinos. Você pode notar que sua equipe gasta uma quantidade crescente de tempo e esforço no gerenciamento de locatários. Ou você pode notar bugs ou problemas operacionais devido a inconsistências na forma como os membros da equipe executam tarefas de gerenciamento. Se essas situações ocorrerem, considere a construção de um plano de controle mais abrangente para assumir essas responsabilidades.

Observação

Se você fornece gerenciamento de locatário de autoatendimento, precisa de um avião de controle no início da viagem. Você pode optar por criar um plano de controle básico e automatizar apenas algumas das funcionalidades mais comumente usadas. Você pode adicionar progressivamente mais recursos ao longo do tempo.

Projetar um plano de controle

Depois de determinar os requisitos e o escopo do seu plano de controle, você precisa projetá-lo e arquitetá-lo. Um plano de controle é um componente importante e merece o mesmo nível de planejamento que qualquer outra parte da sua arquitetura.

Considerações

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

Um plano de controle funciona como seu próprio sistema, portanto, você deve considerar todos os cinco pilares do Well-Architected Framework ao projetar um. As seções a seguir destacam áreas específicas nas quais se deve focar.

Fiabilidade

A confiabilidade ajuda a garantir que seu aplicativo possa cumprir os compromissos que você assume com seus clientes. Para obter mais informações, consulte Lista de verificação de revisão de design para confiabilidade.

Os aviões de controle geralmente servem como componentes de missão crítica. Você deve planejar o nível apropriado de resiliência e confiabilidade que seu plano de controle precisa.

Considere o impacto de uma interrupção do plano de controlo. Em casos extremos, uma interrupção pode tornar toda a solução indisponível. Mesmo que o plano de controle não seja um único ponto de falha, uma interrupção pode causar os seguintes problemas:

  • Seu sistema não pode integrar novos locatários, o que pode afetar suas vendas e o crescimento do negócio.

  • Seu sistema não pode gerenciar locatários existentes, o que resulta em mais chamadas para sua equipe de suporte.

  • Não é possível medir o consumo dos inquilinos ou faturá-los pelo seu uso, o que resulta em perda de receita.

  • Não é possível desativar ou reconfigurar um locatário em resposta a um incidente de segurança.

  • A dívida de alimentos acumula-se, o que resulta em danos a longo prazo para o sistema. Por exemplo, se sua solução exigir limpeza noturna de dados antigos, seus discos poderão ficar cheios ou seu desempenho poderá se degradar.

Defina objetivos de nível de serviço para seu plano de controle, incluindo metas de disponibilidade, o RTO (Recovery Time Objetive, objetivo de tempo de recuperação) e o RPO (Recovery Point Objetive, objetivo de ponto de recuperação). Os objetivos que você define para seu plano de controle podem diferir dos objetivos que você oferece aos seus clientes.

Segurança

A segurança fornece garantias contra ataques deliberados e o uso indevido de seus valiosos dados e sistemas. Para obter mais informações, consulte Lista de verificação de revisão de design para segurança.

Os planos de controlo são frequentemente sistemas altamente privilegiados. Problemas de segurança dentro de um avião de controle podem ter consequências catastróficas. Dependendo de seu design e funcionalidade, um plano de controle pode ser vulnerável a muitos tipos diferentes de ataques, incluindo os seguintes tipos:

  • Acesso não autorizado a segredos: Um plano de controle pode ter acesso a chaves e segredos para todos os inquilinos. Um invasor que tenha acesso ao seu plano de controle pode obter acesso aos dados ou recursos de qualquer locatário.

  • Abuso dos recursos de implantação: Um plano de controle geralmente pode implantar novos recursos no Azure. Os atacantes podem explorar o seu plano de controlo para implantar os seus próprios recursos nas suas assinaturas e potencialmente incorrer em custos elevados.

  • Recusa de serviço: Se um invasor desativar com êxito seu plano de controle, danos imediatos e de longo prazo ao seu sistema e negócios podem ocorrer. Para conhecer as possíveis consequências do tempo de inatividade do plano de controle, consulte Confiabilidade.

Ao projetar e implementar um plano de controle, você deve seguir as práticas recomendadas de segurança e criar um modelo de ameaça abrangente. Este modelo deve identificar e mitigar potenciais ameaças e problemas de segurança na sua solução.

Excelência Operacional

A Excelência Operacional abrange os processos operacionais que implantam um aplicativo e o mantêm em execução na produção. Para obter mais informações, consulte Lista de verificação de revisão de design para excelência operacional.

Um plano de controle é um componente crítico, portanto, você deve considerar cuidadosamente como implantá-lo e operá-lo na produção.

Como outras partes da solução, você deve implantar instâncias que não sejam de produção do seu plano de controle para que possa testar completamente sua funcionalidade. Se seu plano de controle executar operações de implantação, considere como seus planos de controle de não produção interagem com seu ambiente do Azure e em qual assinatura do Azure implantar recursos que não sejam de produção. Planeje como limpar os recursos de teste rapidamente para que eles não acumulem cobranças acidentalmente.

Planeie também como controlar o acesso da sua equipa ao seu plano de controlo. Conceda apenas as permissões de que os membros da equipe precisam para desempenhar suas funções. Essa abordagem ajuda a evitar incidentes de segurança e a reduzir o efeito de erros acidentais de configuração.

Componentes

Não há um modelo único para construir um plano de controle. Os componentes que você projeta e constrói dependem de suas necessidades. A maioria dos planos de controle consiste em APIs e componentes de trabalho em segundo plano. Em algumas soluções, um plano de controle também inclui uma interface de usuário, que sua equipe ou até mesmo seus clientes podem usar.

Isolar seu plano de controle das cargas de trabalho do locatário

Você deve separar os recursos do seu plano de controlo dos recursos que servem aos planos de dados dos seus locatários. Por exemplo, use servidores de banco de dados separados, servidores de aplicativos e outros componentes. Mantenha os recursos do plano de controle em um grupo de recursos dedicado do Azure, separado dos recursos específicos do locatário.

O isolamento do plano de controle oferece as seguintes vantagens:

  • Você pode configurar o dimensionamento separadamente. Por exemplo, seu plano de controle pode ter requisitos de recursos consistentes e os recursos de seus locatários podem ser dimensionados de forma elástica dependendo de suas necessidades.

  • Uma separação clara cria uma antepara entre seus planos de controle e planos de dados, o que ajuda a evitar que problemas de vizinhos barulhentos se espalhem pela solução.

  • Os planos de controlo são normalmente sistemas altamente privilegiados que têm elevados níveis de acesso. O isolamento do plano de controle reduz a probabilidade de uma vulnerabilidade de segurança, permitindo que os invasores elevem suas permissões em todo o sistema.

  • Você pode implantar configurações de rede e firewall separadas. Planos de dados e planos de controle geralmente exigem diferentes tipos de acesso à rede.

Orquestre sequências de operações de longa duração

Os aviões de controle geralmente executam operações de longa duração que exigem coordenação entre vários sistemas. Essas operações também podem ter modos de falha complexos, portanto, você deve escolher tecnologias que ofereçam suporte a operações ou fluxos de trabalho de longa execução.

Por exemplo, quando você embarca um novo locatário, seu plano de controle pode executar as seguintes ações em sequência:

  1. Implante um novo banco de dados. Essa operação de implantação do Azure pode levar vários minutos para ser concluída.

  2. Atualize o catálogo de metadados do locatário. Essa ação pode envolver a execução de um comando em um banco de dados SQL do Azure.

  3. Envie um e-mail de boas-vindas ao novo inquilino. Esta ação invoca uma API que não seja da Microsoft para enviar o email.

  4. Atualize o seu sistema de faturação para se preparar para faturar o novo inquilino. Esta ação invoca uma API que não é da Microsoft que ocasionalmente falha.

  5. Atualize seu sistema de gerenciamento de relacionamento com o cliente (CRM) para rastrear o novo locatário. Esta ação invoca uma API que não seja da Microsoft.

Se alguma etapa da sequência falhar, considere como responder:

  • Tente novamente a operação com falha. Por exemplo, se o comando SQL do Azure na etapa 2 falhar com um erro transitório, você poderá tentar novamente.

  • Continue para a próxima etapa. Por exemplo, você pode decidir que pode permitir que a atualização do seu sistema de cobrança falhe porque sua equipe de vendas pode adicionar manualmente o cliente mais tarde.

  • Abandone o fluxo de trabalho e acione um processo de recuperação manual.

Considere também a experiência do usuário para cada cenário de falha.

Gerenciar componentes compartilhados

Um plano de controle precisa reconhecer todos os componentes que são compartilhados em vez de dedicados a locatários específicos. Alguns componentes podem ser compartilhados entre todos os locatários dentro de um carimbo. Outros componentes podem ser compartilhados entre todos os selos em uma região, ou até mesmo compartilhados globalmente em todas as regiões e selos. Quando você integra, reconfigura ou desliga um locatário, seu plano de controle precisa saber como lidar com esses componentes compartilhados.

Alguns componentes compartilhados exigem reconfiguração quando os locatários são adicionados ou removidos. Por exemplo, suponha que você tenha um perfil do Azure Front Door compartilhado globalmente. Se você adicionar um locatário que tenha um nome de domínio personalizado, seu plano de controle talvez precise atualizar a configuração do perfil para rotear solicitações desse nome de domínio para o aplicativo correto. Da mesma forma, quando um locatário é desembarcado, seu plano de controle pode precisar remover o nome de domínio personalizado do perfil da Porta da Frente do Azure para evitar ataques de invasão de subdomínio.

Os componentes compartilhados podem ter regras de dimensionamento complexas que seu plano de controle precisa seguir. Por exemplo, se utilizar uma abordagem de bin-packing para implantar os bancos de dados dos seus clientes (tenants), o plano de controle deverá atribuir cada novo banco de dados a um pool elástico de SQL do Azure.

Você pode determinar que precisa aumentar os recursos alocados ao seu pool para cada décimo banco de dados adicionado. Quando você adiciona ou remove um locatário, seu plano de controle precisa reavaliar a configuração do pool e decidir se deseja alterar os recursos do pool. Quando você atingir o número máximo de bancos de dados que pode atribuir a um único pool elástico, precisará criar um novo pool e usá-lo para novos bancos de dados de locatário. Seu plano de controle deve gerenciar cada um desses componentes compartilhados, incluindo dimensionamento e reconfiguração quando ocorrerem alterações.

Quando seu plano de controle gerencia componentes compartilhados, é importante estar ciente das condições de corrida, que podem ocorrer quando várias operações acontecem em paralelo. Por exemplo, se você integrar um novo locatário ao mesmo tempo em que desconecta um locatário diferente, precisará garantir que seu estado final final seja consistente e atenda aos seus requisitos de dimensionamento.

Use vários planos de controle

Em um ambiente complexo, talvez seja necessário usar vários planos de controle que gerenciam áreas diferentes. Muitas soluções multilocatárias seguem o padrão Deployment Stamps e fragmentam locatários em vários carimbos. Nesse padrão, você pode criar planos de controle separados para responsabilidades globais e de carimbo.

Sugestão

A coordenação entre vários planos de controle adiciona complexidade, portanto, tente minimizar o número de planos de controle que você constrói. A maioria das soluções necessita apenas de um plano de controlo.

Planos de controlo globais

Um plano de controle global normalmente lida com o gerenciamento geral e o rastreamento de locatários. Um plano de controlo global pode ter as seguintes responsabilidades:

  • Colocação do inquilino: O plano de controle global determina qual carimbo um locatário deve usar. Ele pode fazer essa determinação com base em fatores como a região do locatário, o uso da capacidade de cada selo e os requisitos de nível de serviço do locatário.

  • Integração de inquilinos e gestão do ciclo de vida: Essas responsabilidades incluem o acompanhamento de todos os locatários nas implantações.

Planos de controlo de carimbos

Cada carimbo de implantação inclui seu próprio plano de controle de carimbo, que gerencia os locatários e os recursos alocados para esse carimbo. Um plano de controle de carimbo pode ter as seguintes responsabilidades:

  • Provisionamento de recursos do locatário: Ele cria e gerencia recursos específicos do locatário dentro do carimbo, como bancos de dados e contêineres de armazenamento.

  • Gestão de recursos partilhados: Ele monitora o consumo de recursos compartilhados e implanta novas instâncias quando elas se aproximam de sua capacidade máxima.

  • Operações de manutenção: Ele lida com tarefas dentro do carimbo, como gerenciamento de índice de banco de dados e operações de limpeza.

O plano de controle de cada carimbo coordena-se com o plano de controle global. Por exemplo, se um novo locatário se inscrever, o plano de controle global poderá selecionar inicialmente um carimbo para os recursos do locatário. Em seguida, o plano de controle global solicita que o plano de controle do carimbo crie os recursos necessários para o locatário.

O diagrama a seguir mostra como dois planos de controle podem coexistir em um único sistema.

Diagrama que mostra um design de sistema lógico. O projeto tem um plano de controle global e planos de controle de carimbo.

Planos de controle de locatários

Os locatários podem usar um plano de controle no nível do locatário para gerenciar seus próprios recursos lógicos ou físicos. Um plano de controle de locatário pode ter as seguintes responsabilidades:

  • Gerenciamento de configuração: Ele lida com a configuração específica do locatário, como o acesso do usuário.

  • Operações de manutenção iniciadas pelo inquilino: Ele suporta operações como backup de dados ou download de backups anteriores.

  • Gerenciamento de atualizações: Ele executa atualizações se você permitir que os locatários controlem suas próprias atualizações para seus aplicativos.

O diagrama a seguir mostra um sistema complexo que tem um plano de controle global, planos de controle de carimbo e planos de controle de locatário.

Diagrama que mostra um design de sistema lógico. O projeto tem um plano de controle global, planos de controle de carimbo e planos de controle de locatário.

Contribuidores

A Microsoft mantém este artigo. Os seguintes colaboradores escreveram este artigo.

Autor principal:

  • John Downs | Engenheiro de Software Principal, Azure Patterns & Practices

Outros contribuidores:

Para ver perfis não públicos do LinkedIn, faça login no LinkedIn.

Próximo passo