Compartilhar via


Abordagens de arquitetura para planos de controle em soluções multilocatário

Os planos de controle são uma parte importante do software como serviço (SaaS) e das soluções multilocatário, especialmente para ajudar a gerenciar uma solução em escala. Normalmente, há dois componentes principais que compõem um plano de controle:

  • O catálogo do locatário, que armazena informações importantes sobre seus locatários, como:
    • Configuração do locatário.
    • SKUs implantadas para recursos de locatário.
    • A quais carimbos de implantação os locatários estão alocados.
  • Processos para gerenciar alterações no ambiente, que são acionados por eventos do ciclo de vida do locatário. Por exemplo, integração do locatário, desembarque do locatário e qualquer manutenção regular necessária.

Um plano de controle é em si um aplicativo. Você precisa pensar no seu plano de controle com cuidado e projetá-lo com o mesmo rigor e cuidado que você tem com qualquer outra parte da sua solução. Para obter mais informações sobre o que é um plano de controle, por que você deve usá-lo e as considerações para projetar um, consulte Considerações para planos de controle multilocatário.

Este artigo descreve algumas abordagens que você pode considerar para projetar e criar um plano de controle. A lista de abordagens descritas aqui não é abrangente. Embora as abordagens sejam todas válidas, existem outras arquiteturas possíveis.

Abordagens e padrões a serem considerados

A tabela a seguir resume as diferenças entre algumas das abordagens que você pode considerar para um plano de controle. Abordagens manuais, com pouco código e personalizadas são comparadas.

Consideração Manual Pouco código Personalizado
Sobrecarga operacional Alto Médio-baixo Baixo
Frequência de eventos do ciclo de vida para os quais a abordagem é adequada Raro Ocasionalmente-frequentemente Com frequência
Tempo e complexidade para implementar Baixo Médio Alto
Responsabilidades de manutenção do plano de controle Baixo Médio Alto
Capacidade de teste Baixo Médio Alto
Risco de inconsistências Alto Médio-baixo Baixo

Processos manuais

Nem sempre é essencial construir um plano de controle totalmente automatizado, especialmente quando você está começando e tem apenas um pequeno número de inquilinos.

Você pode manter seu catálogo de locatários em algum lugar central, como em uma pasta de trabalho do Excel ou em um arquivo JSON armazenado em um local que sua equipe possa acessar. Independentemente do formato, é uma boa ideia armazenar as informações de forma estruturada para que você possa trabalhar facilmente com os dados programaticamente.

Observação

Um plano de controle manual é uma ótima maneira de começar a gerenciar seu aplicativo multilocatário, mas é adequado apenas para um pequeno número de locatários (menos de 5-10). A sobrecarga administrativa e o risco de inconsistências aumentam a cada locatário que você integra manualmente. Você só deve usar essa abordagem se tiver apenas alguns locatários e não precisar de integração automatizada ou de autoatendimento.

Para processos como integração de locatários e atividades de manutenção:

  • Crie scripts ou pipelines automatizados sempre que possível, mesmo que você os execute manualmente. Usando scripts ou pipelines, você garante que as etapas sejam executadas de forma consistente para cada locatário.
  • Para tarefas para as quais você não pode criar scripts inicialmente, documente o processo minuciosamente e em detalhes explícitos. Documente como e o porquê. Se alguém acabar automatizando a tarefa no futuro, deve ter um bom entendimento de ambos.

O diagrama a seguir ilustra uma maneira de usar processos manuais para um plano de controle inicial:

Diagrama que mostra uma maneira de usar scripts e outros processos manuais para um plano de controle.

Baixe um Arquivo Visio dessa arquitetura.

Vantagens de uma abordagem manual

  • Leve: documentação, scripts e pipelines são fáceis de desenvolver e modificar. Isso os torna apropriados quando você está descobrindo seus processos, porque você pode iterá-los e evoluí-los rapidamente.
  • Baixo custo: manter e executar uma abordagem manual é barato.
  • Valida seu processo: mesmo que você eventualmente pretenda usar uma abordagem mais automatizada, começar com uma abordagem manual como prova de conceito é uma boa maneira de validar sua estratégia de manutenção antes de investir tempo no desenvolvimento de uma automação mais robusta.

Desvantagens de uma abordagem manual

  • Falta de controle: essa abordagem depende que todos os envolvidos façam o plano de controle corretamente. Alguém pode desviar-se dos processos prescritos, acidentalmente ou intencionalmente. Toda variação no processo aumenta o risco de inconsistência em seu ambiente, o que torna o gerenciamento contínuo muito mais difícil.
  • Desafios de controle de acesso: quando você usa essa abordagem, normalmente precisa conceder acesso de escopo amplo e altamente permissivo a qualquer pessoa que opere sua solução, o que dificulta o seguimento das práticas recomendadas para segmentação de acesso.
  • Escalabilidade: o trabalho necessário para executar processos manuais é dimensionado com o número de locatários que você precisa gerenciar.
  • Estabilidade: processos manuais são difíceis de validar e testar.

