Abordagens arquitetônicas para planos de controle em soluções multilocatárias
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 de locatários, 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 de inquilinos, desembarque de inquilinos e qualquer manutenção regular necessária.
Um plano de controlo é, em si mesmo, uma aplicação. Você precisa pensar no seu plano de controle cuidadosamente e projetá-lo com o mesmo rigor e cuidado que você usa 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 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 descrita aqui não é abrangente. Embora as abordagens sejam todas válidas, existem outras arquiteturas válidas.
Abordagens e padrões a considerar
A tabela a seguir resume as diferenças entre algumas das abordagens que você pode considerar para um plano de controle. Abordagens manuais, low-code e personalizadas são comparadas.
Consideração | Manual | Low-code | Personalizado |
---|---|---|---|
Despesas gerais operacionais | Alto | Baixo-médio | Baixo |
Frequência dos eventos do ciclo de vida para os quais a abordagem é adequada | Raros | Ocasional-frequentemente | Muitas Vezes |
Tempo e complexidade para implementar | Baixo | Médio | Alto |
Responsabilidades de manutenção do plano de controlo | Baixo | Médio | Alto |
Capacidade de teste | Baixo | Médio | Alto |
Risco de incoerê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 localizado centralmente, como em uma pasta de trabalho do Excel ou 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.
Nota
Um plano de controle manual é uma ótima maneira de começar a gerenciar seu aplicativo multilocatário, mas só é adequado 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ê embarca 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 atividades de integração e manutenção de inquilinos:
- 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 consistentemente para cada locatário.
- Para tarefas que você não pode criar scripts inicialmente, documente o processo minuciosamente e em detalhes explícitos. Documente o como , bem como 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:
Transfira um ficheiro do Visio desta 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 evolui-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 controlo: Esta abordagem depende de todos os envolvidos fazerem a coisa certa. Alguém pode desviar-se dos processos prescritos, acidentalmente ou intencionalmente. Cada 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 seguir as práticas recomendadas para segmentação de acesso.
- Escalabilidade: o trabalho necessário para executar processos manuais é dimensionado de acordo com o número de locatários que você precisa gerenciar.
- Estabilidade: Os processos manuais são difíceis de validar e testar.
Quando considerar o afastamento 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 o número de locatários é dimensionado além de um ponto crítico, que para a maioria das equipes é entre 5 e 10 locatários.
- Quando você antecipa o crescimento de locatários 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 cresce à medida que mais locatários são integrados manualmente e à medida que sua equipe cresce.
Plano de controle low-code
Um plano de controle low-code ou no-code é 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 utilizar a Power Platform, poderá manter o seu catálogo de inquilinos 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 não quiser se comprometer totalmente com a automatização de tudo no início.
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, configuram locatários, acionam pipelines ou chamadas de API e assim por diante. Pode utilizar o Power Automate para observar as alterações ao seu catálogo de inquilinos, se os dados estiverem acessíveis 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 que alguém da sua equipe verifique algo ou execute etapas adicionais que não podem ser totalmente automatizadas.
Essa abordagem também permite que você forneça inscrição de autoatendimento aos seus clientes, permitindo que seu aplicativo Web adicione registros diretamente ao seu 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:
Transfira um ficheiro do Visio desta arquitetura.
Vantagens de uma abordagem low-code
- Leve: muitas vezes é rápido e barato criar um conjunto de fluxos de trabalho low-code e conectá-los aos sistemas ao redor.
- 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 pode 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 nas Ações do GitHub ou pode invocar o Azure Functions para executar seu próprio código. Isto também ajuda a facilitar uma implementação gradual.
- Baixa sobrecarga: os serviços low-code geralmente são totalmente gerenciados, portanto, você não precisa gerenciar a infraestrutura.
Desvantagens de uma abordagem low-code
- Experiência necessária: para usar plataformas low-code para criar processos e usar efetivamente essas plataformas, você normalmente precisa de conhecimento proprietário. Muitas organizações já usam essas ferramentas, então sua equipe pode já ter a experiência necessária, mas pode não ter. Você deve considerar se precisa treinar sua equipe para usar efetivamente essas plataformas.
- Gerenciamento: pode ser um desafio lidar com o gerenciamento de grandes quantidades de configuração low-code.
- Estabilidade: Considere como testar e promover alterações no 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 low-code.
Quando considerar o afastamento de uma abordagem low-code
- Eventualmente, seus requisitos podem se tornar tão complexos que você não pode incorporá-los sensatamente em uma solução low-code. 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 para um plano de controle personalizado.
Plano de controle personalizado
Você também pode considerar a criação de seu próprio plano de controle completamente personalizado. Esta opção oferece mais flexibilidade e potência, mas também requer mais trabalho. O catálogo do locatário geralmente é armazenado em um banco de dados. Neste 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 de gerenciamento de relacionamento com o cliente (CRM) 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 duraçã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.
Como a abordagem low-code, essa abordagem permite que você forneça inscrição de autoatendimento aos seus clientes, permitindo que seu aplicativo Web adicione registros diretamente ao seu 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:
Transfira um ficheiro do Visio desta arquitetura.
Vantagens de uma abordagem personalizada
- Flexibilidade total e personalização: Você tem controle total sobre o que seu plano de controle faz e pode alterá-lo se seus requisitos mudarem.
- Estabilidade: Você pode usar um ciclo de vida de desenvolvimento de software padrão (SDLC) 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: Esta abordagem requer mais despesas gerais de manutenção, porque você precisa criar tudo sozinho. Um plano de controlo é tão importante como qualquer outra parte da sua aplicação. Você precisa ter muito cuidado ao desenvolver, testar e operar 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 precisar da personalização de um plano de controle personalizado, mas não quiser necessariamente construir 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 mudar para um sistema totalmente personalizado.
Aplicaçã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 de criação do 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, passando para uma abordagem híbrida. À medida que você automatiza mais, você pode eventualmente ter um plano de controle totalmente automatizado.
Antipadrões a evitar
- Confiando em processos manuais por muito tempo. Embora seja razoável usar processos manuais quando você começa ou quando tem um número baixo de locatários e requer um gerenciamento bastante leve, você precisa planejar como escalar para uma solução automatizada à medida que cresce. Se você precisa contratar membros adicionais da equipe para acompanhar a demanda de seus processos manuais, isso é um bom sinal de que você 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, Funções Duráveis 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.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Principais autores:
- John Downs - Brasil | Engenheiro de Software Principal
- Landon Pierce - Brasil | Engenheiro de Clientes
Outros contribuidores:
- Mick Alberts - Brasil | Redator Técnico
- Bohdan Cherchyk - Brasil | Engenheiro de Clientes Sênior
- Arsen Vladimirskiy - Brasil | Engenheiro de Clientes Principal