paint-brush
Nosso código está prejudicando o planeta, precisamos de padrões de design com consciência de carbonopor@gsf
55,040 leituras
55,040 leituras

Nosso código está prejudicando o planeta, precisamos de padrões de design com consciência de carbono

Muito longo; Para ler

Como a API Carbon Aware pode nos ajudar a medir e responder à intensidade de carbono da eletricidade (gCO2/kWh) para reduzir a quantidade de emissões de carbono geradas por meio de software.

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Nosso código está prejudicando o planeta, precisamos de padrões de design com consciência de carbono
Green Software Foundation (GSF) HackerNoon profile picture


Vamos nos tornar os arquitetos de um mundo mais limpo e verde


A nuvem tem um maior pegada de carbono do que o setor aéreo. Com a crescente demanda por software para impulsionar o comércio e a indústria, há uma urgência maior de coleta e armazenamento de dados, computação em nuvem e IA para obter eletricidade de fontes de energia mais verdes e gerar significativamente menos emissões de carbono.


Ao mudar o consumo de eletricidade para horários e locais onde a eletricidade é mais limpa, a programação pode mitigar as mudanças climáticas e garantir um futuro mais limpo e seguro para nós e para as gerações futuras. Isso é Carbon Aware Computing e tem o potencial de tornar o desenvolvimento de software uma força crítica na mitigação das mudanças climáticas, ajudando-nos a escolher e otimizar a energia livre de carbono com um código consciente do clima.


Computação Consciente de Carbono 101

Não há muitos exemplos de computação com consciência de carbono por aí - e é por isso que eventos como __ Carbon Hack 22 __são significativos no crowdsourcing de novas ideias e na aceleração da inovação na programação de software para criar aplicativos que sejam conscientes do clima e responsivos à energia .

A Green Software Foundation __ discute __a consciência do carbono como a ideia de fazer mais quando mais energia vem de fontes “limpas” de baixo carbono e fazer menos quando mais energia vem de fontes “sujas” de alto carbono. Como desenvolvedores, podemos fazer isso medindo e respondendo à intensidade de carbono da eletricidade (gCO2/kWh), o que pode ajudar a criar códigos para reduzir a quantidade de emissões de carbono geradas pelo software.

Abordagens e aplicações de computação de carbono


Existem basicamente 3 abordagens:


  1. Mudança de local: Executar nosso software em um local mais limpo; obter eletricidade de uma região onde há maior oferta de energia mais limpa (por exemplo, eólica, solar, hídrica) do que outras.



2. Time Shifting: Executar nosso software em um horário mais limpo; quando a energia limpa está sendo gerada pelo vento, água ou energia solar.


  1. Modelagem de demanda: Executando nosso software para que ele faça mais quando a eletricidade estiver limpa e menos quando estiver suja.



Construir aplicativos com reconhecimento de carbono é desafiador, apesar das várias fontes de dados, em parte porque algumas dessas fontes são difíceis de navegar. o API Carbon Aware de código aberto , um projeto do Grupo de Trabalho de Código Aberto da Green Software Foundation, torna isso mais fácil. Essa API nos ajuda a identificar, analisar e prever a intensidade do carbono (quão verde ou suja é a eletricidade) de nosso aplicativo a qualquer momento e em qualquer lugar e a criar um código que permita que nosso software extraia energia limpa com base no local, execute quando o vento está soprando ou permitem que os sistemas sigam os raios do sol.

A API é extremamente simples.


Se você visitar https://grnsft.org/hack22/api você verá a interface da web assim:


Podemos conectá-lo a APIs como Watttime e Mapas de Eletricidade , ou para nossos próprios conjuntos de dados. Durante o Carbon Hack 22 (agora até 10 de novembro de 2022), a API Carbon Aware será conectado a uma fonte de dados WattTime para os desenvolvedores usarem.


Time Shifting: Qual é o melhor horário para executar meu software?


Ao mudar de horário, você pode usar o terminal /emissions/bylocations/best API, fornecendo a localização de seu interesse no campo de localização . Atualmente, os nomes de local são mapeados para nomes de região do Azure. Você também precisa fornecer a janela de tempo durante a qual poderá mover o trabalho. A hora de início precisa ser inserida no campo hora e a hora final no campo toTime . As datas fornecidas devem estar no formato ISO 8601.

Você pode solicitar dados diretamente da API por meio de uma solicitação Curl da seguinte forma:


 curl -X 'GET' \ 'https://carbon-aware-api.azurewebsites.net/emissions/bylocations/best?location=uksouth&time=2022-10-08T00%3A00%2B01%3A00&toTime=2022-10-08T23%3A59%2B01%3A00' \ -H 'accept: application/json'


Ou mesmo apenas uma solicitação HTTP GET normal no navegador .


