Recomendações para otimizar tarefas operacionais

Aplica-se a esta recomendação de lista de verificação de Eficiência de Desempenho do Azure Well-Architected Framework:

PE:10 Otimizar tarefas operacionais. Monitore e minimize os efeitos do ciclo de vida de desenvolvimento de software e outras operações de rotina no desempenho da carga de trabalho. Essas operações incluem verificações de vírus, rotações secretas, backups, reindexação de bancos de dados e implantações.

Este guia descreve as recomendações para otimizar tarefas operacionais. Otimizar tarefas operacionais é o processo de minimizar os efeitos das tarefas que você executa como parte do roteamento de operações de carga de trabalho. As atividades de operações usam os mesmos recursos de computação que a própria carga de trabalho. A falha ao considerar os efeitos das tarefas de operações pode fazer com que a carga de trabalho perca suas metas de desempenho. Também pode afetar negativamente o desempenho da carga de trabalho para seus clientes.

Definições

Termo Definição
Implantação "blue-green" Uma estratégia de implantação que usa dois ambientes idênticos e controla a direção do tráfego para novas implantações (implantações verdes).
Recompilação de índice de banco de dados Uma atividade de manutenção que descarta e recria um índice.
Reorganização de índice de banco de dados Uma atividade de manutenção que otimiza o índice de banco de dados atual.
Esquema de banco de dados A estrutura geral de um banco de dados e suas relações com outros dados.
Slot de implantação Um recurso de Serviço de Aplicativo do Azure que permite implantar aplicativos dinâmicos com seus próprios nomes de host.
Atualizações in-loco O processo de atualização de um componente ou de um aplicativo sem substituí-lo ou migrá-lo para um novo ambiente.
IaC (infraestrutura como código) Um modelo descritivo para definir e implantar a infraestrutura, incluindo redes, máquinas virtuais, balanceadores de carga e topologias de conexão.

Principais estratégias de design

Você precisa tomar medidas para reduzir os efeitos do ciclo de vida de desenvolvimento de software e outras operações de rotina no desempenho da carga de trabalho. O objetivo é garantir que as operações de rotina, como verificações de vírus, rotações secretas, backups, otimização de índice (reorganização ou recompilação) e implantações, não degradem significativamente o desempenho da carga de trabalho.

Conta para tarefas operacionais

É importante considerar as tarefas operacionais ao definir metas de desempenho. Ao incorporar tarefas de rotina, regulares e ad hoc em metas de desempenho, você pode garantir que a carga de trabalho funcione com eficiência. Para levar em conta as tarefas operacionais nas metas de desempenho, aqui estão alguns pontos importantes a serem considerados:

  • Identificar tarefas operacionais. Identifique e inclua tarefas operacionais relevantes em metas de desempenho. Exemplos de tarefas rotineiras podem incluir verificação de vírus, reorganização de índice de banco de dados, recompilação de índice de banco de dados, backups de disco ou banco de dados, rotações de certificado, aplicação de patch em um sistema operacional, rotação de senhas, rotação de chaves de API, teste de penetração e revisões de auditoria em produção.

  • Avalie as metas de desempenho. Avalie as metas de desempenho atuais e ajuste-as para considerar tarefas operacionais específicas da carga de trabalho. Isso garante que as metas de desempenho estejam alinhadas com os requisitos operacionais da carga de trabalho.

Otimizar implantações

Otimizar implantações refere-se à refinação do processo de liberação de recursos e código para garantir o desempenho contínuo e interrupções mínimas. Ele envolve planejamento, distribuição de recursos eficaz e testes completos da IaC (infraestrutura como código) e do código do aplicativo antes de serem introduzidos em um ambiente ativo. As inadequações de implantação podem levar a velocidade e eficiência reduzidas de uma carga de trabalho, possíveis restrições de recursos e uma experiência de usuário comprometida na configuração operacional. Para otimizar as implantações, considere estas estratégias:

