Partilhar via


Práticas sustentáveis de engenharia de software no Serviço Kubernetes do Azure (AKS)

Os princípios de engenharia de software sustentável são um conjunto de competências para ajudá-lo a definir, construir e executar aplicativos sustentáveis. O objetivo geral é reduzir a pegada de carbono em todos os aspetos da sua aplicação. A orientação do Azure Well-Architected Framework para sustentabilidade está alinhada com os Princípios de Engenharia de Software Sustentável da Green Software Foundation e fornece uma visão geral dos princípios da engenharia de software sustentável.

A engenharia de software sustentável é uma mudança de prioridades e foco. Em muitos casos, a forma como a maioria dos softwares é projetada e executada destaca o desempenho rápido e a baixa latência. A engenharia de software sustentável concentra-se em reduzir ao máximo as emissões de carbono.

  • A aplicação de princípios sustentáveis de engenharia de software pode proporcionar um desempenho mais rápido ou menor latência, como a redução da travessia total da rede.
  • A redução das emissões de carbono pode causar um desempenho mais lento ou maior latência, como o adiamento de cargas de trabalho de baixa prioridade.

As orientações a seguir se concentram nos serviços que você está criando ou operando no Azure com o Serviço Kubernetes do Azure (AKS). Este artigo inclui listas de verificação de projeto e configuração, práticas de projeto recomendadas e opções de configuração. Antes de aplicar princípios sustentáveis de engenharia de software ao seu aplicativo, revise as prioridades, necessidades e compensações do seu aplicativo.

Pré-requisitos

  • Compreender a orientação de sustentabilidade do Well-Architected Framework pode ajudá-lo a produzir uma arquitetura de nuvem de alta qualidade, estável e eficiente. Recomendamos que você comece lendo mais sobre cargas de trabalho sustentáveis e revisando sua carga de trabalho usando a avaliação do Microsoft Azure Well-Architected Review .
  • É crucial que você tenha requisitos de negócios claramente definidos ao criar aplicativos, pois eles podem ter um impacto direto nas arquiteturas e configurações de cluster e carga de trabalho. Ao criar ou atualizar aplicativos existentes, revise as áreas de design de sustentabilidade do Well-Architected Framework, juntamente com o ciclo de vida holístico do seu aplicativo.

Compreender o modelo de responsabilidade partilhada

A sustentabilidade é uma responsabilidade compartilhada entre o provedor de nuvem e o cliente ou parceiro que projeta e implanta clusters AKS na plataforma. A implantação do AKS não o torna automaticamente sustentável, mesmo que os data centers sejam otimizados para a sustentabilidade. Aplicativos que não são otimizados corretamente ainda podem emitir mais carbono do que o necessário.

Saiba mais sobre o modelo de responsabilidade compartilhada para a sustentabilidade.

Estruturar princípios

  • Eficiência de carbono: Emitir a menor quantidade de carbono possível.

    Um aplicativo em nuvem com eficiência em carbono é aquele que é otimizado, e o ponto de partida é a otimização de custos.

  • Eficiência Energética: Utilize a menor quantidade de energia possível.

    Uma maneira de aumentar a eficiência energética é executar o aplicativo no menor número possível de servidores com os servidores rodando na taxa de utilização mais alta, aumentando também a eficiência do hardware.

  • Eficiência de hardware: Use a menor quantidade possível de carbono incorporado.

    Existem duas abordagens principais para a eficiência de hardware:

    • Para dispositivos de utilizador final, está a prolongar a vida útil do hardware.
    • Para a computação em nuvem, está aumentando a utilização de recursos.
  • Consciência de carbono: Faça mais quando a eletricidade estiver mais limpa e faça menos quando a eletricidade estiver mais suja.

    Ter consciência do carbono significa responder a mudanças na intensidade do carbono aumentando ou diminuindo sua demanda.

Padrões e práticas de design

Antes de analisar as recomendações detalhadas em cada uma das áreas de projeto, recomendamos que você considere cuidadosamente os seguintes padrões de projeto para criar cargas de trabalho sustentáveis no AKS:

Padrão de estruturação Aplica-se à carga de trabalho Aplica-se ao cluster
Projeto para dimensionamento independente de componentes lógicos ✔️
Design para dimensionamento orientado a eventos ✔️
Visar um design sem estado ✔️
Habilitar atualizações automáticas de cluster e nó ✔️
Instalar complementos e extensões suportados ✔️ ✔️
Contentores da sua carga de trabalho quando aplicável ✔️
Utilize hardware energeticamente eficiente ✔️
Corresponda às necessidades de escalabilidade e utilize recursos de dimensionamento automático e bursting ✔️
Desative cargas de trabalho e pools de nós fora do horário comercial ✔️ ✔️
Excluir recursos não utilizados ✔️ ✔️
Marque seus recursos ✔️ ✔️
Otimizar a utilização do armazenamento ✔️ ✔️
Escolha uma região mais próxima dos usuários ✔️
Reduzir a travessia de rede entre nós ✔️
Avaliar usando uma malha de serviço ✔️
Otimizar a coleta de logs ✔️ ✔️
Armazenar dados estáticos em cache ✔️ ✔️
Avaliar se deve usar a terminação TLS ✔️ ✔️
Use ferramentas e controles de segurança de rede nativos da nuvem ✔️ ✔️
Procurar vulnerabilidades ✔️ ✔️

