Compartilhar via


Design de aplicativo de cargas de trabalho sustentáveis no Azure

Ao criar aplicativos novos ou atualizados existentes, é crucial considerar como a solução afetará o clima e se houver maneiras de melhorar e otimizar. Saiba mais sobre considerações e recomendações para otimizar seu código e aplicativos para um design de aplicativo mais sustentável.

Importante

Este artigo faz parte da série de cargas de trabalho sustentáveis do Azure Well-Architected . Se você não estiver familiarizado com esta série, recomendamos começar com o que é uma carga de trabalho sustentável?

Eficiência de código

As demandas por aplicativos podem variar e é essencial considerar maneiras de estabilizar a utilização para evitar excesso ou subutilização de recursos, o que pode levar a vazamentos desnecessários de energia.

Avaliar a movimentação de monolitos para uma arquitetura de microsserviço

Os aplicativos monolíticos geralmente são dimensionados como uma unidade, deixando pouco espaço para dimensionar apenas os componentes individuais que podem precisar dela.

Alinhamento do Green Software Foundation: eficiência energética, Eficiência de hardware

Recomendação:

  • Avalie as diretrizes de arquitetura de microsserviço .
  • Uma arquitetura de microsserviço permite o dimensionamento apenas dos componentes necessários durante a carga de pico; garantindo que os componentes ociosos sejam reduzidos ou reduzidos horizontalmente. Além disso, ele pode reduzir a sobrecarga e os recursos necessários para implantar aplicativos monolíticos.
  • Considere essa compensação: ao reduzir os recursos de computação necessários, você pode aumentar a quantidade de tráfego na rede e a complexidade do aplicativo pode aumentar significativamente.
  • Considere essa outra compensação: migrar para microsserviços pode resultar em sobrecarga de implantação extra com várias semelhanças em pipelines de implantação. Considere cuidadosamente os recursos de implantação necessários para arquiteturas monolíticas versus microsserviços.
  • Além disso, leia sobre como conteinerizar aplicativos monolíticos.

Melhorar a eficiência da API

Muitos aplicativos de nuvem modernos foram projetados para transacionar muitas mensagens entre serviços e componentes de forma assíncrona. Considere o formato usado para codificar os dados de carga. Quantas informações seu aplicativo precisa para se comunicar e há espaço para reduzir a conversa?

Alinhamento do Green Software Foundation: eficiência energética

Recomendação:

Garantir a compatibilidade de software com versões anteriores para garantir que ele funcione no hardware herdado

Considere como os aplicativos renderizam informações. O aplicativo precisa atender criticamente a tudo na mais alta qualidade, resultando em maior largura de banda e processamento? Há espaço para reduzir a qualidade dos componentes na interface do usuário para atender melhor às metas de sustentabilidade?

Alinhamento do Green Software Foundation: eficiência de hardware

Recomendação:

  • Dê suporte a mais dispositivos de consumidor do usuário final, como navegadores e sistemas operacionais mais antigos. Essa compatibilidade com versões anteriores melhora a eficiência do hardware reutilizando o hardware existente em vez de exigir uma atualização de hardware para que a solução funcione.
  • Considere essa compensação: se as atualizações de software mais recentes tiverem melhorias significativas de desempenho, o uso de versões de software mais antigas pode não ser mais eficiente.

Aproveitar padrões de design nativos de nuvem

Aprender sobre padrões de design nativos de nuvem é útil para criar aplicativos, sejam eles hospedados no Azure ou em execução em outro lugar. Otimizar o desempenho e o custo de seu aplicativo de nuvem também reduzirá sua utilização de recursos, daí suas emissões de carbono.

Alinhamento do Green Software Foundation: eficiência energética, Eficiência de hardware

Recomendação:

Considere usar padrões de disjuntor

Considere avaliar e impedir que aplicativos executem operações que provavelmente falharão. Falhas repetidas podem levar a sobrecarga e processamento desnecessário que você pode evitar com padrões de design adequados.

Alinhamento do Green Software Foundation: eficiência energética

Recomendação:

  • Um disjuntor pode atuar como um proxy para operações que podem falhar e deve monitorar o número de falhas recentes que ocorreram e usar essas informações para decidir se deseja continuar.
  • Estude o padrão de Disjuntor e, em seguida, considere como você pode implementar os padrões de Disjuntor em seus aplicativos.
  • Considere usar o Azure Monitor para monitorar falhas e configurar alertas.

