Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
As práticas de DevOps são essenciais para gerenciar cargas de trabalho no Azure, especialmente para aplicativos SaaS (software como serviço). Os principais aspetos do gerenciamento de uma carga de trabalho incluem integração, desintegração e modificação de instâncias de clientes. Essas práticas agilizam as operações e aumentam a escalabilidade e a confiabilidade, o que minimiza as chances de interrupções.
Este artigo descreve considerações de design para gerenciamento eficiente do ciclo de vida do cliente e práticas de implantação seguras.
Gerencie os ciclos de vida do cliente
O gerenciamento de eventos do ciclo de vida do cliente é crucial para qualquer aplicativo SaaS. Normalmente, esses eventos incluem:
- Integração: Quando um cliente se inscreve.
- Alteração: Quando a instância de um cliente é modificada, como uma alteração no seu patamar de preços.
- Offboarding: Quando um cliente cancela a sua conta.
Você poderá encontrar outros eventos do ciclo de vida. Por exemplo, você pode permitir que seus clientes pausem a assinatura enquanto retêm os dados por um período definido e retomem a assinatura mais tarde. Cada evento pode ter implicações únicas para a sua aplicação.
Em algumas soluções, o gerenciamento do ciclo de vida do cliente pode exigir apenas a criação ou o gerenciamento de dados em uma tabela de banco de dados. Para outras soluções, isso pode incluir orquestrar a implantação da infraestrutura do Azure, o código do aplicativo e a configuração mais complexa.
O gerenciamento do ciclo de vida é uma responsabilidade fundamental do plano de controle de uma solução SaaS. Inicialmente, sua equipe pode lidar com essas atividades manualmente. Mas, com o tempo, tente fazer a transição de mais funcionalidades para uma solução ou aplicativo de plano de controle formalizado.
Considerações de design
Consistência. Ao planejar sua estratégia de gerenciamento do ciclo de vida, considere a complexidade das ações que cada evento do ciclo de vida do cliente exige. Essas ações incluem o tamanho da sua solução, a base de clientes e a sobrecarga organizacional. Tenha uma compreensão clara das etapas necessárias para cada evento e invista em controles para manter a consistência. Analise e atualize regularmente seus processos para ajudar a garantir que eles permaneçam válidos à medida que sua solução evolui.
Modelo de arrendamento. Sua abordagem para lidar com eventos do ciclo de vida do cliente depende do seu modelo de locação.
Soluções totalmente multilocatárias com recursos de infraestrutura. A integração ou desintegração de um cliente normalmente inclui a atualização de uma lista de clientes e dados associados no armazenamento de dados do seu aplicativo.
Recursos dedicados por cliente. As tarefas geralmente incluem iniciar implantações no Azure, monitorar o progresso e lidar com falhas de implantação, possivelmente com intervenção humana.
Recursos implantados pelo cliente. Talvez seja necessário interagir diretamente com a equipe de engenharia do cliente para integração ou desembarque.
Níveis. Considere seu modelo de preços e as diferentes necessidades de infraestrutura de cada nível, especialmente se você permitir que os clientes alterem livremente sua SKU a qualquer momento. Por exemplo, se sua solução SaaS incluir um aplicativo principal e vários módulos complementares pagos, certifique-se de que os recursos do aplicativo principal sejam implantados durante a integração. Além disso, permita a adição dinâmica e remoção de módulos adicionais. Quando um módulo for removido, decida se deseja excluir os dados associados ou armazená-los para possível reativação.
Recomendações de design
| Recomendação | Benefício |
|---|---|
| Documente cada tipo de evento do ciclo de vida do cliente. Certifique-se de capturar detalhes passo a passo do processo para cada evento. |
Você pode planejar como responder a cada evento em seu design de solução. Instruções claras ajudam os operadores humanos a manter a consistência e servem como base para a automação futura. |
| Comunique a responsabilidade compartilhada entre você e seu cliente para cada evento do ciclo de vida. Comunique de forma clara e antecipada sobre as ações que espera que os clientes tomem para completar uma etapa do ciclo de vida. | Você pode reduzir possíveis erros e frustração do cliente causados por falhas de comunicação. |
| Faça o planejamento de capacidade para cada evento do ciclo de vida. Por exemplo, ao integrar um novo cliente, planeje implantar uma nova instância do seu aplicativo se as instâncias existentes não tiverem capacidade suficiente para lidar com a carga extra. Para obter mais informações, consulte Cobrança e gerenciamento de custos para cargas de trabalho SaaS no Azure. |
Você pode dimensionar mais facilmente e evitar falhas de implantação. |
| Automatize seus eventos de ciclo de vida quando possível. Para soluções de baixo volume ou em fase inicial, a implantação e a configuração manuais podem ser suficientes. Mas ainda deve usar scripts, mesmo que um engenheiro os execute sempre que ocorrer um evento do ciclo de vida. À medida que sua solução amadurece, integre essas responsabilidades em um plano de controle total para reduzir o erro humano e oferecer suporte a uma escala mais alta. |
Você pode reduzir o risco significativo de erro humano e oferecer suporte a uma escala mais alta. |
Planeje sua estratégia de gerenciamento de infraestrutura
Desenvolva uma estratégia para implantar, manter e gerenciar a infraestrutura do Azure logo no início. À medida que você dimensiona seu SaaS, o número de recursos cresce. É mais fácil seguir uma estratégia de gerenciamento desde o início do que reconciliar a infraestrutura mais tarde, quando ela se torna muito complexa para ser manipulada manualmente.
Considerações de design
Gestão de recursos do cliente. Seu modelo de locação afeta a implantação de recursos em soluções SaaS. Você pode implantar recursos dedicados do Azure para cada cliente ou compartilhar recursos entre um número definido de clientes. Como alternativa, você pode usar um único conjunto de recursos compartilhados e reconfigurá-los à medida que integra novos clientes. Considere estas abordagens típicas para gerenciar o ciclo de vida dos recursos:
Trate sua lista de clientes como uma configuração dos recursos a serem implantados. Use pipelines de implantação centralizados para implantar e configurar esses recursos.
Trate a sua lista de clientes como dados. Use um aplicativo de plano de controle para provisionar e configurar a infraestrutura.
Automação de infraestrutura. Muitas organizações começam implantando manualmente a infraestrutura de nuvem por meio do portal do Azure. Esta estratégia é fácil no início, mas não escala bem ao longo do tempo. Planeie automatizar a configuração da sua infraestrutura utilizando ferramentas de infraestrutura como código (IaC), como Bicep ou Terraform. Para requisitos mais complexos, crie um plano de controle que use APIs do Azure Resource Manager diretamente.
Atribuição de infraestrutura. Acompanhe quais clientes são implantados em qual infraestrutura. O rastreamento é importante para o planejamento preciso da capacidade e atribuição de custos. Você pode rastrear a infraestrutura do cliente centralmente em um banco de dados de clientes. Ou, para infraestrutura dedicada, use metadados de recursos do Azure com grupos de recursos específicos do cliente e tags de recursos. Para obter mais informações, consulte Organização de recursos para cargas de trabalho SaaS.
Recomendações de design
| Recomendação | Benefício |
|---|---|
| Crie automação de infraestrutura usando pipelines de implantação, scripts ou modelos com ferramentas com as quais sua equipe já está familiarizada. | As ferramentas familiares reduzem o risco de erros porque a automação da infraestrutura pode causar interrupções se as ferramentas não forem compreendidas. |
| Implante sua infraestrutura usando IaC quando possível. | O IaC ajuda a reduzir a manutenção manual, que se torna mais arriscada e onerosa à medida que a quantidade de infraestrutura aumenta. |
| Separe a infraestrutura principal da infraestrutura ao nível do cliente. | Diferentes tipos de infraestrutura têm ciclos de vida e atividades de gestão distintos. Ao separá-los, você pode gerenciar cada conjunto de forma independente em sua própria programação. |
| Use os Aplicativos Gerenciados do Azure para implantar e gerenciar recursos implantados pelo cliente. | Os Aplicativos Gerenciados do Azure fornecem uma variedade de recursos que você pode usar para implantar e gerenciar recursos dentro da assinatura do Azure de um cliente. |
Planejar implantações de aplicativos
Para melhorar a funcionalidade, atualize regularmente o código e a configuração do aplicativo. Os clientes esperam um tempo de atividade consistente durante as atualizações e implementações seguras para minimizar o risco de interrupções.
Considerações de design
Padronizar ferramentas e processos. As ferramentas de DevOps comprovadas no setor ajudam a garantir a consistência entre funções e a maturidade nos processos de gerenciamento de implantações de aplicativos. Na maioria das situações, desenvolver suas próprias ferramentas é considerado um antipadrão. Para obter mais informações, consulte OE:03 Práticas de desenvolvimento de software.
Compensação: Complexidade e custo. Ferramentas familiares de DevOps podem ser econômicas em termos de dinheiro e habilidades. No entanto, acrescentam o encargo operacional de gerir cada ferramenta separadamente. É importante permanecer aberto a novas inovações tecnológicas que possam beneficiar sua carga de trabalho.
Implante atualizações progressivamente. Implemente atualizações para os clientes em fases. Divida os usuários em grupos lógicos e implante alterações em um grupo de cada vez. Aplique o mesmo rigor às alterações de configuração porque elas podem alterar o comportamento do código e causar interrupções. Siga um processo de implantação para essas alterações.
Adote uma estratégia de versionamento. Quando os clientes podem escolher a versão do aplicativo, isso adiciona flexibilidade, mas complica suas operações. Defina expectativas claras para a substituição de versões antigas e descreva o que acontece quando elas não são mais suportadas.
Implementar automação. As implantações manuais são propensas a riscos devido a erros humanos e falta de consistência. Mesmo que suas implantações sejam acionadas manualmente, você deve automatizar seu processo de implantação tanto quanto possível e exigir supervisão humana mínima. Considere as etapas do seu processo de implantação e como melhor automatizá-las.
Integrar testes. Integre o teste ao seu processo de implantação executando:
- Testes de unidade durante a compilação de código.
- Testes de integração após a implantação.
- Testes de desempenho regulares.
- Testes regulares de segurança e penetração.
Decida sobre um plano de ação se algum teste falhar em qualquer fase.
Implantações com falha. Planeje falhas de implantação considerando as ações necessárias e preparando uma estratégia de reversão.
Acesso aos ambientes dos clientes. Se você implantar recursos em ambientes de clientes, entenda como aplicar atualizações nesses ambientes. Considere os recursos que os Aplicativos Gerenciados do Azure fornecem, como a implantação de atualizações para aplicativos.
Recomendações de design
| Recomendação | Benefício |
|---|---|
| Use ferramentas e processos de DevOps estabelecidos e comprovados no setor para gerenciar suas implantações de aplicativos. Na maioria das situações, desenvolver suas próprias ferramentas é considerado um antipadrão. Para obter mais informações, consulte OE:03 Práticas de desenvolvimento de software. |
Essa estratégia pode ajudar a garantir que sua equipe de engenharia implante aplicativos de forma eficaz, sem ter que aprender ferramentas personalizadas. |
| Notifique proativamente os clientes sobre quaisquer implantações futuras ou concluídas. | Essa estratégia pode ajudar a garantir que as expectativas adequadas sejam definidas com seus clientes sobre as próximas alterações em seu aplicativo. |
| Adote práticas de implantação seguras que implantam atualizações em grupos de clientes por meio de estratégias como exposição progressiva e modelos de integridade. Comece com clientes menos sensíveis ou de adoção antecipada antes de mudar para uma base de clientes mais ampla. Para obter mais informações, consulte Recomendações para práticas de implantação seguras. |
Essa estratégia pode ajudá-lo a identificar problemas antes que eles afetem todos os clientes. |
| Trate a configuração como código. | Você pode reduzir a probabilidade de tempo de inatividade e adotar um processo consistente para alterações de produção. Essa abordagem centraliza as responsabilidades operacionais, como testar alterações e distribuir progressivamente atualizações de configuração e código. |
| Defina um processo de gerenciamento de alterações e comunique uma política de atualização de versão para garantir que os clientes saibam quem aciona as atualizações, sua frequência e condições. Se os clientes puderem escolher a versão do aplicativo, defina diretrizes claras sobre como descontinuar versões antigas. Minimize o número de versões de aplicativos executadas em produção. |
A manutenção de versões mais antigas causa ineficiência operacional. Forneça o controle necessário para seus clientes e evite sobrecarregar sua equipe, definindo expectativas e políticas claras. |
| Evite personalizar aplicativos para um único cliente. Para dar suporte a diferentes necessidades do cliente, você pode criar várias camadas de sua solução ou usar sinalizadores de recursos para habilitar funcionalidades específicas para determinados usuários. |
Evite ambiguidades sobre quais recursos são implantados em qual versão e reduza sua carga de manutenção. |
| Tenha um plano de reversão para implantações com falha, incluindo critérios para acionamento e aprovações necessárias. | Os planos de reversão ajudam a garantir que você possa se recuperar de erros de implantação, mesmo em circunstâncias imprevistas. |
| Teste a sua aplicação regularmente e em várias fases do processo de desenvolvimento de software. Adote uma mentalidade de shift-left e identifique bugs e desvios logo no início do ciclo de vida. | Ajude a evitar que erros críticos afetem seus clientes. |
Outros recursos
A multilocação é uma metodologia de negócios central para projetar cargas de trabalho SaaS. Os artigos a seguir fornecem mais informações sobre como adotar práticas de DevOps:
- Abordagens arquitetônicas para a implantação e configuração de soluções multilocatárias
- Considerações para atualizar uma solução multilocatária
- Considerações para planos de controle multilocatário
- Abordagens arquitetônicas para planos de controle em soluções multilocatárias
Próximo passo
Saiba mais sobre as considerações de gerenciamento de incidentes para implementar processos e ferramentas que dão suporte a uma solução SaaS no Azure.