Quando é melhor afastar-se de uma abordagem manual

  • Quando sua equipe não consegue acompanhar a quantidade de trabalho que precisa fazer para manter o aplicativo. Por exemplo, quando seu número de locatários aumenta além de um ponto crítico, que para a maioria das equipes é entre 5 e 10 locatários.
  • Quando você antecipa o crescimento do locatário além de um número crítico de locatários e precisa se preparar para o trabalho envolvido na administração desse número de locatários.
  • Quando você precisa mitigar o risco de inconsistências. Por exemplo, você pode observar alguns erros ocorrendo porque alguém não está seguindo os processos corretamente, ou porque há muita ambiguidade nos processos. O risco de inconsistência normalmente aumenta à medida que mais locatários são integrados manualmente, conforme sua equipe cresce.

Plano de controle com pouco código

Um plano de controle com pouco ou nenhum código é construído em uma plataforma projetada para automatizar processos de negócios e rastrear informações. Existem muitas plataformas que permitem que você faça essas tarefas sem escrever código personalizado.

O Microsoft Power Platform é um exemplo de uma dessas plataformas. Se você usar o Power Platform, poderá manter seu catálogo de locatários no Dynamics 365, Dataverse ou Microsoft 365. Você também pode considerar manter o mesmo catálogo de locatários que usa para seus processos manuais, se ainda não quiser se comprometer totalmente a automatizar tudo.

Para integração e manutenção de locatários, você pode usar o Power Automate para executar fluxos de trabalho que executam gerenciamento de locatário, configurar locatários, acionar pipelines ou chamadas de API e assim por diante. Você poderá usar o Power Automate para observar alterações no catálogo do locatário se os dados estiverem em algum lugar acessível ao Power Automate. Se você usar um catálogo de locatário manual, os fluxos de trabalho do Power Automate também poderão ser acionados manualmente. Você pode decidir incluir etapas de aprovação manual em seus fluxos de trabalho se precisar de alguém de sua equipe para verificar algo ou executar etapas adicionais que não podem ser totalmente automatizadas.

Essa abordagem também permite que você forneça inscrição para autoatendimento para seus clientes, permitindo que seu aplicativo Web adicione registros diretamente ao catálogo de locatários sem intervenção humana.

O diagrama a seguir ilustra como você pode criar um plano de controle com inscrição de autoatendimento usando o Microsoft Power Platform:

Diagrama que mostra uma maneira de usar o Power Automate e o Dataverse como um painel de controle de baixo código.

Baixe um Arquivo Visio dessa arquitetura.

Vantagens de uma abordagem com pouco código

  • Leve: geralmente é rápido e barato criar um conjunto de fluxos de trabalho com pouco código e conectá-lo aos sistemas circundantes.
  • Usa ferramentas de plataforma: você pode usar recursos nativos da plataforma para armazenar dados, criar portais administrativos para sua equipe usar e monitorar os fluxos de trabalho à medida que são executados. Ao usar recursos nativos da plataforma, você evita criar muitos componentes por conta própria.
  • Personalizável: se você precisar de mais personalização, normalmente poderá aumentar seus fluxos de trabalho com código e processos personalizados. Por exemplo, você pode usar o Power Automate para disparar um fluxo de trabalho de implantação no GitHub Actions ou pode invocar o Azure Functions para executar seu próprio código. Isso também ajuda a facilitar uma implementação gradual.
  • Baixa sobrecarga: os serviços com pouco código geralmente são totalmente gerenciados, portanto, você não precisa gerenciar a infraestrutura.

Desvantagens de uma abordagem com pouco código

  • Experiência necessária: para usar plataformas com pouco código para criar processos e usar efetivamente essas plataformas, você normalmente precisa de conhecimento proprietário. Muitas organizações já usam essas ferramentas, portanto, sua equipe pode ou não já ter a experiência necessária. Você deve descobrir se precisa treinar sua equipe para usar efetivamente essas plataformas.
  • Gerenciamento: pode ser desafiador lidar com o gerenciamento de grandes quantidades de configuração com pouco código.
  • Estabilidade: considere como testar e promover mudanças em seu plano de controle. Em uma plataforma gerenciada, criar um processo típico de DevOps para testar e promover alterações é mais difícil, porque as alterações normalmente são feitas por meio de configuração, não por meio de código.
  • Design: pense cuidadosamente em como atender a requisitos não funcionais, como segurança e confiabilidade. Esses requisitos geralmente são gerenciados para você em uma plataforma com pouco código.

Quando é melhor se afastar de uma abordagem com pouco código

  • Eventualmente, seus requisitos podem se tornar tão complexos que você não conseguirá incorporá-los de forma sensata em uma solução com pouco código. Quando você precisa contornar as limitações de ferramentas para atender às suas necessidades, provavelmente faz sentido sair de uma solução gerenciada e ir em direção a um plano de controle personalizado.

Plano de controle personalizado

