Conceção de aplicações de cargas de trabalho sustentáveis no Azure
Ao criar aplicações novas ou atualizar aplicações existentes, é fundamental considerar como a solução irá afetar o clima e se existem formas de melhorar e otimizar. Saiba mais sobre considerações e recomendações para otimizar o seu código e aplicações para uma conceção de aplicações mais sustentável.
Importante
Este artigo faz parte da série de cargas de trabalho sustentáveis do Azure Well-Architected . Se não estiver familiarizado com esta série, recomendamos que comece com o que é uma carga de trabalho sustentável?
Eficiência do código
As exigências nas aplicações podem variar e é essencial considerar formas de estabilizar a utilização para evitar a sobreutilização ou a subutilização de recursos, o que pode levar a derrames de energia desnecessários.
Avaliar a movimentação de monólitos para uma arquitetura de microsserviços
Normalmente, as aplicações monolíticas são dimensionadas como uma unidade, deixando pouco espaço para dimensionar apenas os componentes individuais que podem precisar dela.
Alinhamento da Green Software Foundation: Eficiência energética, Eficiência de hardware
Recomendação:
- Avalie a documentação de orientação da arquitetura de microsserviços .
- Uma arquitetura de microsserviços permite o dimensionamento apenas dos componentes necessários durante a carga máxima; garantir que os componentes inativos são reduzidos ou reduzidos horizontalmente. Além disso, pode reduzir a sobrecarga e os recursos necessários para implementar aplicações monolíticas.
- Considere esta desvantagem: ao reduzir os recursos de computação necessários, pode aumentar a quantidade de tráfego na rede e a complexidade da aplicação pode aumentar significativamente.
- Considere esta outra desvantagem: mudar para microsserviços pode resultar numa sobrecarga de implementação adicional com inúmeras semelhanças nos pipelines de implementação. Considere cuidadosamente os recursos de implementação necessários para arquiteturas monolíticas versus microsserviços.
- Além disso, leia sobre a contentorização de aplicações monolíticas.
Melhorar a eficiência da API
Muitas aplicações na cloud modernas foram concebidas para transacionar muitas mensagens entre serviços e componentes de forma assíncrona. Considere o formato utilizado para codificar os dados de payload. Quantas informações a sua aplicação precisa de comunicar e há espaço para reduzir a conversação?
Alinhamento da Green Software Foundation: Eficiência energética
Recomendação:
- Saiba mais sobre o anti-padrão de E/S chatty para compreender melhor como um grande número de pedidos pode afetar o desempenho e a capacidade de resposta.
- Melhore a fiabilidade e reduza a carga desnecessária para os seus sistemas. Implemente a limitação avançada de pedidos com Gestão de API.
- Minimize a quantidade de dados que a aplicação devolve dos pedidos ao ser seletiva e codificar as mensagens. Veja considerações de codificação de mensagens.
- Respostas em cache para evitar o reprocessamento do mesmo tipo de informações do sistema de back-end, a menos que seja necessário. Veja colocação em cache no Azure Gestão de API.
Garantir a retrocompatibilidade do software para garantir que funciona em hardware legado
Considere como as aplicações compõem informações. A aplicação tem de servir de forma crítica tudo na mais alta qualidade, o que resulta numa maior largura de banda e processamento? Existe espaço para reduzir a qualidade dos componentes na IU para servir melhor os objetivos de sustentabilidade?
Alinhamento do Green Software Foundation: Eficiência do hardware
Recomendação:
- Suporte a dispositivos de consumidor mais utilizadores finais, como browsers e sistemas operativos mais antigos. Esta retrocompatibilidade melhora a eficiência do hardware ao reutilizar hardware existente em vez de exigir uma atualização de hardware para que a solução funcione.
- Considere esta desvantagem: se as atualizações de software mais recentes tiverem melhorias significativas no desempenho, a utilização de versões de software mais antigas poderá não ser mais eficiente.
Tirar partido dos padrões de conceção nativos da cloud
Aprender sobre padrões de design nativos da cloud é útil para criar aplicações, quer estejam alojadas no Azure ou em execução noutro local. Otimizar o desempenho e o custo da sua aplicação na cloud também reduzirá a utilização de recursos, daí as emissões de carbono.
Alinhamento da Green Software Foundation: Eficiência energética, Eficiência de hardware
Recomendação:
- Tire partido dos padrões de conceção nativos da cloud ao escrever ou atualizar aplicações.
Considerar a utilização de padrões de disjuntor automático
Considere avaliar e impedir que as aplicações realizem operações que possam falhar. As falhas repetidas podem levar a um processamento desnecessário e overhead que pode evitar com padrões de estrutura adequados.
Alinhamento da Green Software Foundation: Eficiência energética
Recomendação:
- Um disjuntor automático pode funcionar como um proxy para operações que podem falhar e deve monitorizar o número de falhas recentes que ocorreram e utilizar essas informações para decidir se deve continuar.
- Estude o padrão disjuntor automático e, em seguida, considere como pode implementar os padrões de Disjuntor Automático nas suas aplicações.
- Considere utilizar o Azure Monitor para monitorizar falhas e configurar alertas.
Otimizar o código para uma utilização eficiente de recursos
As aplicações implementadas com código ineficiente podem ter um impacto inerente na sustentabilidade.
Alinhamento da Green Software Foundation: Eficiência energética, Eficiência de hardware
Recomendação:
- Reduza os ciclos de CPU e o número de recursos necessários para a sua aplicação.
- Utilize algoritmos otimizados e eficientes e padrões de estrutura.
- Considere o princípio Não se repetir (DRY ).
Otimizar para padrões de acesso assíncrono
As exigências nas aplicações podem variar e é essencial considerar formas de estabilizar a utilização para evitar a sobreutilização ou a subutilização de recursos, o que pode levar a derrames de energia desnecessários.
Alinhamento da Green Software Foundation: Eficiência energética
Recomendação:
- Pedidos de fila e memória intermédia que não necessitam de processamento imediato e, em seguida, processam em lote. Conceber as suas aplicações desta forma ajuda a alcançar uma utilização estável e ajuda a aplanar o consumo para evitar pedidos espinhosos.
- Leia sobre como otimizar padrões de acesso assíncrono.
Avaliar a composição do lado do servidor vs. do lado do cliente
Determinar se deve compor no lado do servidor ou do lado do cliente ao criar aplicações com uma IU.
Alinhamento da Green Software Foundation: Eficiência energética, Eficiência de hardware
Recomendação:
Considere estes benefícios da composição do lado do servidor:
- Quando a energia do servidor provém de alternativas menos poluentes do que a região do cliente.
- Quando o hardware no servidor tem melhores proporções de energia de processamento.
- Pode utilizar a colocação em cache centralizada para reduzir várias composiçãos desnecessárias.
- A redução do número de viagens de ida e volta do browser para o servidor pode ser particularmente importante quando o dispositivo do cliente tem uma ligação de perda.
- Quando os dispositivos cliente são mais antigos e têm CPUs mais lentas. Os utilizadores não precisam de atualizar os respetivos dispositivos para suportar um browser moderno.
Considere estes benefícios da composição do lado do cliente:
- Quando os dispositivos de utilizador final são mais adequados, efetuando a responsabilidade de composição para os clientes.
- É mais eficiente apenas compor o que é necessário e conforme pedido, em vez de compor tudo pelo menos uma vez.
- Não é necessário um servidor, pois pode depender do armazenamento estático.
- A colocação em cache do browser é utilizada nos clientes.
Tenha em atenção a conceção da UX para sustentabilidade
Considere como a conceção da UX de uma carga de trabalho afeta a sustentabilidade e determine que opções existem para melhorar a eficiência energética e reduzir a carga de rede desnecessária, o processamento de dados e os recursos de computação.
Alinhamento da Green Software Foundation: Eficiência energética
Recomendação:
- Considere reduzir o número de componentes a carregar e compor em páginas.
- Determinar se a aplicação pode compor imagens e vídeos de resolução inferior.
- Não componha imagens de tamanho completo como miniaturas em que o browser está a fazer o redimensionamento.
- A utilização de imagens de tamanho completo como miniaturas ou imagens redimensionadas irá transferir mais dados, tráfego de rede desnecessário e utilização adicional da CPU do lado do cliente devido ao redimensionamento e pré-composição de imagens.
- Garantir que não existem páginas não utilizadas ajudará a minimizar a conceção do UX.
- Considere a pesquisa e a capacidade de localizar. Tornar mais fácil para os utilizadores encontrar o que procuram ajuda a reduzir a quantidade de dados armazenados e obtidos.
- Considere fornecer uma IU mais leve, utilizar menos recursos e ter um menor impacto na sustentabilidade e fornecer aos utilizadores uma opção informada.
- Poupe energia ao oferecer as suas aplicações e sites em modo escuro, com fundos escuros.
- Opte por utilizar tipos de letra de sistema sempre que possível para evitar forçar os clientes a transferir tipos de letra adicionais, o que causa mais carga de rede.
Atualizar código legado
Considere atualizar ou preterir o código legado se não estiver em execução na infraestrutura de cloud moderna ou com as atualizações mais recentes.
Alinhamento do Green Software Foundation: Eficiência do hardware
Recomendação:
- Identifique código legado ineficiente adequado para modernização.
- Reveja se existem opções para mover para sem servidor ou para qualquer uma das opções de PaaS otimizadas.
- Considere esta desvantagem: atualizar código antigo que pode acabar por ser preterido pode consumir tempo valioso.
Passo seguinte
Reveja as considerações de conceção da plataforma de aplicações.