Partilhar via


Estratégias de arquitetura para otimizar tarefas operacionais

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

PE:10 Otimize as 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. A otimização de tarefas operacionais é o processo de minimizar os efeitos das tarefas que você executa como parte das operações de carga de trabalho de rotina. As atividades operacionais usam os mesmos recursos de computação que a própria carga de trabalho. A falha em considerar os efeitos das tarefas operacionais 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

Período Definição
Estratégia de implantação azul-verde 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).
Reconstrução do índice do banco de dados Uma atividade de manutenção que elimina e recria um índice.
Reorganização do índice de banco de dados Uma atividade de manutenção que otimiza o índice do banco de dados atual.
Esquema do banco de dados A estrutura geral de uma base de dados e as suas relações com outros dados.
Ranhura de implementação Um recurso do Azure App Service que permite implantar aplicações ao vivo com seus próprios nomes de host.
Atualizações no local O processo de atualizar um componente ou um aplicativo sem substituí-lo ou migrá-lo para um novo ambiente.
Infraestrutura como código (IaC) Um modelo descritivo para definir e implantar infraestrutura, incluindo redes, máquinas virtuais, balanceadores de carga e topologias de conexão.

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 reconstruçã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 rotineiras, regulares e ad hoc em metas de desempenho, você pode garantir que a carga de trabalho opere de forma eficiente. Para ter em conta as tarefas operacionais nas metas de desempenho, eis alguns pontos-chave a considerar:

  • Identificar tarefas operacionais. Identificar e incluir tarefas operacionais relevantes nas metas de desempenho. Exemplos de tarefas de rotina podem incluir verificação de vírus, reorganização do índice do banco de dados, reconstrução do índice do banco de dados, backups de disco ou banco de dados, rotações de certificados, aplicação de patches em um sistema operacional, rotação de senhas, rotação de chaves de API, testes 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 levar em conta as 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.

Otimize implantações

A otimização de implantações refere-se ao refinamento do processo de liberação de recursos e código para garantir um desempenho contínuo e interrupções mínimas. Isso envolve planejamento, distribuição eficaz de recursos e testes completos da infraestrutura como código (IaC) e do código do aplicativo antes de serem introduzidos em um ambiente dinâmico. As inadequações de implantação podem levar à redução da velocidade e da eficiência de uma carga de trabalho, a possíveis restrições de recursos e a uma experiência de usuário comprometida no ambiente 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 o uso de técnicas como implementações azul-verde ou canárias, onde se lançam gradualmente novas versões das aplicações enquanto se monitorizam possíveis problemas. Essas estratégias ajudam a minimizar o efeito do tempo de inatividade e garantem uma experiência de usuário perfeita.

Implante na contagem de instâncias atual. Você também deve evitar implementações que causem operações de escala imediata. Você não deve implantar recursos em um sistema ativo com uma contagem de instâncias tão baixa que force o sistema a executar imediatamente uma operação de escala. Por exemplo, seu modelo de infraestrutura como código (IaC) pode não corresponder ao número de instâncias necessárias no momento da implantação. Pode ter uma contagem de instâncias de duas, mesmo que o ambiente atual implantado esteja a executar 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 do 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 detetado no ambiente verde, você poderá reverter facilmente para o ambiente azul estável. Essa estratégia ajuda a garantir um tempo de inatividade mínimo e permite que você mantenha 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) ao lado do ambiente existente (azul) com a versão atualizada do seu aplicativo.

  • Valide o novo ambiente. As implantações podem introduzir latência e aumentar os tempos de resposta. Considere as instâncias de pré-aquecimento antes do corte. O pré-aquecimento envolve a preparação do novo ambiente simulando o tráfego e a carga de trabalho semelhantes aos da produção para garantir que o ambiente esteja pronto para lidar com a carga esperada. 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.

  • Mude gradualmente o tráfego. Depois que o novo ambiente for pré-aquecido e validado, mude gradualmente o tráfego de produção do ambiente antigo (azul) para o novo ambiente (verde). Inicialmente, direcione uma pequena porcentagem do 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 que você identifique quaisquer problemas de desempenho com antecedência e tome ações corretivas antes de fazer a transição completa da carga de trabalho para o novo ambiente.

  • Monitore e otimize. As implantações podem usar recursos de computação compartilhados. Monitore continuamente o desempenho e a integridade do novo ambiente depois de mudar 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 bem-sucedida 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 os novos ambientes estejam livres de desvio de configuração.

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

