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. Monitorize e minimize os efeitos do ciclo de vida de desenvolvimento de software e outras operações de rotina no desempenho da carga de trabalho. Estas operações incluem análises de vírus, rotações secretas, cópias de segurança, reindexação de bases de dados e implementações. |
---|
Este guia descreve as recomendações para otimizar tarefas operacionais. Otimizar tarefas operacionais é o processo de minimizar os efeitos das tarefas que executa como parte das operações de encaminhamento de cargas de trabalho. As atividades de operações utilizam os mesmos recursos de computação que a própria carga de trabalho. A não consideração dos efeitos das tarefas de operações pode fazer com que a carga de trabalho falhe nos respetivos destinos de desempenho. Também pode afetar negativamente o desempenho da carga de trabalho para os seus clientes.
Definições
Termo | Definição |
---|---|
Implementação azul-verde | Uma estratégia de implementação que utiliza dois ambientes idênticos e controla a direção do tráfego para novas implementações (implementações verdes). |
Recompilação do índice de base de dados | Uma atividade de manutenção que cai e recria um índice. |
Reorganização do índice de base de dados | Uma atividade de manutenção que otimiza o índice de base de dados atual. |
Esquema da base de dados | A estrutura geral de uma base de dados e as respetivas relações com outros dados. |
Ranhura de implementação | Uma funcionalidade de Serviço de Aplicações do Azure que lhe permite implementar aplicações em direto com os seus próprios nomes de anfitrião. |
Atualizações no local | O processo de atualização de um componente ou de uma aplicação sem o substituir ou migrar para um novo ambiente. |
Infraestrutura como código (IaC) | Um modelo descritivo para definir e implementar a infraestrutura, incluindo redes, máquinas virtuais, balanceadores de carga e topologias de ligação. |
Principais estratégias de design
Tem de tomar medidas para reduzir os efeitos do ciclo de vida do 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 análises de vírus, rotações secretas, cópias de segurança, otimização de índices (reorganização ou reconstrução) e implementações, não degradam significativamente o desempenho da carga de trabalho.
Conta para tarefas operacionais
É importante considerar tarefas operacionais ao definir destinos de desempenho. Ao incorporar tarefas de rotina, regulares e ad-hoc em destinos de desempenho, pode garantir que a carga de trabalho funciona de forma eficiente. Para ter em conta as tarefas operacionais nos destinos de desempenho, eis alguns pontos-chave a considerar:
Identificar tarefas operacionais. Identifique e inclua tarefas operacionais relevantes em destinos de desempenho. Exemplos de tarefas de rotina podem incluir análise de vírus, reorganização do índice de base de dados, reconstrução de índices de bases de dados, cópias de segurança de discos ou bases de dados, rotações de certificados, aplicação de patches de um sistema operativo, rotação de palavras-passe, chaves de API rotativas, testes de penetração e revisões de auditoria na produção.
Avalie os destinos de desempenho. Avalie os destinos de desempenho atuais e ajuste-os para ter em conta as tarefas operacionais específicas da carga de trabalho. Ao fazê-lo, garante que os destinos de desempenho estão alinhados com os requisitos operacionais da carga de trabalho.
Otimizar implementações
Otimizar implementações refere-se à refinação do processo de libertação de recursos e código para garantir um desempenho totalmente integrado e interrupções mínimas. Envolve planeamento, distribuição eficaz de recursos e testes minuciosos da infraestrutura como do código (IaC) e do código da aplicação antes de serem introduzidos num ambiente dinâmico. As insuficiências de implementação podem levar a uma velocidade e eficiência reduzidas de uma carga de trabalho, potenciais restrições de recursos e uma experiência de utilizador comprometida na definição operacional. Para otimizar implementações, considere estas estratégias:
Avalie o período de indisponibilidade aceitável. Se o período de indisponibilidade for aceitável, pode implementar estratégias de implementação que priorizem a velocidade e a eficiência. No entanto, é importante avaliar cuidadosamente o efeito do período de indisponibilidade nos requisitos empresariais antes de tomar essa decisão. Por outro lado, se o período de inatividade não for aceitável, terá de implementar estratégias de implementação que garantam a disponibilidade contínua da carga de trabalho. Considere utilizar técnicas como implementações verde-azulada ou implementações canárias, onde implementa gradualmente novas versões da carga de trabalho enquanto monitoriza os problemas. Estas estratégias ajudam a minimizar o efeito do tempo de inatividade e a garantir uma experiência de utilizador totalmente integrada.
Implementar na contagem de instâncias atuais. Também deve evitar implementações que causem operações de dimensionamento imediato. Não deve implementar recursos num sistema dinâmico com uma contagem de instâncias tão baixa que força o sistema a executar imediatamente uma operação de dimensionamento. Por exemplo, o modelo de infraestrutura como código (IaC) pode não corresponder ao número de instâncias de que precisa no momento da implementação. Pode ter uma contagem de instâncias de duas, embora o ambiente implementado atual esteja a executar oito instâncias. A implementação removeria seis instâncias e afetaria negativamente o desempenho.
Utilize uma estratégia de implementação azul-verde. As implementações podem causar interrupções de serviço e tempo de inatividade. Para mitigar estes problemas, selecione uma estratégia de implementação que minimize o impacto no desempenho, como uma implementação azul-verde. Estas abordagens permitem transições totalmente integradas entre ambientes e reduzem o risco de interrupções do serviço. Quando utiliza a abordagem de implementação azul-verde, tem dois ambientes separados: os ambientes azul e verde. Se forem detetados problemas ou degradação do desempenho no ambiente verde, pode reverter facilmente para o ambiente azul estável. Esta estratégia ajuda-o a garantir um período de indisponibilidade mínimo e permite-lhe manter um elevado nível de desempenho para a carga de trabalho. Para implementar com a abordagem azul-verde, siga estes passos gerais:
Implementar o novo ambiente. Configure o novo ambiente (verde) juntamente com o ambiente existente (azul) com a versão atualizada da sua aplicação.
Valide o novo ambiente. As implementações podem introduzir latência e aumentar os tempos de resposta. Considere pré-configurar instâncias antes da transferência. Pré-guerra envolve preparar o novo ambiente simulando tráfego e carga de trabalho semelhantes à produção para garantir que o ambiente está pronto para lidar com a carga esperada. Ajuda a minimizar os efeitos na latência e nos tempos de resposta. Teste e valide cuidadosamente o novo ambiente para garantir que funciona corretamente e cumpre as expectativas de desempenho. Os testes ajudam a aquecer as caches, a estabelecer conexões de banco de dados e a garantir que o ambiente está pronto para lidar com a carga esperada.
Deslocar gradualmente o tráfego. Depois de o novo ambiente estar pré-configurado e validado, mude gradualmente o tráfego de produção do ambiente antigo (azul) para o novo ambiente (verde). Inicialmente, direcione uma pequena percentagem de tráfego para o ambiente verde e aumente-o gradualmente após verificar a estabilidade e o estado de funcionamento esperado da aplicação. Pode utilizar um balanceador de carga global ou um mecanismo de gestão de tráfego. A mudança de tráfego controlada permite-lhe identificar quaisquer problemas de desempenho mais cedo e tomar medidas corretivas antes de fazer a transição completa da carga de trabalho para o novo ambiente.
Monitorizar e otimizar. As implementações podem utilizar recursos de computação partilhados. Monitorize continuamente o desempenho e o estado de funcionamento do novo ambiente depois de mudar de tráfego. Efetue as otimizações ou ajustes necessários para garantir o desempenho pretendido e a experiência do utilizador.
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 ligações existentes. Este passo ajuda a otimizar o custo da manutenção do ambiente antigo e garante que os novos ambientes estão livres de desfasamento de configuração.
Repita o processo. Para implementações futuras, inverta as funções dos ambientes azul e verde. Implemente alterações no novo ambiente azul, valide-as, orquestre a transição de tráfego e desative o ambiente verde antigo.
Utilize várias compilações. Diferentes tipos de compilações podem ajudá-lo a otimizar os tempos de compilação e a garantir a qualidade das implementações. Por exemplo, pode ter compilações de integração contínua (CI) que acionam com cada consolidação de código. Pode ter compilações noturnas que executam testes automatizados regularmente e compilações de versão que são utilizadas para implementar na produção. Cada tipo de compilação deve ter um objetivo específico, como integração contínua, testes automatizados ou implementação de produção. Os testes e a validação da carga de trabalho antes da implementação ajudam a identificar e resolver problemas ou erros no início do processo de desenvolvimento.
Considere sinalizadores de funcionalidades. Os sinalizadores de funcionalidades são utilizados no desenvolvimento de software para controlar a visibilidade e o comportamento de determinadas funcionalidades numa aplicação. Ao utilizar sinalizadores de funcionalidades, os programadores podem ativar ou desativar funcionalidades específicas sem precisarem de reimplementar a aplicação. Os sinalizadores de funcionalidades funcionam introduzindo a lógica condicional no código que determina se uma funcionalidade deve ser ativada ou desativada. Esta lógica pode basear-se em vários fatores, como funções de utilizador, preferências de utilizador ou condições específicas definidas pela equipa de desenvolvimento. Ao utilizar sinalizadores de funcionalidades, os programadores podem implementar gradualmente novas funcionalidades num subconjunto de utilizadores ou ativar funcionalidades para grupos específicos para testes (testes canários).
Otimizar atualizações
Uma atualização no local é uma atualização para um recurso ou aplicação existente. As atualizações no local podem abrandar ou interromper temporariamente uma carga de trabalho. É importante garantir que as atualizações são compatíveis com a carga de trabalho. Antes de aplicar uma atualização, recomendamos que a teste num ambiente separado para identificar eventuais problemas. Indique um plano de reversão caso surjam problemas durante o processo de atualização. É fundamental fazer uma cópia de segurança completa dos dados e configurações críticos antes de aplicar a atualização. Monitorize o sistema atualizado de perto após a atualização para garantir que tudo funciona conforme esperado. A cópia de segurança permite-lhe restaurar para um bom estado, se necessário. Deve atribuir prioridades ao agendamento da atualização fora das horas de ponta para minimizar o efeito no desempenho dos utilizadores e da carga de trabalho. Notifique antecipadamente os utilizadores sobre a atualização planeada, incluindo o período de indisponibilidade esperado e quaisquer ações necessárias que precisem de realizar.
Compromisso: a espera para realizar atividades de operações fora das horas de ponta pode afetar a eficiência operacional. Pode ser menos conveniente ter o pessoal com o conjunto de competências certo a trabalhar fora das horas de ponta.
Otimizar ferramentas
As ferramentas essenciais para monitorização da integridade dos ficheiros, deteção de vírus, deteção de intrusões e outras tarefas operacionais podem afetar o desempenho da carga de trabalho. Consomem recursos de computação e podem aumentar a latência e a sobrecarga de desempenho. Tem de testar e compreender os efeitos que as suas ferramentas têm no desempenho da carga de trabalho. Com base nos resultados do teste, deve ajustar as configurações das ferramentas, ajustar a frequência de análise e realocar os recursos de computação. Para a análise de vírus, pode criar uma lista de exclusão relevante para minimizar a duração das análises.
Otimizar as operações da base de dados
A otimização das operações de base de dados refere-se ao processo de refinação e otimização das tarefas da base de dados para garantir a eficiência máxima e a utilização mínima de recursos. Estas operações incluem tarefas como cópias de segurança, alterações de esquema, otimização do desempenho e monitorização. As operações de bases de dados eficientes levam a respostas de consultas mais rápidas, a uma sobrecarga reduzida do sistema e a uma experiência de utilizador globalmente mais suave.
As alterações de esquema envolvem modificar a estrutura de uma base de dados, como adicionar ou alterar tabelas, colunas ou índices. Estas alterações podem exigir processamento adicional e utilização de recursos durante o processo de implementação, afetando potencialmente o desempenho geral da carga de trabalho. As alterações de esquema podem interromper o desempenho de consultas ativas, índices ou transações ou fazer com que os dados fiquem indisponíveis.
Para minimizar estes efeitos, deve planear e testar as alterações de esquema num ambiente de não produção. Pode utilizar várias técnicas de implementação para implementar atualizações de esquema. Também deve utilizar as ferramentas de alteração de esquema disponíveis para otimizar o processo. Arquivar dados e criação de partições pode ajudar a reduzir os efeitos das alterações de esquema.
Otimizar cópias de segurança
As cópias de segurança consomem recursos de carga de trabalho, como energia de processamento, largura de banda de rede e E/S do disco. Tem de testar e selecionar uma estratégia de cópia de segurança que minimize estes efeitos. Deve efetuar cópias de segurança fora das horas de ponta quando puder. A sua estratégia deve incluir sempre cópias de segurança incrementais em vez de cópias de segurança completas. Os instantâneos podem ser menos intensivos em termos de recursos do que as cópias de segurança. Deve considerar as funcionalidades de cópia de segurança e restauro de plataformas incorporadas em vez de criar uma solução personalizada. Tem de testar estas opções e utilizar uma combinação que forneça o melhor desempenho para a sua carga de trabalho.
Otimizar a monitorização e a depuração
O registo, a telemetria, a instrumentação e a recolha de rastreio distribuídos excessivos ou mal implementados podem afetar o desempenho. Da mesma forma, as funcionalidades de conveniência, como a depuração remota, também podem afetar o desempenho. Tem de medir e conhecer os respetivos efeitos de desempenho no ambiente. Não quer que estes processos degradem o desempenho. Deve configurar ou desativar quaisquer processos cujos efeitos de desempenho superem os benefícios.
Facilitação do Azure
Contabilidade para 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. Inclui funcionalidades como controlo de versões, integração e entrega contínuas, gestão 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 no Azure Key Vault muitas vezes suportam a rotação de certificados totalmente integrada ou a rotação de segredos que minimiza os efeitos no desempenho.
Otimizar implementações: Serviço de Aplicações fornece blocos de implementação. Pode utilizar blocos de implementação para implementar código num ambiente de não produção. Pode trocar o conteúdo da aplicação e os elementos de configuração entre dois blocos de implementação. Por exemplo, pode mudar o conteúdo da aplicação de um bloco de não produção para o bloco de produção.
O Azure Front Door e o Gestor de Tráfego do Azure permitem-lhe implementar uma estratégia de implementação azul-verde. Alguns serviços de computação do Azure também suportam estratégias de implementação avançadas, como implementações azul-verde. Pode combinar esses serviços com a sua estratégia de mudança de tráfego ou de aquecimento de instâncias para mitigar os efeitos de desempenho da implementação.
Otimizar as operações da base de dados: SQL do Azure Base de Dados faz automaticamente cópias de segurança completas, cópias de segurança diferenciais e cópias de segurança de registo de transações. O Azure Cosmos DB faz automaticamente cópias de segurança dos seus dados em intervalos regulares. As cópias de segurança automáticas são efetuadas sem afetar o desempenho ou a disponibilidade das operações da base de dados. O Azure Cosmos DB armazena as cópias de segurança num serviço de armazenamento separado.
Otimizar cópias de segurança: alguns serviços de dados do Azure suportam um impacto de desempenho baixo para nenhum para recuperação e indexação para um ponto anterior no tempo. Azure Backup é uma solução de cópia de segurança fiável e dimensionável baseada na cloud que lhe permite proteger os seus dados e aplicações. Fornece funcionalidades como cópias de segurança incrementais, compressão e encriptação para minimizar os efeitos no desempenho durante as operações de cópia de segurança. O Azure Site Recovery ajuda-o a proteger as suas aplicações ao replicá-las para uma localização secundária. Fornece funcionalidades de replicação contínua e ativação pós-falha automatizada para minimizar o tempo de inatividade e os impactos de desempenho durante as operações de cópia de segurança e recuperação após desastre.
Ligações relacionadas
- Blocos de implementação
- Estratégia de implementação azul-verde
- Base de Dados SQL do Azure
- Azure Cosmos DB
Lista de verificação de Eficiência de Desempenho
Veja o conjunto completo de recomendações.