Você também pode considerar a criação do seu próprio plano de controle completamente personalizado. Esta opção fornece a maior flexibilidade e potência, mas também requer mais trabalho. O catálogo do locatário geralmente é armazenado em um banco de dados. Nesse caso, você não trabalha diretamente com o catálogo, mas o gerencia por meio de uma interface administrativa, que pode ser um aplicativo personalizado ou um sistema como o aplicativo CRM (gerenciamento de relacionamento com o cliente) da sua organização.

Normalmente, você cria um conjunto de componentes do plano de controle projetado em torno de todas as funções administrativas do locatário. Esses componentes podem incluir um portal administrativo ou outra interface do usuário, uma API e componentes de processamento em segundo plano. Se você precisar fazer coisas como implantar código ou infraestrutura quando ocorrerem eventos do ciclo de vida do locatário, os pipelines de implantação também poderão compor seu plano de controle.

Certifique-se de que qualquer processamento de longa execução use ferramentas apropriadas. Por exemplo, você pode usar Funções duráveis ou Aplicativos Lógicos do Azure para componentes que orquestram a integração ou implantações de locatários, ou para componentes que precisam se comunicar com sistemas externos.

Assim como a abordagem com pouco código, a abordagem permite que você forneça inscrição de autoatendimento para seus clientes, permitindo que seu aplicativo Web adicione registros diretamente ao catálogo de locatários sem intervenção humana.

O diagrama a seguir mostra uma maneira de criar um plano de controle personalizado básico que fornece inscrição de autoatendimento:

Diagrama que ilustra um plano de controle criado com Durable Functions, um banco de dados SQL e um barramento de serviço.

Baixe um Arquivo Visio dessa arquitetura.

Vantagens de uma abordagem personalizada

  • Flexibilidade total e capacidade de personalização: você tem controle total sobre o que seu plano de controle faz e pode alterá-lo se seus requisitos mudarem.
  • Testabilidade: você pode usar um ciclo de vida de desenvolvimento de software (SDLC) padrão para seu aplicativo de plano de controle e implementar abordagens normais para testes e implantações, assim como faria para seus aplicativos principais.

Desvantagens de uma abordagem personalizada

  • Responsabilidades de manutenção: essa abordagem requer mais cuidados com a manutenção, pois você precisa criar tudo sozinho. Os planos de controle são tão importantes quanto qualquer outra parte do seu aplicativo. Você precisa tomar muito cuidado no desenvolvimento, teste e operação do seu plano de controle para garantir que ele seja confiável e seguro.

Abordagens híbridas

Você também pode considerar o uso de uma abordagem híbrida. Você pode usar uma combinação de sistemas manuais e automatizados ou pode usar uma plataforma gerenciada como o Microsoft Power Platform e aumentá-la com aplicativos personalizados. Considere a implementação de uma abordagem híbrida se você precisar da capacidade de personalização do plano de controle personalizado, mas não quiser necessariamente criar e manter um sistema totalmente personalizado. Tenha em mente que, em algum momento, suas personalizações automatizadas para seus processos manuais ou sua plataforma gerenciada podem se tornar tão complexas quanto um sistema totalmente personalizado. O ponto de inflexão é diferente para cada organização, mas se sua abordagem híbrida for complicada de manter, você deve considerar a migração para um sistema totalmente personalizado.

Implementação gradual

Mesmo que você saiba que deseja eventualmente automatizar seu plano de controle, você não precisa necessariamente começar com essa abordagem. Uma abordagem comum durante os estágios iniciais da criação de seu aplicativo é começar com um plano de controle manual. À medida que seu aplicativo progride e integra mais locatários, você deve começar a identificar áreas de gargalo e automatizá-las conforme necessário, migrando para uma abordagem híbrida. À medida que você automatiza mais, você pode eventualmente ter um plano de controle totalmente automatizado.

Antipadrões a serem evitados

  • Depender de processos manuais por muito tempo. Embora seja razoável usar processos manuais quando você começa ou quando você tem um número baixo de locatários e exige um gerenciamento bastante leve, você precisa planejar como escalar para uma solução automatizada à medida que cresce. Se você precisa contratar outros membros de equipe para acompanhar a demanda dos seus processos manuais, isso é um sinal de que deve começar a automatizar partes do seu plano de controle.
  • Usando ferramentas inadequadas para fluxos de trabalho de longa execução. Por exemplo, evite usar funções padrão do Azure, chamadas de API síncronas ou outras ferramentas que tenham um limite de tempo de execução para executar operações de longa execução, como implantações do Azure Resource Manager ou orquestrações de várias etapas. Em vez disso, use ferramentas como Aplicativos Lógicos do Azure, Durable Functions e outras ferramentas que podem executar fluxos de trabalho de longa execução ou sequências de operações. Para obter mais informações, consulte Desempenho e confiabilidade do Azure Functions e Padrão de solicitação-resposta assíncrona.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Principais autores:

Outros colaboradores:

Próximas etapas