Use várias compilações. Diferentes tipos de compilações podem ajudá-lo a otimizar os tempos de compilação e garantir a qualidade das implantações. Por exemplo, você pode ter compilações de integração contínua (CI) que são acionadas a cada confirmação de código. Você pode ter builds noturnos que executam testes automatizados regularmente e builds de lançamento que são usados para implantação na produção. Cada tipo de compilação deve ter uma finalidade específica, como integração contínua, testes automatizados 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 a necessidade de reimplantar o aplicativo. Os sinalizadores de recursos funcionam introduzindo 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 para um subconjunto de usuários ou habilitar recursos para grupos específicos para teste (teste canário).

Otimize as atualizações

Uma atualização local é uma atualização para um recurso ou aplicativo existente. As atualizações no local podem abrandar ou interromper temporariamente uma tarefa. É 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 surjam problemas durante o processo de atualização. É crucial fazer um backup completo de dados e configurações críticos 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 quaisquer ações necessárias que precisem tomar.

Compensação: Esperar para realizar atividades operacionais fora do horário de pico pode afetar a eficiência operacional. Pode ser menos conveniente ter o pessoal com o conjunto de habilidades certo trabalhando fora do horário de pico.

Otimize as ferramentas

Ferramentas essenciais para monitoramento da integridade de arquivos, verificação de vírus, deteção de intrusão 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 da ferramenta, ajustar a frequência de varredura e realocar recursos de computação. Para a verificação de vírus, você pode criar uma lista de exclusão relevante para minimizar a duração das verificações.

Otimize as operações do banco de dados

A otimização das operações do banco de dados refere-se ao processo de refinamento e ajuste fino das tarefas do banco de dados para garantir a máxima eficiência e a mínima utilização de recursos. Essas operações incluem tarefas como backups, alterações de esquema, ajuste de desempenho e monitoramento. Operações eficientes de banco de dados levam a respostas de consulta mais rápidas, sobrecarga do sistema reduzida e uma experiência geral mais suave para o 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, potencialmente afetando 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 que não seja de 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 mudança de esquema disponíveis para otimizar o processo. O arquivamento de dados e o particionamento podem ajudar a reduzir os efeitos das alterações de esquema.

Otimize as cópias de segurança

Os backups consomem recursos de carga de trabalho, como capacidade 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 realizar 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 snapshots podem consumir menos recursos do que os backups. Você deve considerar os recursos internos de backup e restauração da 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.

Otimize a monitorização e a depuração

Registro em log excessivo ou mal implementado, telemetria, instrumentação e captura e coleta de rastreamento distribuído 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 meio ambiente. Você não quer que esses processos degradem o desempenho. Você deve configurar ou desabilitar quaisquer processos cujos efeitos de desempenho superem seus benefícios.

Gestão do Azure

Contabilização de tarefas operacionais: o Azure DevOps é um conjunto de ferramentas e serviços de desenvolvimento que permitem às equipas planear, desenvolver, testar e fornecer software de forma eficiente. 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 de 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 oferecem suporte à rotação contínua de certificados ou à rotação secreta que minimiza os efeitos no desempenho.

Otimizando implantações: o App Service fornece slots de implantação. Você pode usar slots de implantação para implantar código em um ambiente que não seja de 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 Azure Traffic Manager 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 deslocamento de tráfego ou aquecimento de instância para reduzir os efeitos de desempenho da implantação.

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

Otimizando backups: alguns serviços de dados do Azure oferecem suporte a um impacto de desempenho de baixato-no para recuperação point-in-time e indexação. O Backup do Azure é uma solução de backup baseada em nuvem confiável e escalável 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 para um local secundário. Ele fornece replicação contínua e recursos de failover automatizado para minimizar o tempo de inatividade e os impactos no desempenho durante as operações de backup e recuperação de desastres.

Gerenciando a continuidade de negócios e a recuperação de desastres: você também pode usar o Centro de Continuidade de Negócios do Azure para simplificar o gerenciamento de backup e recuperação de desastres com uma interface Web unificada para configurar backups, definir políticas de proteção, monitorar operações e revisar configurações em diversos ambientes.

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

Consulte o conjunto completo de recomendações.