Design da aplicação

Explore esta seção para saber mais sobre como otimizar seus aplicativos para um design de aplicativo mais sustentável.

Projeto para dimensionamento independente de componentes lógicos

Uma arquitetura de microsserviço pode reduzir os recursos de computação necessários, pois permite o dimensionamento independente de seus componentes lógicos e garante que eles sejam dimensionados de acordo com a demanda.

  • Considere usar o Dapr Framework ou outros projetos CNCF para ajudá-lo a separar a funcionalidade do aplicativo em diferentes microsserviços e permitir o dimensionamento independente de seus componentes lógicos.

Design para dimensionamento orientado a eventos

Ao dimensionar sua carga de trabalho com base em métricas de negócios relevantes, como solicitações HTTP, comprimento da fila e eventos na nuvem, você pode ajudar a reduzir a utilização de recursos e as emissões de carbono.

  • Use o Keda ao criar aplicativos orientados a eventos para permitir a redução para zero quando não houver demanda.

Visar um design sem estado

A remoção do estado do design reduz os dados na memória ou no disco exigidos pela carga de trabalho para funcionar.

  • Considere o design sem monitoração de estado para reduzir a carga desnecessária da rede, o processamento de dados e os recursos de computação.

Plataforma de aplicação

Explore esta seção para saber como tomar decisões mais bem informadas relacionadas à plataforma em torno da sustentabilidade.

Habilitar atualizações automáticas de cluster e nó

Um cluster atualizado evita problemas de desempenho desnecessários e garante que você se beneficie das mais recentes melhorias de desempenho e otimizações de computação.

Instalar complementos e extensões suportados

Os complementos e extensões cobertos pela política de suporte do AKS fornecem mais funcionalidades suportadas para o seu cluster, permitindo que você se beneficie das mais recentes melhorias de desempenho e otimizações de energia durante todo o ciclo de vida do cluster.

Contentores da sua carga de trabalho quando aplicável

Os contêineres permitem reduzir a alocação desnecessária de recursos e fazer melhor uso dos recursos implantados, pois permitem o empacotamento de compartimentos e exigem menos recursos de computação do que as máquinas virtuais.

  • Use o Draft para simplificar a conteinerização de aplicativos gerando Dockerfiles e manifestos do Kubernetes.

Utilize hardware energeticamente eficiente

Os processadores nativos de nuvem da Ampere são projetados exclusivamente para atender às necessidades de alto desempenho e eficiência energética da nuvem.

  • Avalie se os nós com processadores baseados em Ampere Altra Arm são uma boa opção para suas cargas de trabalho.

Corresponda às necessidades de escalabilidade e utilize recursos de dimensionamento automático e bursting

Um cluster superdimensionado não maximiza a utilização de recursos de computação e pode levar a um desperdício de energia. Separe seus aplicativos em pools de nós diferentes para permitir o dimensionamento correto do cluster e o dimensionamento independente de acordo com os requisitos do aplicativo. À medida que você fica sem capacidade em seu cluster AKS, cresça de AKS para ACI para expandir pods extras para nós sem servidor e garantir que sua carga de trabalho use todos os recursos alocados de forma eficiente.

Desative cargas de trabalho e pools de nós fora do horário comercial

As cargas de trabalho podem não precisar ser executadas continuamente e podem ser desativadas para reduzir o desperdício de energia e as emissões de carbono. Você pode desativar completamente (parar) seus pools de nós em seu cluster AKS, permitindo que você também economize em custos de computação.

  • Use o stop/start do pool de nós para desativar os pools de nós fora do horário comercial.
  • Use o escalador KEDA CRON para reduzir suas cargas de trabalho (pods) com base no tempo.

Procedimentos operacionais

Explore esta seção para configurar seu ambiente para medir e melhorar continuamente suas cargas de trabalho, custo e eficiência de carbono.

Eliminar recursos não utilizados

Deve identificar e eliminar quaisquer recursos não utilizados, tais como imagens não referenciadas e recursos de armazenamento, uma vez que têm um impacto direto no hardware e na eficiência energética. Para garantir a otimização contínua de energia, você deve tratar a identificação e a exclusão de recursos não utilizados como um processo e não como uma atividade point-in-time.

  • Use o Azure Advisor para identificar recursos não utilizados.
  • Use o ImageCleaner para limpar imagens obsoletas e remover uma área de risco no cluster.

Marque seus recursos