Avalie o tempo de inatividade aceitável. Se o tempo de inatividade for aceitável, você poderá implementar estratégias de implantação que priorizem a velocidade e a eficiência. No entanto, é importante avaliar cuidadosamente o efeito do tempo de inatividade nos requisitos de negócios antes de tomar essa decisão. Por outro lado, se o tempo de inatividade não for aceitável, você precisará implementar estratégias de implantação que garantam a disponibilidade contínua da carga de trabalho. Considere usar técnicas como implantações azul-verde ou implantações canário, em que você distribui gradualmente novas versões da carga de trabalho enquanto monitora problemas. Essas estratégias ajudam a minimizar o efeito do tempo de inatividade e garantir uma experiência perfeita do usuário.

Implantar na contagem de instâncias atual. Você também deve evitar implantações que causem operações de escala imediatas. Você não deve implantar recursos em um sistema dinâmico com uma contagem de instâncias tão baixa que força o sistema a executar imediatamente uma operação de escala. Por exemplo, seu modelo de IaC (infraestrutura como código) pode não corresponder ao número de instâncias necessárias no momento da implantação. Ele pode ter uma contagem de instâncias de duas, mesmo que o ambiente implantado atual esteja executando oito instâncias. A implantação removeria seis instâncias e afetaria negativamente o desempenho.

Use uma estratégia de implantação azul-verde. As implantações podem causar interrupções de serviço e tempo de inatividade. Para atenuar esses problemas, selecione uma estratégia de implantação que minimize o impacto no desempenho, como uma implantação azul-verde. Essas abordagens permitem transições perfeitas entre ambientes e reduzem o risco de interrupções de serviço. Ao usar a abordagem de implantação azul-verde, você tem dois ambientes separados: os ambientes azul e verde. Se algum problema ou degradação de desempenho for detectado no ambiente verde, você poderá reverter facilmente para o ambiente azul estável. Essa estratégia ajuda você a garantir um tempo de inatividade mínimo e permite manter um alto nível de desempenho para sua carga de trabalho. Para implantar usando a abordagem azul-verde, siga estas etapas gerais:

  • Implante o novo ambiente. Configure o novo ambiente (verde) junto com o ambiente existente (azul) com a versão atualizada do aplicativo.

  • Valide o novo ambiente. As implantações podem introduzir latência e aumentar os tempos de resposta. Considere a precafinição de instâncias antes da substituição. O pré-teste envolve a preparação do novo ambiente simulando o tráfego e a carga de trabalho semelhantes à produção para garantir que o ambiente esteja pronto para lidar com a carga esperada. Ele ajuda a minimizar os efeitos na latência e nos tempos de resposta. Teste e valide completamente o novo ambiente para garantir que ele funcione corretamente e atenda às expectativas de desempenho. O teste ajuda a aquecer caches, estabelecer conexões de banco de dados e garantir que o ambiente esteja pronto para lidar com a carga esperada.

  • Deslocar o tráfego gradualmente. Depois que o novo ambiente estiver pré-armado e validado, mude gradualmente o tráfego de produção do ambiente antigo (azul) para o novo ambiente (verde). Inicialmente, direcione um pequeno percentual de tráfego para o ambiente verde e aumente-o gradualmente depois de verificar sua estabilidade e a integridade esperada do aplicativo. Você pode usar um balanceador de carga global ou um mecanismo de gerenciamento de tráfego. A mudança de tráfego controlada permite identificar problemas de desempenho antecipadamente e executar ações corretivas antes de fazer a transição completa da carga de trabalho para o novo ambiente.

  • Monitorar e otimizar. As implantações podem usar recursos de computação compartilhados. Monitore continuamente o desempenho e a integridade do novo ambiente depois de deslocar o tráfego. Faça as otimizações ou ajustes necessários para garantir o desempenho desejado e a experiência do usuário.

  • Remova o ambiente antigo. Depois de fazer a transição com êxito de todo o tráfego para o ambiente verde, remova o ambiente azul das conexões existentes. Esta etapa ajuda a otimizar o custo de manutenção do ambiente antigo e garante que novos ambientes estejam livres de descompasso de configuração.

  • Repita o processo. Para implantações futuras, inverta as funções dos ambientes azul e verde. Implante alterações no novo ambiente azul, valide-as, orquestre a transição de tráfego e desative o ambiente verde antigo.

