A solução descrita neste artigo pode ajudar você a criar um modelo de sustentabilidade para aplicativos hospedados no Azure. O modelo usa proxies que, ao longo do tempo, permitem pontuar o impacto e a eficiência de carbono de um aplicativo. A pontuação é conhecida como pontuação de Intensidade de Carbono do Software (SCI). Ele fornece uma linha de base para medir as mudanças na produção de carbono de um aplicativo.
Arquitetura
Baixe um Arquivo Visio dessa arquitetura.
Fluxo de dados
- Configure as fontes de dados do aplicativo que você usará para calcular sua pontuação SCI. Os dados podem ser as medidas de emissões fornecidas pela folha Otimização de carbono no portal do Azure ou podem ser medidas de proxy de fontes ou sistemas que não são da Microsoft.
- Exporte dados de emissão de carbono para seu data lake.
- Use manipuladores de eventos como Azure Functions ou Aplicativos Lógicos do Azure para calcular a pontuação SCI. A saída é a quantidade de carbono emitida em gramas por unidade, onde unidade refere-se ao fator de escala do aplicativo, ou uma aproximação dele baseada em proxies.
- Use tecnologias como o Azure Functions, os Aplicativos Lógicos ou os runbooks da Automação do Azure para disparar a modelagem de demanda no aplicativo ou para iniciar o modo ecológico predefinido do aplicativo.
- Use o Power BI para relatar e visualizar a pontuação e sua variação ao longo do tempo.
Componentes
- A folha Otimização de carbono no portal do Azure fornece medidas de emissão de carbono de cargas de trabalho do Azure no nível do grupo de recursos.
- A API Cloud for Sustainability fornece os dados subjacentes para otimização de carbono. Você pode usá-la para recuperar informações sobre as emissões da sua assinatura.
- O Application Insights é um recurso do Azure Monitor que fornece monitoramento de desempenho do aplicativo. Ele pode ajudar você a obter insights poderosos sobre como as pessoas usam seu aplicativo. Você pode usar esse conhecimento para tomar decisões baseadas em dados sobre como melhorar a eficiência do seu aplicativo.
- O Armazenamento de Blobs do Azure armazena as informações de emissão da otimização de carbono do Azure, de cálculos personalizados ou de outros proxies para emissões.
- O Azure Data Lake é um repositório centralizado que ingere e armazena grandes volumes de dados em sua forma original. Os dados podem ser processados e usados como base para várias necessidades analíticas.
- O Aplicativos Lógicos do Azure permite que você crie e execute fluxos de trabalho automatizados com pouco ou nenhum código. Usando o designer visual e selecionando operações pré-criadas, você pode criar rapidamente um fluxo de trabalho que integre e gerencie suas fontes de proxy, armazenamento de dados e sistemas de cálculo de eficiência.
- O Azure Functions permite que você execute pequenas unidades de código. Ele dimensiona automaticamente os recursos com base na demanda e você paga apenas pelo tempo de execução real. Você pode usá-lo para fazer cálculos de sustentabilidade e armazená-los no Armazenamento de Blobs ou em um data lake.
- A Automação do Azure fornece automação de processos por meio de runbooks. Você pode usar os runbooks para implementar lógica complexa, usando o código do PowerShell, que pode influenciar seu aplicativo para melhorar a eficiência. Esse serviço também pode agregar valor comercial, reduzindo erros e custos operacionais.
- O Power BI permite a você transformar seus dados em análises e relatórios que fornecem insights em tempo real.
Alternativas
Os serviços do Azure descritos neste artigo podem ser substituídos por serviços semelhantes. Para aumentar a densidade e a utilização de recursos existentes, realize os cálculos com efeito mínimo em sua infraestrutura usando os serviços ou as ferramentas do Azure que já estão implantados em seu ambiente:
- Você pode substituir os painéis do Power BI pelos serviços pastas de trabalho do Azure Monitor ou Espaço Gerenciado do Azure para Grafana.
- Você pode substituir o Application Insights por qualquer outra ferramenta de gerenciamento de desempenho de aplicativos, como o Elasticsearch APM ou o OpenAPM.
- Os dados na forma de tabelas ou dados não estruturados podem ser retidos em qualquer sistema de registros, como MySQL ou MariaDB, ou Azure Cosmos DB e MongoDB.
- Se tiver um espaço em execução do Azure Functions ou dos Aplicativos Lógicos, você poderá executar o cálculo regularmente em suas implantações existentes.
- Se os recursos do aplicativo estiverem distribuídos em vários grupos de recursos, você poderá usar marcas para correlacionar dados de custo e calcular a quantidade de carbono emitida pelo aplicativo.
Detalhes do cenário
Essa arquitetura foi projetada para coletar dados de otimização de carbono do Azure e de outras fontes para fornecer uma visão abrangente do impacto ambiental de um aplicativo. Os dados são coletados da otimização de carbono do Azure. Para ambientes que não são do Azure, um proxy é usado para recuperar métricas de carbono relevantes. Depois que os dados são consolidados, os cálculos SCI são realizados para avaliar a pegada de carbono geral. Os resultados são armazenados em uma conta de armazenamento do Azure ou data lake para retenção de longo prazo, o que permite a análise de BI e relatórios históricos. Essa abordagem garante o rastreamento centralizado do impacto do carbono em diversas infraestruturas e apoia os esforços estratégicos de sustentabilidade.
As informações de emissões de carbono são parcialmente coletadas da folha Otimização de carbono do portal do Azure e parcialmente calculadas, quando possível, por meio de proxy.
É essencial usar uma arquitetura separada para coletar dados de otimização de carbono do Azure por dois motivos principais:
- Os dados de otimização de carbono do Azure são armazenados e exibidos apenas nos últimos doze meses (em uma janela sem interrupção). Quando o rastreamento de longo prazo de uma pegada de carbono é necessário, um sistema dedicado garante a retenção de informações históricas detalhadas.
- Um aplicativo pode abranger várias infraestruturas, com o Azure como apenas um componente. Uma arquitetura separada permite o monitoramento centralizado do impacto do carbono em todos os ambientes para fornecer uma visão holística e garantir insights de sustentabilidade mais abrangentes.
Observação
Os gases de efeito estufa não são compostos apenas de dióxido de carbono e nem todos têm o mesmo impacto no meio ambiente. Por exemplo, uma tonelada de metano tem o mesmo efeito de aquecimento que 80 toneladas de dióxido de carbono. Neste artigo, tudo é normalizado para a medida equivalente ao CO2. Todas as referências ao carbono estão relacionadas ao equivalente ao CO2.
Fontes de dados
Em geral, você deve criar uma equação de proxy com poucas variáveis. As métricas de proxy escolhidas por você devem representar o comportamento e o desempenho do aplicativo.
Essas métricas são usadas neste exemplo:
- A emissão de carbono da infraestrutura, que é recuperada da API emissões de carbono. Essa API é a origem do Painel de Impacto de Emissões e da folha Otimização de carbono no portal do Azure. Os dados estão disponíveis no nível do grupo de recursos, o que facilita o rastreamento das emissões do aplicativo.
- Métricas de desempenho e dimensionamento do aplicativo coletadas do Application Insights:
- O fator de dimensionamento (chamadas de API, solicitações de servidor ou alguma outra métrica) para o aplicativo
- Uso da CPU
- Uso de memória
- Tempo de resposta (enviar e receber)
Para obter um tutorial sobre como configurar o Application Insights para obter as métricas necessárias, consulte Application Insights para aplicativos ASP.NET Core.
Você pode adicionar outras variáveis à equação, como:
- Emissões de carbono de infraestrutura e serviços de borda.
- O tempo em que os usuários se conectam, porque a produção e a demanda de eletricidade variam com o tempo.
- Qualquer outra métrica do aplicativo que possa explicar como seu desempenho muda ao longo do tempo.
Ao desenvolver essa equação em uma pontuação que também pode refletir o número de usuários, você cria a maior aproximação de uma pontuação de carbono. Essa pontuação é sua referência para qualquer mudança e melhoria adicional em direção à sustentabilidade do aplicativo.
O custo é outra consideração associada ao desempenho do aplicativo. Na maioria dos casos, uma correlação direta entre eficiência de desempenho e economia de custo e carbono pode ser estabelecida. Essa correlação leva às seguintes suposições:
- Quando o desempenho é maior, mas os custos são os mesmos, você otimizou o aplicativo e reduziu as emissões de carbono.
- Quando os custos são reduzidos mas o desempenho é o mesmo, você otimizou o aplicativo e reduziu as emissões de carbono.
- Quando o desempenho e os custos aumentam, você não otimizou o aplicativo e aumentou as emissões de carbono.
- Quando os custos aumentam, mas o desempenho é reduzido ou o mesmo, você não otimizou o aplicativo e aumentou as emissões de carbono (ou o custo da energia é maior, o que também é uma causa para maiores emissões de carbono).
Essa correlação entre a pontuação SCI, o custo e o desempenho de um aplicativo é exclusiva para cada aplicativo e depende de muitos fatores. Ao coletar dados para essas três variáveis, você pode criar um algoritmo de correlação que permite prever qualquer variação das três e tomar decisões informadas sobre a arquitetura e os padrões do aplicativo.
Cálculos
No cenário descrito aqui, não é possível formar um cálculo discreto para os proxies usados. Em vez disso, os dados coletados do Painel de Impacto de Emissões são processados como um ponto de partida. Aqui está o cálculo da linha de base SCI:
SCI = C∗R
Nesta equação:
C
representa as emissões de carbono para o aplicativo. Esse valor é afetado pela forma como o aplicativo é implantado no Azure. Por exemplo, se todos os recursos do aplicativo estiverem em um único grupo de recursos,C
representa as emissões de carbono para esse grupo de recursos.Observação
Por enquanto, outras fontes de emissões para o aplicativo são ignoradas porque dependem da arquitetura e do comportamento da borda/do usuário. Se usar proxies para dados, você poderá considerar essas fontes na próxima etapa.
R
é o fator de escala do aplicativo. Esse valor pode ser o número médio de usuários simultâneos para a janela de tempo, as solicitações de API, as solicitações da Web ou alguma outra métrica. Esse valor é importante porque leva a uma pontuação que considera o impacto geral do uso do aplicativo, não apenas seu volume de implantação.
A janela de tempo é, obviamente, outro aspecto importante desse cálculo: as emissões de carbono para qualquer dispositivo ou sistema que consome energia variam ao longo do tempo, porque a rede de energia pode ter fontes de energia renováveis ou alternativas (por exemplo, energia solar) em alguns momentos, mas não em outros. Portanto, é importante começar com o menor período de tempo possível para aumentar a precisão. Por exemplo, você pode começar com um cálculo diário ou por hora.
Atualmente, a API de emissões de carbono fornece informações mensais de carbono com base nos serviços de uma assinatura, no nível do grupo de recursos. Usando a API REST fornecida, você pode exportar dados de emissões para um data lake que contém todos os dados de sustentabilidade do aplicativo.
Armazenamento de dados
Você deve armazenar as informações de carbono e proxy de carbono coletadas em uma solução que possa ser conectada a painéis ou relatórios. Isso permite que você visualize sua pontuação de carbono ao longo do tempo e faça escolhas informadas. Para melhorar a sustentabilidade e alinhar-se às práticas recomendadas do Azure Well-Architected Framework, recomendamos que você use o sistema mínimo viável. (Consulte Considerações de design de dados e armazenamento para cargas de trabalho sustentáveis no Azure e Considerações sobre a plataforma de aplicativos para cargas de trabalho sustentáveis no Azure). O Azure Data Lake Storage é usado nessa arquitetura.
Correlações de dados
Ao começar a coletar dados sobre o carbono, o desempenho e o custo do seu aplicativo, você terá informações valiosas que permitem criar um algoritmo de correlação específico para seu aplicativo e que fornecerá orientação ao planejar a otimização de custo, desempenho e carbono.
Para obter mais informações, consulte Como escolher algoritmos para o Azure Machine Learning.
Exibição de dados
Você pode exibir seus dados e cálculos de várias maneiras, incluindo painéis personalizados do Azure Monitor e painéis simples do Power BI.
O que sua pontuação SCI pode disparar?
Depois de conhecer sua pontuação de sustentabilidade, você poderá se perguntar como pode melhorá-la.
Se você puder pontuar o impacto de carbono do seu aplicativo usando proxies, a próxima etapa será se concentrar na definição de ações que podem ser disparadas por condições desfavoráveis na pontuação. Alguns exemplos dessas condições são:
- A produção e a demanda de energia estão em alta e, portanto, são caras de produzir.
- A eletricidade não está disponível. Essa condição pode ser causada por um desastre natural ou conflito geopolítico.
- A súbita indisponibilidade da infraestrutura de borda causada pelo consumo excessivo de recursos ou por problemas na cadeia de suprimentos.
Quando puder identificar os pontos de falha que podem afetar seu aplicativo, você poderá decidir quais ações tomar para tornar seu aplicativo resiliente a picos de carbono.
Você deve executar uma das seguintes ações:
- Aplique uma degradação normal dos serviços e recursos do aplicativo, conforme descrito na documentação do Well-Arcchitected Framework.
- Crie uma versão de modo ecológico do seu aplicativo. O modo ecológico é uma versão mais simples, menor, barata e sustentável do aplicativo que oferece recursos mínimos. Você pode reverter para esta versão durante picos de emissão de carbono. Você também pode simplesmente treinar seus usuários finais para usar uma versão ecológica por escolha. Você pode fornecer um "botão verde" que permite que as pessoas usem uma interface mais enxuta, menos gráficos e recursos limitados em troca de emissões de carbono reduzidas.
- Se você optar por envolver seus usuários, criará uma oportunidade de impulsionar uma mudança cultural junto com a técnica:
- Você pode especificar o impacto da escolha: "Ao usar a versão ecológica, você economiza uma quantidade x de carbono" ou "ao levar nossa pontuação de carbono para uma quantidade y ".
- Você pode entender o comportamento do usuário e modificar a versão ecológica para refletir suas escolhas. (Talvez eles usem 10% dos recursos e sejam um usuário ideal da versão ecológica).
- Como a versão completa é otimizada para emissão, idealmente você poderá mesclar as duas versões por fim.
Considerações
Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.
Segurança
A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para mais informações, consulte Visão geral do pilar de segurança.
Para segurança adicional, você pode usar os pontos de extremidade de serviço da Rede Virtual do Azure para remover o acesso público à Internet aos recursos de serviço do Azure, permitindo o tráfego somente de sua rede virtual.
Com essa abordagem, você cria uma rede virtual no Azure e, em seguida, cria pontos de extremidade de serviço privados para serviços do Azure. Esses serviços são então restringidos ao tráfego de rede virtual. Você também pode alcançá-los a partir da sua rede local por meio de um gateway.
Tenha em mente que, para mover dados do local para o armazenamento do Azure, você precisará permitir endereços IP públicos do seu local ou usar o Azure ExpressRoute. Para obter detalhes, confira Implantar serviços dedicados do Azure em redes virtuais.
Confira orientações gerais sobre como criar soluções seguras na Documentação de segurança do Azure.
Otimização de custos
A Otimização de Custos trata da redução de despesas desnecessárias e da melhoria da eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custo..
Você pode implantar essa arquitetura usando vários serviços alternativos do Azure. Foi intencionalmente mantido no mínimo para economizar custos e emissões de carbono.
Embora incentivemos você a usar serviços equivalentes que você já tem na implantação do aplicativo, as informações de preços estão disponíveis para cada componente da arquitetura:
- Os relatórios Painel de Impacto de Emissões, Otimização de carbono do Azure e Gerenciamento de Custos da Microsoft são gratuitos.
- Preços do Application Insights.
- Preço de Armazenamento de Tabelas do Azure.
- Preços dos Aplicativos Lógicos do Azure.
- Preços do Azure Functions.
- Preços da Automação do Azure.
Eficiência de desempenho
A eficiência do desempenho é a capacidade de dimensionar a carga de trabalho para atender às demandas exigidas pelos usuários de maneira eficiente. Para saber mais, confira Visão geral do pilar Eficiência de desempenho.
O principal objetivo dessa arquitetura é fornecer uma pontuação de sustentabilidade para seus aplicativos por meio de um processo com efeito mínimo no custo e no próprio carbono. A maioria dos componentes são PaaS (plataforma como serviço) e serviços do Azure sem servidor que podem ser dimensionados independentemente com base no uso e no tráfego.
Neste cenário, o painel e a interface de armazenamento neste exemplo não são adequados para uso e consulta massivos. Se você planeja fornecê-lo a um grande número de usuários, considere uma destas opções:
- Desacople os dados extraídos, transformando-os e armazenando-os em um sistema diferente.
- Substitua o Data Lake Storage ou o Armazenamento de Tabelas do Azure por uma alternativa de estrutura de dados mais escalonável, como o Azure Cosmos DB.
Colaboradores
Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.
Principais autores:
- Paola Annis | Gerente Principal de Engenharia de Experiência do Cliente
- Davide Bedin | Arquiteto Sênior de Soluções em Nuvem, Inovação de Aplicativos
Outro colaborador:
- Chad Kittel | Engenheiro de Software Principal
Para ver perfis não públicos do LinkedIn, entre no LinkedIn.
Próximas etapas
Este artigo está alinhado com os princípios e metodologia da Green Software Foundation. A próxima etapa na criação de um aplicativo mais ecológico é inserir o Carbon Aware SDK em seu aplicativo para que os gatilhos possam ser automatizados em tempo real quando condições específicas de carbono forem atendidas.
Para obter recomendações para otimizar cargas de trabalho do Azure, consulte Diretrizes de carga de trabalho de nuvem de sustentabilidade .