Green coding: mais um colaborador para a sustentabilidade de TI

Green coding
Sheila Zabeu -

Maio 29, 2023

Em tempos em que sustentabilidade e otimização de recursos são frequentemente citados nos ambientes de TI, um conceito também está ganhando espaço, o de desenvolvimento de software verde ou green coding, no termo correspondente em inglês.

O que vinha acontecendo até algumas décadas atrás é que havia restrições tecnológicas, como poder de processamento e largura de banda limitados, que exijam dos desenvolvedores uma atenção maior para reduzir o tamanho e a complexidade dos códigos gerados. Com o avanço e a maior disponibilidade dos recursos de hardware, esse cuidado foi deixado de lado em grande parte. Hoje, com  a sustentabilidade em voga, essa atenção voltou a entrar em cena na forma do green coding.

Considerado um segmento da green computing, o green coding é uma prática que busca minimizar a energia envolvida no processamento das linhas de código e assim ajudar as organizações a reduzir o consumo geral de energia e as emissões de gases de efeito estufa. Quando começaram a pensar em sustentabilidada da TI, essas organizações abordavam temas como energia verde, eficiência do hardware e tratamento de lixo eletrônico, mas só agora o desenvolvimento de software eficiente está entrando no pacote novamente.

Fundada em 2021, a Green Software Foundation está trabalhando para construir um ecossistema confiável de pessoas, padrões, ferramentas e boas práticas voltado a contribuir para o desenvolvimento de software sustentável. A intenção é mudar a cultura da criação de linhas de código de forma a tornar a sustentabilidade uma peça central para as equipes de desenvolvedores tão importante quanto desempenho, segurança, custo e acessibilidade.

Nessa empreitada, a fundação destaca que o desenvolvimento de software verde abrange seu ciclo de vida completo, ou seja, criação, operação e descarte (reutilização). Faz algumas recomendações para ajudar nesse processo concentradas em quatro áreas: opções de design e codificação, escolha da linguagem de programação, seleção de modelos de Inteligência Artificial e desenvolvimento de software.

Opções de design e codificação: (1) Manter foco e controle dos recursos com maior consumo de energia e cenários de uso comum; (2) Reduzir o uso de dados; (3) Remover recursos não utilizados; (4) Detectar e remover loops que não conseguem atingir o objetivo pretendido; (5) Adaptar o comportamento do software de aplicativos de acordo com o modo de energia do dispositivo ou outras condições de operação; (06) Limitar a precisão computacional ao nível desejado; (7) Monitorar em tempo real o consumo de energia do aplicativo para identificar módulos que podem ser otimizados.

Escolha da linguagem de programação: (8) Existem vários fatores a serem considerados, portanto a recomendação é fazer uma avaliação detalhada, levando em conta os critérios mais relevantes, como consumo de energia, velocidade e uso de memória.

Seleção de modelos de Inteligência Artificial: (9) Esses modelos podem ser mais sustentáveis se foram desenvolvidos e usados consumindo menos energia e compartilhando código reproduzível para reduzir esforços duplicados; e contarem com hardware especializado otimizado para cargas de trabalho de IA.

Desenvolvimento de software: (10) Monitorar o consumo de energia em tempo real durante o desenvolvimento, usando técnicas como análise de código dinâmico.

No início deste ano, a Microsoft publicou um white paper descrevendo seu trabalho em conjunto com a organização sem fins lucrativos de tecnologia ambiental WattTime promovida por meio da Green Software Foundation. Juntas, foram pioneiras em desenvolver o primeiro aplicativo de reconhecimento de carbono para empresas e em abrir o código-fonte das ferramentas e da arquitetura.

As duas organizações também estão contribuindo para o desenvolvimento de uma nova especificação conhecida como Software Carbon Intensity (SCI), voltada a medir o impacto de carbono dos sistemas de software. Também criaram e abriram o código do kit de desenvolvimento que ajuda executar software quando e onde a energia for mais limpa. A combinação desses dois projetos vai permitir que desenvolvedores “descarbonizem” software.

Sumidouro de energia

Sustentabilidade em arquiteturas de software e dados não tem sido uma prioridade para as empresas, em parte devido a vários equívocos, aponta a consultoria Mckinsey. Muitos líderes de TI acreditam que a pegada de energia do software é quase insignificante ou já está otimizada suficientemente. Por conta disso, a área de desenvolvimento de software é muitas vezes negligenciada quando se pensa em eficiência energética, incorrendo em custos desnecessários decorrentes de mais complexidade e menos desempenho.

De acordo com a Mckinsey, há cinco padrões que resultam em arquiteturas de software e dados energeticamente ineficientes. Os desenvolvedores precisam se concentrar nesse pontos a seguir que apresentam lacunas de otimização em termos de manutenção, reutilização, desempenho e funcionalidades.

cinco padrões que resultam em arquiteturas de software e dados energeticamente ineficientes

Para reduzir significativamente a pegada geral do software e dos dados, é recomendado abordar as fontes subjacentes das emissões, considerando os três fatores mostrados no gráfico a seguir.

 três fatores para reduzir fontes de emissão