Use várias compilações. Diferentes tipos de builds podem ajudá-lo a otimizar os tempos de build e garantir a qualidade das implantações. Por exemplo, você pode ter builds de CI (integração contínua) que são disparados com cada confirmação de código. Você pode ter builds noturnos que executam testes automatizados regularmente e ver builds que são usados para implantação em produção. Cada tipo de build deve ter uma finalidade específica, como integração contínua, teste automatizado ou implantação de produção. O teste e a validação da carga de trabalho antes da implantação ajudam a identificar e resolver problemas ou bugs no início do processo de desenvolvimento.

Considere sinalizadores de recursos. Os sinalizadores de recursos são usados no desenvolvimento de software para controlar a visibilidade e o comportamento de determinados recursos em um aplicativo. Usando sinalizadores de recursos, os desenvolvedores podem habilitar ou desabilitar recursos específicos sem precisar reimplantar o aplicativo. Os sinalizadores de recursos funcionam introduzindo a lógica condicional no código que determina se um recurso deve ser habilitado ou desabilitado. Essa lógica pode ser baseada em vários fatores, como funções de usuário, preferências do usuário ou condições específicas definidas pela equipe de desenvolvimento. Usando sinalizadores de recursos, os desenvolvedores podem implantar gradualmente novos recursos em um subconjunto de usuários ou habilitar recursos para grupos específicos para teste (teste canário).

Otimizar atualizações

Uma atualização in-loco é uma atualização para um recurso ou aplicativo existente. As atualizações in-loco podem reduzir ou interromper temporariamente uma carga de trabalho. É importante garantir que as atualizações sejam compatíveis com a carga de trabalho. Antes de aplicar uma atualização, recomendamos testá-la em um ambiente separado para identificar possíveis problemas. Forneça um plano de reversão caso ocorram problemas durante o processo de atualização. É crucial fazer um backup completo de dados críticos e configurações antes de aplicar a atualização. Monitore o sistema atualizado de perto após a atualização para garantir que tudo funcione conforme o esperado. O backup permite que você restaure para um bom estado, se necessário. Você deve priorizar o agendamento da atualização fora do horário de pico para minimizar o efeito sobre os usuários e o desempenho da carga de trabalho. Notifique os usuários com antecedência sobre a atualização planejada, incluindo o tempo de inatividade esperado e as ações necessárias que eles precisam executar.

Compensação: aguardar para executar atividades de operações fora do horário de pico pode afetar a eficiência operacional. Pode ser menos conveniente ter o pessoal com o trabalho certo durante os horários de pico.

Otimizar ferramentas

Ferramentas essenciais para monitoramento de integridade de arquivos, verificação de vírus, detecção de intrusões e outras tarefas operacionais podem afetar o desempenho da carga de trabalho. Eles consomem recursos de computação e podem adicionar latência e sobrecarga de desempenho. Você precisa testar e entender os efeitos que suas ferramentas têm no desempenho da carga de trabalho. Com base nos resultados do teste, você deve ajustar as configurações de ferramenta, ajustar a frequência de verificação e realocar recursos de computação. Para verificação de vírus, você pode criar uma lista de exclusão relevante para minimizar a duração das verificações.

Otimizar operações de banco de dados

Otimizar operações de banco de dados refere-se ao processo de refinação e ajuste de tarefas de banco de dados para garantir a máxima eficiência e a utilização mínima de recursos. Essas operações incluem tarefas como backups, alterações de esquema, ajuste de desempenho e monitoramento. Operações de banco de dados eficientes levam a respostas de consulta mais rápidas, sobrecarga reduzida do sistema e uma experiência geral mais suave do usuário.

As alterações de esquema envolvem a modificação da estrutura de um banco de dados, como adicionar ou alterar tabelas, colunas ou índices. Essas alterações podem exigir processamento extra e utilização de recursos durante o processo de implantação, afetando potencialmente o desempenho geral da carga de trabalho. As alterações de esquema podem interromper o desempenho de consultas, índices ou transações ativas ou fazer com que os dados fiquem indisponíveis.

