Green Software Development
Algunas ideas para reducir las emisiones de carbono desde la trinchera del código.
Parte de este artículo fue publicado originalmente en Marzo de 2024 en mi blog. De vez en cuando rescataré en esta newsletter los artículos que he escrito a lo largo de los años y que han generado mayor interés.
En la entrega anterior intruduje la tragedia de los comunes desde el punto de vista del ciclo de desarrollo de software. Una vez más, pongo sobre le mesa que somos subsistemas anidados dentro de sistemas mayores y esto, por supuesto, incluye a nuestro planeta.
También compartimos planeta
“Es un cliché que la gente se involucre en IT para “cambiar el mundo”. Realmente tienes que considerar cuál es el impacto de tu trabajo en el mundo. La idea de que puedes o debes excluir las discusiones sociales y políticas en tecnología es idiota. Significa que no estás haciendo tu trabajo.”
“Una de las cosas más importantes que distingue la ingeniería de software de la programación es considerar el impacto más amplio de tu trabajo y aplicar el pensamiento sistémico. Eso incluye absolutamente tener discusiones sociales y políticas. Lo mismo se aplica al producto.
“Si no estás teniendo esas discusiones, no puedes llamarte a ti mismo un ingeniero de software.”
La reflexión sobre nuestra práctica profesional no estaría completa sin considerar el impacto más allá del entorno de desarrollo: el ambiental. En la intersección entre la ingeniería de software y la sostenibilidad, enfrentamos retos significativos, como la huella de carbono del sector IT que representa aproximadamente un 4% actualmente, con proyecciones de alcanzar el 14% para 2040. Los centros de datos, que consumen alrededor del 2% de la electricidad global hoy, podrían llegar al 8% para 2030, superando la huella de carbono de la industria aérea.
El problema estriba en que las emisiones de carbono son un clásico juego de bienes públicos, también conocido como una tragedia de los comunes, de suerte que todo el mundo tiene un incentivo para ir por libre y dejar que todos los demás se sacrifiquen, por lo que todos sufren.
— Steven Pinker. En defensa de la ilustración
Como desarrolladoras de software, tenemos una responsabilidad con el medio ambiente. Como explica Pinker, aquí estamos también en presencia de una tragedia de los comunes, posiblemente la mayor a la que nos enfrentamos. Es fácil ignorar el impacto ambiental de nuestras acciones, ya que la conexión entre lo que hacemos y sus efectos a menudo es indirecta y difícil de medir. A día de hoy, aunque es complicado evaluar con precisión, tendemos a asumir que con los proveedores de nube comprometiéndose a utilizar energía limpia, estamos haciendo lo suficiente.
Hay un aspecto críticamente subestimado en nuestra industria: las emisiones de carbono derivadas de la fabricación del hardware (embodied carbon). Un primer paso es reconocer el impacto indirecto de nuestras acciones y comprometernos con prácticas que minimicen nuestra huella de carbono, como:
Desarrollar código eficiente que maximice el rendimiento del hardware, reduciendo así la necesidad de actualizaciones frecuentes y la fabricación de nuevo hardware.
Combatir la obsolescencia programada mediante la ampliación de la compatibilidad de nuestro software con hardware más antiguo, extendiendo su vida útil.
Eliminar recursos ociosos o innecesarios (también conocidos como “fantasmas”), que consumen energía y recursos computacionales sin proporcionar valor.
Optimizar la programación de cargas de trabajo para que los sistemas esenciales funcionen solo cuando sea necesario, minimizando el consumo de energía.
Implementar escalado bajo demanda, asegurando que solo se utilicen los recursos necesarios, adaptándose a las necesidades reales de procesamiento.
Reducir la emisión de carbono: entender que la energía que consumes no siempre tiene el mismo impacto en términos de intensidad de carbono.
Desplazamiento de la demanda: mover tu consumo de energía a diferentes ubicaciones o momentos del día donde la intensidad de carbono es menor.
Modelado de la demanda: adaptar tu consumo de energía según la variabilidad de la intensidad de carbono para consumir más en períodos de baja intensidad y menos en períodos de alta intensidad.
La ingeniería de software implica considerar el impacto más allá del código; engloba un compromiso con la sostenibilidad y la responsabilidad social. Profundicé sobre este tema en el T3chfest 2024.
Si tienes interés en profundizar, la Green Software Foundation ofrece amplia información y recursos al respecto.