Otimizar o código para uso eficiente de recursos

Aplicativos implantados usando código ineficiente podem resultar em um impacto inerente à sustentabilidade.

Alinhamento do 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 seu aplicativo.
  • Use algoritmos e padrões de design otimizados e eficientes.
  • Considere o princípio Não se repetir (DRY ).

Otimizar para padrões de acesso assíncrono

As demandas por aplicativos podem variar e é essencial considerar maneiras de estabilizar a utilização para evitar excesso ou subutilização de recursos, o que pode levar a vazamentos desnecessários de energia.

Alinhamento do Green Software Foundation: eficiência energética

Recomendação:

  • Solicitações de fila e buffer que não exigem processamento imediato e, em seguida, processam em lote. Projetar seus aplicativos dessa forma ajuda a obter uma utilização estável e ajuda a nivelar o consumo para evitar solicitações espetadas.
  • Leia sobre como otimizar padrões de acesso assíncrono.

Avaliar a renderização do lado do servidor versus do lado do cliente

Determinar se é necessário renderizar no lado do servidor ou no lado do cliente ao criar aplicativos com uma interface do usuário.

Alinhamento do Green Software Foundation: eficiência energética, Eficiência de hardware

Recomendação:

  • Considere estes benefícios da renderização do lado do servidor:

    • Quando a energia do servidor vem de alternativas menos poluentes do que a localidade do cliente.
    • Quando o hardware no servidor tem melhores taxas de processamento e energia.
    • Pode usar o cache centralizado para reduzir várias renderizações desnecessárias.
    • Reduzir o número de viagens de ida e volta de navegador para servidor pode ser particularmente importante quando o dispositivo do cliente tem um link de perda.
    • Quando os dispositivos cliente são mais antigos e têm CPUs mais lentas. Os usuários não precisam atualizar seus dispositivos para dar suporte a um navegador moderno.
  • Considere estes benefícios da renderização do lado do cliente:

    • Quando os dispositivos de usuário final são mais adequados, efetue push da responsabilidade de renderizar para os clientes.
    • É mais eficiente apenas renderizar o que é necessário e solicitado, em vez de renderizar tudo pelo menos uma vez.
    • Não há necessidade de um servidor, pois você pode contar com o armazenamento estático.
    • O cache do navegador é usado nos clientes.

Esteja ciente do design de UX para sustentabilidade

Considere como o design da experiência de usuário de uma carga de trabalho afeta a sustentabilidade e determine quais 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 do Green Software Foundation: eficiência energética

Recomendação:

  • Considere reduzir o número de componentes a serem carregados e renderizados em páginas.
  • Determine se o aplicativo pode renderizar vídeos e imagens de resolução inferior.
    • Não renderize imagens em tamanho real como miniaturas em que o navegador está fazendo o redimensionamento.
    • O uso de imagens em tamanho real como miniaturas ou imagens redimensionadas transferirá mais dados, tráfego de rede desnecessário e uso adicional da CPU do lado do cliente devido ao redimensionamento de imagens e à pré-renderização.
  • Garantir que não haja páginas não utilizados ajudará a minimizar o design da experiência de usuário.
  • Considere a pesquisa e a localizabilidade. Tornar mais fácil para os usuários encontrar o que eles estão procurando ajuda a reduzir a quantidade de dados armazenados e recuperados.
  • Considere fornecer uma interface do usuário mais leve, usando menos recursos e com um impacto menor na sustentabilidade e forneça aos usuários uma escolha informada.
  • Economize energia oferecendo seus aplicativos e sites no modo escuro, com planos de fundo escuros.
  • Opte por usar fontes do sistema quando possível para evitar forçar os clientes a baixar fontes adicionais, o que causa mais carga de rede.

Atualizar código herdado

Considere atualizar ou preterir o código herdado se ele não estiver em execução na infraestrutura de nuvem moderna ou com as atualizações mais recentes.

Alinhamento do Green Software Foundation: eficiência de hardware

Recomendação:

  • Identifique o código herdado ineficiente adequado para modernização.
  • Examine se há opções para mover para sem servidor ou qualquer uma das opções de PaaS otimizadas.
  • Considere essa compensação: atualizar o código antigo que pode acabar sendo preterido pode consumir um tempo valioso.

Próxima etapa

Examine as considerações de design para a plataforma do aplicativo.