Obter as informações e insights certos no momento certo é importante para produzir relatórios sobre desempenho e utilização de recursos.

Armazenamento

Explore esta seção para saber como projetar uma arquitetura de armazenamento de dados mais sustentável e otimizar as implantações existentes.

Otimizar a utilização do armazenamento

As operações de recuperação e armazenamento de dados podem ter um impacto significativo na eficiência energética e de hardware. Projetar soluções com o padrão correto de acesso a dados pode reduzir o consumo de energia e o carbono incorporado.

Rede e conectividade

Explore esta seção para saber como melhorar e otimizar a eficiência da rede para reduzir as emissões de carbono desnecessárias.

Escolha uma região mais próxima dos usuários

A distância entre um centro de dados e os utilizadores tem um impacto significativo no consumo de energia e nas emissões de carbono. Encurtar a distância percorrida por um pacote de rede melhora a sua eficiência energética e de carbono.

  • Analise seus requisitos de aplicativo e as geografias do Azure para escolher uma região mais próxima de onde a maioria dos pacotes de rede está indo.

Reduzir a travessia de rede entre nós

Colocar nós em uma única região ou uma única zona de disponibilidade reduz a distância física entre as instâncias. No entanto, para cargas de trabalho críticas para os negócios, você precisa garantir que seu cluster esteja espalhado por várias zonas de disponibilidade, o que pode resultar em mais travessia de rede e aumento na pegada de carbono.

  • Considere implantar seus nós em um grupo de posicionamento de proximidade para reduzir a travessia de rede, garantindo que seus recursos de computação estejam fisicamente localizados próximos uns dos outros.
  • Para cargas de trabalho críticas, configure grupos de posicionamento de proximidade com zonas de disponibilidade.

Avaliar usando uma malha de serviço

Uma malha de serviço implanta contêineres extras para comunicação, normalmente em um padrão de sidecar, para fornecer mais recursos operacionais, o que leva a um aumento no uso da CPU e no tráfego de rede. No entanto, ele permite que você desacople seu aplicativo desses recursos à medida que os move da camada de aplicativo para baixo para a camada de infraestrutura.

Otimizar a coleta de logs

Enviar e armazenar todos os logs de todas as fontes possíveis (cargas de trabalho, serviços, diagnósticos e atividade da plataforma) pode aumentar o armazenamento e o tráfego de rede, o que afeta os custos e as emissões de carbono.

Armazenar dados estáticos em cache

O uso da Rede de Distribuição de Conteúdo (CDN) é uma abordagem sustentável para otimizar o tráfego de rede porque reduz a movimentação de dados em uma rede. Minimiza a latência através do armazenamento de dados estáticos lidos com frequência mais perto dos utilizadores e ajuda a reduzir o tráfego de rede e a carga do servidor.

Segurança

Explore esta seção para saber mais sobre as recomendações que levam a uma postura de segurança sustentável e do tamanho certo.

Avaliar se deve usar a terminação TLS

Transport Layer Security (TLS) garante que todos os dados passados entre o servidor Web e os navegadores da Web permaneçam privados e criptografados. No entanto, encerrar e restabelecer o TLS aumenta a utilização da CPU e pode ser desnecessário em determinadas arquiteturas. Um nível equilibrado de segurança pode oferecer uma carga de trabalho mais sustentável e eficiente do ponto de vista energético, enquanto um nível mais elevado de segurança pode aumentar os requisitos de recursos de computação.

  • Analise as informações sobre a terminação TLS ao usar o Gateway de Aplicativo ou a Porta da Frente do Azure. Determine se você pode encerrar o TLS em seu gateway de fronteira e continuar com não-TLS para seu balanceador de carga de carga de trabalho e carga de trabalho.

Use ferramentas e controles de segurança de rede nativos da nuvem

O Azure Front Door e o Application Gateway ajudam a gerenciar o tráfego de aplicativos Web, enquanto o Azure Web Application Firewall fornece proteção contra os 10 principais ataques do OWASP e a eliminação de carga de bots ruins na borda da rede. Esses recursos ajudam a remover a transmissão de dados desnecessária e reduzem a carga sobre a infraestrutura de nuvem com menor largura de banda e menos requisitos de infraestrutura.

Procurar vulnerabilidades

Muitos ataques à infraestrutura de nuvem procuram abusar dos recursos implantados para o ganho direto do invasor, levando a um aumento desnecessário no uso e no custo. As ferramentas de verificação de vulnerabilidades ajudam a minimizar a janela de oportunidade para os invasores e mitigam qualquer potencial uso mal-intencionado de recursos.

  • Siga as recomendações do Microsoft Defender for Cloud.
  • Execute ferramentas automatizadas de verificação de vulnerabilidades, como o Defender for Containers, para evitar o uso desnecessário de recursos. Essas ferramentas ajudam a identificar vulnerabilidades em suas imagens e minimizam a janela de oportunidade para invasores.

Próximos passos