Para minimizar esses efeitos, você deve planejar e testar alterações de esquema em um ambiente de não produção. Você pode usar várias técnicas de implantação para implementar atualizações de esquema. Você também deve usar as ferramentas de alteração de esquema disponíveis para otimizar o processo. O arquivamento de dados e particionamento pode ajudar a reduzir os efeitos das alterações de esquema.

Otimizar backups

Os backups consomem recursos de carga de trabalho, como energia de processamento, largura de banda de rede e E/S de disco. Você precisa testar e selecionar uma estratégia de backup que minimize esses efeitos. Você deve executar backups fora do horário de pico quando puder. Sua estratégia deve incluir backups incrementais em vez de backups completos a cada vez. Os instantâneos podem ser menos intensivos em recursos do que os backups. Você deve considerar os recursos internos de backup e restauração de plataforma em vez de criar uma solução personalizada. Você precisa testar essas opções e usar uma combinação que forneça o melhor desempenho para sua carga de trabalho.

Otimizar o monitoramento e a depuração

O registro em log, a telemetria, a instrumentação e a coleta de rastreamento distribuídos ou excessivamente implementados podem afetar o desempenho. Da mesma forma, recursos de conveniência como depuração remota também podem afetar o desempenho. Você precisa medir e conhecer seus efeitos de desempenho no ambiente. Você não quer que esses processos degradem o desempenho. Você deve configurar ou desabilitar todos os processos cujos efeitos de desempenho superam seus benefícios.

Facilitação do Azure

Contabilização de tarefas operacionais: o Azure DevOps é um conjunto de ferramentas e serviços de desenvolvimento que permitem que as equipes planejem, desenvolvam, testem e forneçam software com eficiência. Ele inclui recursos como controle de versão, integração e entrega contínuas, gerenciamento de projetos e muito mais.

O Azure fornece integração serviço a serviço que minimiza os efeitos de muitas tarefas operacionais. Por exemplo, os serviços que se integram ao Azure Key Vault geralmente dão suporte à rotação contínua de certificados ou à rotação de segredos que minimiza os efeitos no desempenho.

Otimizando implantações: Serviço de Aplicativo fornece slots de implantação. Você pode usar slots de implantação para implantar código em um ambiente de não produção. Você pode trocar o conteúdo do aplicativo e os elementos de configuração entre dois slots de implantação. Por exemplo, você pode alternar o conteúdo do aplicativo de um slot de não produção para o slot de produção.

O Azure Front Door e o Gerenciador de Tráfego do Azure permitem implementar uma estratégia de implantação azul-verde. Alguns serviços de computação do Azure também dão suporte a estratégias avançadas de implantação, como implantações azul-verde. Você pode combinar esses serviços com sua estratégia de mudança de tráfego ou aquecimento de instância para atenuar os efeitos de desempenho da implantação.

Otimizando operações de banco de dados: SQL do Azure Banco de Dados realiza automaticamente backups completos, backups diferenciais e backups de log de transações. O Azure Cosmos DB faz backups de seus dados automaticamente em intervalos regulares. Os backups automáticos são feitos sem afetar o desempenho ou a disponibilidade das operações de banco de dados. O Azure Cosmos DB armazena os backups em um serviço de armazenamento separado.

Otimização de backups: alguns serviços de dados do Azure dão suporte a impacto de baixo para nenhum desempenho para a indexação e a recuperação pontual. Backup do Azure é uma solução de backup confiável e escalonável baseada em nuvem que permite proteger seus dados e aplicativos. Ele fornece recursos como backups incrementais, compactação e criptografia para minimizar os efeitos no desempenho durante as operações de backup. O Azure Site Recovery ajuda você a proteger seus aplicativos replicando-os em um local secundário. Ele fornece replicação contínua e recursos de failover automatizados para minimizar os impactos de tempo de inatividade e desempenho durante operações de backup e recuperação de desastre.

Lista de verificação de eficiência de desempenho

Consulte o conjunto completo de recomendações.