A solução descrita neste artigo pode ajudá-lo 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 Software Carbon Intensity (SCI). Ele fornece uma linha de base para medir as mudanças na produção de carbono de uma aplicação.
Arquitetura
Transfira um ficheiro do Visio desta 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 medições de emissões fornecidas pela folha Otimização de carbono no portal do Azure ou podem ser medições proxy de fontes ou sistemas que não sejam da Microsoft.
- Exporte dados de emissão de carbono para o seu data lake.
- Use manipuladores de eventos como o Azure Functions ou os Aplicativos Lógicos do Azure para calcular a pontuação SCI. A saída é a quantidade de carbono emitida em gramas por unidade, onde a unidade se refere ao fator de escala de aplicação, ou uma aproximação dele baseada em proxies.
- Use tecnologias como Azure Functions, Aplicativos Lógicos ou runbooks de Automação do Azure para acionar 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 medições 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á-lo para recuperar informações sobre as emissões da sua assinatura.
- O Application Insights é um recurso do Azure Monitor que fornece gerenciamento de desempenho de aplicativos (APM). Ele pode ajudá-lo a obter informações poderosas sobre como as pessoas usam seu aplicativo. Você pode usar esse conhecimento para tomar decisões orientadas por 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 então ser processados e utilizados como base para várias necessidades analíticas.
- As Aplicações Lógicas do Azure permitem-lhe criar e executar fluxos de trabalho automatizados com pouco ou nenhum código. Usando o designer visual e selecionando entre operações pré-criadas, você pode criar rapidamente um fluxo de trabalho que integra e gerencia suas fontes de proxy, armazenamento de dados e sistemas de cálculo de eficiência.
- O Azure Functions permite executar 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 Blob Storage 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. Este serviço também pode agregar valor ao negócio, reduzindo erros e custos operacionais.
- O Power BI permite que você transforme 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 dos recursos existentes, execute os cálculos com o mínimo impacto na sua infraestrutura usando os serviços ou ferramentas do Azure que já estão implantados em seu ambiente:
- Você pode substituir painéis do Power BI por pastas de trabalho do Azure Monitor ou serviços do Azure Managed Grafana.
- Você pode substituir o Application Insights por qualquer outra ferramenta de gerenciamento de desempenho de aplicativo (APM), como o Elasticsearch Application Performance Management (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 você tiver um espaço do Azure Functions ou Aplicativos Lógicos em execução, poderá executar o cálculo regularmente a partir de suas implantações existentes.
- Se os recursos do aplicativo forem distribuídos em vários grupos de recursos, você poderá usar tags 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 sejam do Azure, um proxy é usado para recuperar métricas de carbono relevantes. Após a consolidação dos dados, são realizados cálculos de SCI para avaliar a pegada de carbono global. 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 de otimização de carbono do portal do Azure e parcialmente calculadas, quando possível, via 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 contínua). Quando é necessário rastrear a longo prazo uma pegada de carbono, 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 de carbono em todos os ambientes para fornecer uma visão holística e garantir perceções de sustentabilidade mais abrangentes.
Nota
Os gases com efeito de estufa não são constituídos apenas por dióxido de carbono e nem todos têm o mesmo impacto no 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 referem-se ao equivalente CO2.
Origens de dados
Em geral, você deve criar uma equação proxy com poucas variáveis. As métricas de proxy escolhidas 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 de emissões de carbono. Essa API é a fonte do Painel de Impacto de Emissões e da folha de 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 seu aplicativo.
- Métricas de desempenho e escala 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
- Utilização da CPU
- Utilização 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 for ASP.NET Core applications.
Você pode adicionar outras variáveis à equação, como:
- Serviços de borda e emissões de carbono de infraestrutura.
- O tempo em que os usuários se conectam, pois a produção e a demanda de eletricidade variam com o tempo.
- Qualquer outra métrica do aplicativo que possa dizer como seu desempenho muda ao longo do tempo.
Ao construir essa equação em uma pontuação que também pode refletir o número de usuários, você cria a aproximação mais próxima 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, pode ser estabelecida uma correlação direta entre eficiência de desempenho e redução de custos e de carbono. Esta correlação conduz aos seguintes pressupostos:
- 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 otimiza o aplicativo e aumenta 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 de 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 recolhidos a partir do Painel de Impacto das Emissões são processados como ponto de partida. Aqui está o cálculo da linha de base do SCI:
SCI = C*R
Nesta equação:
C
são as emissões de carbono para a aplicação. 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
serão as emissões de carbono desse grupo de recursos.Nota
Por enquanto, outras fontes de emissões para o aplicativo são ignoradas porque dependem da arquitetura e do comportamento de borda/usuário. Se você usar proxies para dados, poderá considerar essas fontes na próxima etapa.
R
é o fator de escala para o aplicativo. Isso pode ser o número médio de usuários simultâneos para a janela de tempo, solicitações de API, solicitações da Web ou alguma outra métrica. Esse valor é importante porque leva a uma pontuação que leva em conta o impacto geral do uso do aplicativo, não apenas sua pegada de implantação.
A janela temporal é, naturalmente, outro aspeto importante deste cálculo: as emissões de carbono de qualquer dispositivo ou sistema consumidor de energia variam ao longo do tempo, porque a rede energética pode ter fontes de energia renováveis ou alternativas (por exemplo, energia solar) em alguns momentos, mas não noutros. Portanto, é importante começar com o menor prazo possível para aumentar a precisão. Por exemplo, você pode começar com um cálculo diário ou horário.
Atualmente, a API de emissões de carbono fornece informações mensais sobre carbono com base nos serviços dentro 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 para o aplicativo.
Armazenamento de dados
Você deve armazenar as informações de proxy de carbono e 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 com as práticas recomendadas do Azure Well-Architected Framework, recomendamos que você use o sistema mínimo viável. (Para obter mais informações, consulte Considerações de design de dados e armazenamento para cargas de trabalho sustentáveis no Azure e considerações de plataforma de aplicativo para cargas de trabalho sustentáveis no Azure.) O Armazenamento Azure Data Lake é 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 quando você planejar a otimização de custo, desempenho e carbono.
Para obter mais informações, consulte Como selecionar algoritmos para o Azure Machine Learning.
Apresentaçã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 a sua pontuação SCI pode desencadear?
Depois de conhecer sua pontuação de sustentabilidade, você pode se perguntar como pode melhorá-la.
Se você puder pontuar o impacto de carbono do seu aplicativo usando proxies, o próximo passo é se concentrar na definição de ações que podem ser desencadeadas por condições desfavoráveis na pontuação. Alguns exemplos dessas condições são:
- A produção e a procura de energia atingiram o seu nível mais elevado de sempre, pelo que a sua produção é dispendiosa.
- A eletricidade não está disponível. Esta condição pode ser causada por uma catástrofe natural ou por um conflito geopolítico.
- Indisponibilidade súbita da infraestrutura de borda causada por consumo excessivo de recursos ou problemas na cadeia de suprimentos.
Quando você pode identificar os pontos de falha que podem afetar seu aplicativo, você pode decidir quais ações tomar para tornar seu aplicativo resiliente a picos de carbono.
Você pode 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 em modo ecológico da sua aplicação. O modo Eco é 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, você cria uma oportunidade para impulsionar uma mudança cultural junto com a técnica: - Você pode especificar o impacto da escolha: "Ao usar a versão eco, você economiza x quantidade de carbono" ou "trazendo nossa pontuação de carbono para y quantidade". - Você pode obter uma compreensão do comportamento do usuário e modificar a versão eco para refletir suas escolhas. (Talvez eles usem 10% dos recursos e sejam um usuário ideal da versão eco.) - Como a versão completa é otimizada para emissão, o ideal é que você possa eventualmente mesclar as duas versões.
Considerações
Essas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios orientadores que podem ser usados para melhorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.
Segurança
A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar Segurança.
Para segurança adicional, você pode usar os pontos de extremidade do serviço de 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 ficam então restritos ao tráfego dessa rede virtual. Você também pode alcançá-los a partir de sua rede local por meio de um gateway.
Lembre-se de que, para mover dados do local para o Armazenamento do Azure, você precisa permitir endereços IP públicos do local ou da Rota Expressa do Azure. Para obter detalhes, consulte Implantar serviços dedicados do Azure em redes virtuais.
Para obter orientações gerais sobre como projetar soluções seguras, consulte a documentação de segurança do Azure.
Otimização de Custos
A Otimização de Custos consiste em reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar Otimização de custos.
Você pode implantar essa arquitetura usando vários serviços alternativos do Azure. Foi intencionalmente mantido a um mínimo para economizar em 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 de arquitetura:
O Painel de Impacto de Emissões, a otimização de carbono do Azure e os relatórios do Microsoft Cost Management são gratuitos.
Preços do Armazenamento de Tabela 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
Eficiência de desempenho é a capacidade de sua carga de trabalho de escalar para atender às demandas colocadas pelos usuários de maneira eficiente. Para obter mais informações, consulte 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 que tenha um impacto mínimo no custo e no carbono. A maioria dos componentes são plataforma como serviço (PaaS) e serviços do Azure sem servidor que podem ser dimensionados de forma independente com base no uso e no tráfego.
Nesse cenário, o painel e a interface de armazenamento não se destinam ao uso e consulta massivos. Se você planeja fornecê-lo a um grande número de usuários, convém considerar uma destas opções:
- Desacople os dados extraídos, transformando-os e armazenando-os em um sistema diferente.
- Substitua o Armazenamento Data Lake ou o Armazenamento de Tabela do Azure por uma alternativa de estrutura de dados mais escalável, como o Azure Cosmos DB.
Contribuidores
Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.
Principais autores:
- Paola Annis - Brasil | Gerente Principal de Engenharia de Experiência do Cliente
- Davide Bedin - Brasil | Arquiteto de Soluções Cloud Sênior, Inovação em Aplicações
Outros contribuidores:
- Chade Kittel - Brasil | Engenheiro de Software Principal
Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.
Próximos passos
Este artigo está alinhado com os princípios e a metodologia da Green Software Foundation. A próxima etapa na criação de um aplicativo mais ecológico é incorporar o SDK do Carbon Aware 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 as cargas de trabalho do Azure, consulte Diretrizes de carga de trabalho na nuvem de sustentabilidade.