Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As práticas de DevOps são parte integrante do gerenciamento de cargas de trabalho no Azure, especialmente para aplicativos SaaS (software como serviço). Os principais aspectos do gerenciamento de uma carga de trabalho incluem integração, desligamento e modificação de instâncias do cliente. Essas práticas simplificam as operações e aprimoram 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 de ciclo de vida do cliente é crucial para qualquer aplicativo SaaS. Normalmente, esses eventos incluem:
- Integração: Quando um cliente se inscreve.
- Alterar: Quando a instância de um cliente é modificada, como uma alteração no tipo de preço.
- Desativação: Quando um cliente cancela sua conta.
Você pode encontrar outros eventos de ciclo de vida. Por exemplo, você pode permitir que seus clientes pausem sua assinatura mantendo seus dados por um período definido e retomem sua assinatura mais tarde. Cada evento pode ter implicações exclusivas para seu aplicativo.
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 a orquestração da implantação da infraestrutura do Azure, do código do aplicativo e da 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 funcionalidade para uma solução ou aplicativo de plano de controle formalizado.
Considerações sobre o design
Consistência. Ao planejar sua estratégia de gerenciamento de ciclo de vida, considere a complexidade das ações necessárias para cada evento de ciclo de vida do cliente. Essas ações incluem o tamanho da solução, da base de clientes e da sobrecarga organizacional. Tenha uma compreensão clara das etapas necessárias para cada evento e invista em controles para manter a consistência. Examine e atualize regularmente seus processos para ajudar a garantir que eles permaneçam válidos à medida que sua solução evolui.
Modelo de locação. Sua abordagem para lidar com eventos de ciclo de vida do cliente depende do seu modelo de locação.
Soluções totalmente multitenant que dispõem de recursos de infraestrutura. A integração ou o desligamento de um cliente normalmente inclui a atualização de uma lista de clientes e os dados associados no banco de dados do aplicativo.
Recursos dedicados por cliente. As tarefas normalmente 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 desligamento.
Níveis. Considere seu modelo de preços e as diferentes necessidades de infraestrutura de cada camada, especialmente se você permitir que os clientes alterem livremente seu SKU a qualquer momento. Por exemplo, se sua solução SaaS incluir um aplicativo principal e vários módulos complementares pagos, verifique se os recursos do aplicativo principal foram implantados durante a integração. Além disso, permita a adição dinâmica e a remoção de módulos de complemento. 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 no design da solução. Instruções claras ajudam os operadores humanos a manter a consistência e servem como base para automação futura. |
| Comunique a responsabilidade compartilhada entre você e seu cliente para cada evento do ciclo de vida. Comunique-se de forma clara e antecipada sobre quais ações você espera que os clientes executem para concluir um estágio de 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 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 com mais facilidade e evitar falhas de implantação. |
| Automatize seus eventos de ciclo de vida quando prático. Para soluções de baixo volume ou em estágio 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 de ciclo de vida. À medida que sua solução amadurece, integre essas responsabilidades em um plano de controle completo para reduzir o erro humano e oferecer suporte a uma escala maior. |
Você pode reduzir o risco significativo de erro humano e oferecer suporte a uma escala maior. |
Planeje sua estratégia de gerenciamento de infraestrutura
Desenvolva uma estratégia para implantar, manter e gerenciar a infraestrutura do Azure desde o início. À medida que você dimensiona seu SaaS, o número de recursos aumenta. É 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 sobre o design
Gerenciamento 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 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. Essa estratégia é fácil no início, mas não é bem dimensionada ao longo do tempo. Planeje automatizar sua configuração de infraestrutura usando ferramentas de IaC (infraestrutura como código), como o Bicep ou o Terraform. Para requisitos mais complexos, crie um painel de controle que use APIs do Azure Resource Manager diretamente.
Atribuição de infraestrutura. Acompanhe quais clientes estão implantados em qual infraestrutura. O rastreamento é importante para o planejamento preciso da capacidade e a atribuição de custos. Você pode acompanhar a infraestrutura do cliente centralmente em um banco de dados do cliente. Ou para infraestrutura dedicada, use metadados de recursos do Azure com grupos de recursos específicos do cliente e marcas de recurso. Para obter mais informações, consulte Organização de recursos para cargas de trabalho de 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. | Ferramentas familiares reduzem o risco de erros porque a automação de infraestrutura pode ser disruptiva se as ferramentas não forem compreendidas. |
| Implante sua infraestrutura usando IaC quando possível. | A IaC ajuda a reduzir a manutenção manual, que se torna mais arriscada e mais pesada à medida que a quantidade de infraestrutura aumenta. |
| Separe a infraestrutura principal da infraestrutura no nível do cliente. | Diferentes tipos de infraestrutura têm ciclos de vida e atividades de gerenciamento 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 aprimorar 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 sobre o design
Padronize ferramentas e processos. As ferramentas de DevOps comprovadas pelo setor ajudam a garantir a consistência entre funções e a maturidade em processos 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 as práticas de desenvolvimento de software OE:03.
Compensação: complexidade e custo. Ferramentas de DevOps familiares podem ser econômicas em termos de dinheiro e habilidades. No entanto, eles adicionam a carga operacional de gerenciar cada ferramenta separadamente. É importante permanecer aberto a novas inovações tecnológicas que possam beneficiar sua carga de trabalho.
Implantar atualizações progressivamente. Distribuir atualizações aos 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 controle de versão. 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 a automação. Implantações manuais são propensas a riscos devido a erros humanos e falta de consistência. Mesmo que suas implantações sejam disparadas manualmente, você deve automatizar o processo de implantação o máximo possível e exigir supervisão humana mínima. Considere as etapas do processo de implantação e a melhor forma de 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 um plano de ação se algum teste falhar em qualquer estágio.
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 do cliente. 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 pelo 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 as práticas de desenvolvimento de software OE:03. |
Essa estratégia pode ajudar a garantir que sua equipe de engenharia implante aplicativos efetivamente por não precisar 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 implantem atualizações nos grupos de clientes utilizando estratégias como exposição progressiva e modelos de saúde. Comece com clientes menos sensíveis ou mais precoces antes de migrar para uma base de clientes mais ampla. Para obter mais informações, confira Recomendações para práticas de implantação segura. |
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 para 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 para como preterir versões antigas. Minimize o número de versões do aplicativo que são 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 a carga de manutenção. |
| Tenha um plano de reversão para implantações com falha, incluindo critérios para disparar 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 seu aplicativo regularmente e em vários estágios do processo de desenvolvimento de software. Adote uma mentalidade shift-left e identifique bugs e desvios de processo 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 de arquitetura para a implantação e a configuração de soluções de multilocatário
- Considerações sobre a atualização de uma solução multilocatário
- Considerações sobre planos de controle multilocatários
- Abordagens de arquitetura para planos de controle em soluções multilocatário
Próxima etapa
Saiba mais sobre considerações de gerenciamento de incidentes para implementar processos e ferramentas que dão suporte a uma solução SaaS no Azure.