Como saída, você receberá uma matriz de objetos JSON, com o nome da região WattTime para o local, hora dos dados, classificação de intensidade de carbono e duração para a qual esses dados são válidos (WattTime fornece dados em intervalos de 5 minutos). Esses dados serão as classificações de carbono mais baixas para o local solicitado. Esta consulta analisa os dados de uma única janela de 24 horas, portanto, para obter um resultado preciso, você pode solicitar dados de vários dias (por exemplo, observando o ponto de extremidade /emissions/bylocations ) e verifique se não é um queda de tempo na intensidade do carbono!

 [ { "location": "UK", "time": "2022-10-08T00:45:00+00:00", "rating": 351.98767912, "duration": "00:05:00" }, { "location": "UK", "time": "2022-10-08T00:40:00+00:00", "rating": 351.98767912, "duration": "00:05:00" }, { "location": "UK", "time": "2022-10-08T00:35:00+00:00", "rating": 351.98767912, "duration": "00:05:00" } ]


Mudança de local: qual é o melhor local para executar meu software?


Ao mudar de local, você pode usar o mesmo ponto de extremidade anterior ( /emissions/bylocations/best ), mas, neste momento, forneça vários locais nos quais está interessado e uma única vez durante a qual está procurando. A consulta de exemplo abaixo tem vários locais fornecidos, levando em consideração uksouth, eastus e francecentral . Você pode fornecer a ele uma janela de tempo (semelhante ao time shifting) ou um único ponto de tempo, preenchendo os campos time e toTime .

Você pode solicitar dados diretamente da API por meio de uma solicitação Curl da seguinte forma:

 curl -X 'GET' \ 'https://carbon-aware-api.azurewebsites.net/emissions/bylocations/best?location=uksouth&location=eastus&location=francecentral&time=2022-10-08T09%3A00%2B01%3A00' \ -H 'accept: application/json'


Ou mesmo apenas uma solicitação HTTP GET normal no navegador .


Como saída, você receberá o mesmo formato de resposta, com locais com a menor intensidade de carbono, juntamente com o tempo para essa leitura, o valor real da intensidade de carbono e a duração pela qual esses dados são válidos.

 [  {    "location": "FR",    "time": "2022-10-08T08:00:00+00:00",    "rating": 242.21832558,    "duration": "00:05:00"  } ]


Modelagem da demanda: como ajusto o comportamento do usuário?


Para implementar a modelagem de demanda, use uma combinação das consultas acima e outras para determinar a melhor forma de ajustar o comportamento de seu aplicativo.

Imagina isto!


Imagine se você ainda realizasse aqueles trabalhos de treinamento de ML devoradores de energia ... mas apenas quando a rede elétrica que os alimentava funcionava com fontes renováveis. Imagine se sua máquina de lavar funcionasse apenas no momento em que sua rede local fosse totalmente movida a energia eólica. Imagine que você deseja executar seu pipeline de CI simultaneamente todos os dias, mas garante que ele seja executado apenas em uma zona de disponibilidade (país) atualmente alimentada por energia verde. Em todos esses casos, você ainda consumiria tanta energia quanto antes, mas geraria muito menos emissões de gases de efeito estufa.


Esteja você pesquisando a API do Carbon Aware, executando-a em um contêiner local ou como uma ferramenta de linha de comando (CLI), você pode usar os padrões de desenvolvimento orientado a eventos para conectar eventos em seu aplicativo a acionadores na rede elétrica. Sua própria grade local ou uma mais verde e distante.


Dependendo de seus casos de uso, você pode permitir que todo um dispositivo, tarefa de computação ou aplicativo seja executado exclusivamente com energia renovável, seja executando apenas quando a rede local estiver verde ou funcionando apenas em zonas atualmente alimentadas por energia verde.

Em vez de ser mecânicos que mantêm o motor das emissões digitais funcionando, sejamos os engenheiros que ajudam a desacelerá-lo e talvez até contribuir para a reconstrução.


A computação com consciência de carbono é a próxima fronteira da engenharia de software sustentável. Alguns dos tomadores de decisão mais influentes do setor estão interessados em reduzir as emissões de carbono do software e mostrar que, emprestando seus recursos e contribuindo com prêmios em dinheiro significativos para Carbon Hack 22 . Jogadores importantes como Accenture, Avanade, Boston Consulting Group, Globant, Goldman Sachs, Intel Corporation, Thoughtworks, UBS e VMWare têm seus melhores e mais brilhantes participantes em tecnologia sustentável e estão contribuindo coletivamente com 100.000 USD em capital de prêmios.


Agora também é tarefa dos engenheiros de software construir soluções que causem menos danos às pessoas e ao planeta. A computação com consciência de carbono é como as gerações atuais e futuras de engenheiros de software podem ajudar a atingir esse objetivo. Explore a API Carbon Aware e participe do Carbon Hack para se juntar a quase 350 hackers e 70 inovações na identificação e resolução de barreiras ao software que reduz a intensidade de carbono da eletricidade.


Escrito por Asim Hussain, Diretor Executivo e Presidente, Green Software Foundation