Sostenibilidad en la ingeniería de software

Bill Johnson

De la ingeniería del software a la ingeniería de la sostenibilidad

Está surgiendo una nueva práctica de software: la ingeniería sostenible. Amplía la responsabilidad de la ingeniería de software más allá de un ámbito técnico y operativo, y la extiende a un ámbito medioambiental. Sin embargo, no siempre es fácil trazar una línea entre el código que escribimos y los objetivos de sostenibilidad como los anunciados por los tres grandes proveedores de la nube: Amazon, Microsoft y Google. Bill Johnson explora cómo les ingenieres de software pueden preguntarse mejor qué se necesita para mantener un sistema.


Tres áreas de la ingeniería sostenible

La ingeniería sostenible divide la responsabilidad de la ingeniería de software en tres áreas distintas:

Sostenibilidad Técnica

La sostenilidad técnica abarca las decisiones directas que tomamos para que el sistema produzca los resultados deseados. Esto incluye tanto las decisiones de hardware (CPU, memoria, redes) como las de software (lenguaje, arquitectura, complejidad), además de aspectos como la latencia del sistema, los requisitos de prueba o los requisitos de ampliación/reducción. Se puede considerar, a grandes rasgos, como ingeniería de software "tradicional".

Sostenibilidad Operativa

Cualquier aspecto del sistema que requiera mantenimiento humano entraría en esta sección. Áreas como el proceso de implementación, el bucle interno de desarrollo y los volúmenes de incidentes por guardia ("on-call") son comunes a este nivel de sostenibilidad. También incluye cosas como la reducción del trabajo manual, la planificación de capacidad, las prácticas efectivas de revisión después de incidentes y la observabilidad general dentro del sistema. A veces esto se denomina como el aspecto "humano" de sostenibilidad en un sistema de software y puede ser un factor importante en el agotamiento de los ingenieros y la baja calidad del sistema si no se controla.

Sostenibilidad Medioambiental

La sostenibilidad medioambiental se centra en el impacto que tiene un sistema en la ecología del planeta. Se basa en gran medida en las emisiones de carbono pero se manifiesta a través de mediciones como la Eficacia del Uso de la Energía (EUE o "PUE" en inglés) y el Factor de Utilización del Cálculo (FUC o "CUF" en inglés) en los centros de datos. Optimizar el consumo de energía, agua y residuos de un centro de datos es el objetivo principal. Por ejemplo:

Los tres tipos de emisiones de carbono se incluyen en este ámbito: Alcance 1 (emisiones directas), Alcance 2 (emisiones indirectas) y Alcance 3 (todas las demás emisiones).

Persona sentada en un escritorio frente a dos pantallas y una laptop, mirando hacia fuera. Afuera se ven varios edificios de la ciudad.
Foto por Christina @ wocintechchat.com en Unsplash

Ingeniería de la Sostenibilidad: Equilibrar las tres áreas de la sostenibilidad


El objetivo de une ingeniere de sostenibilidad es tender un puente entre estas tres áreas y equilibrar cada perspectiva. Le ingeniere de sostenibilidad debe, por definición, ser independiente para no verse indebidamente influenciade por las presiones del equipo o de la organización. Les ingenieres de sostenibilidad evalúan los sistemas y proporcionan orientación sobre la sostenibilidad con los siguientes objetivos:


Les ingenieres de sostenibilidad son responsables de encontrar formas de aumentar la concienciación sobre el efecto que tienen las opciones de ingeniería de software en la sostenibilidad. Esto debería estar al alcance de todes les ingenieres lo antes posible en el proceso de diseño y desarrollo.


Una persona señala la pantalla de una laptop. Otra persona a su lado le atiende con atención.
Foto por Christina @ wocintechchat.com en Unsplash

Responsabilidad por la sostenibilidad global del sistema

Le Ingeniere de Sostenibilidad debe tener un profundo conocimiento del sistema en sí, de lo que se necesita para operar y gestionar ese sistema, y del impacto que tiene en el clima global. Tomando prestado de la Economía y la Teoría de Juegos, la solución ideal debe ser Pareto óptima o igualmente beneficiosa para las tres áreas. Las recomendaciones, y orientaciones están respaldadas por la ciencia y los datos siempre que sea posible y pueden cambiar con el tiempo a medida que se ajusten las realidades y se descubran o introduzcan nuevos factores.

Aplicar los principios de ingeniería sostenible y las mejores prácticas

Los equipos de seguridad suelen exigir revisiones de seguridad o la elaboración de modelos de amenazas para los nuevos sistemas o tras la introducción de cambios significativos. Se puede adoptar un enfoque similar en sus propios sistemas de ingeniería para imponer un conjunto básico de competencias necesarias para construir sistemas de software sostenibles. Definir y promover estos principios y prácticas para tu organización es clave, para que los equipos sean conscientes de las expectativas desde el principio. En principles.green hay un esfuerzo por estandarizar estos principios, así como algunos buenos ejemplos de su aplicación a arquitecturas comunes.

Proporcionar datos a les ingenieres

La última área de la que son responsables les ingenieres de sostenibilidad es la de encontrar formas de aumentar la conciencia del efecto que tienen las opciones de ingeniería de software en la sostenibilidad. Esto debería estar disponible para todes les ingenieres lo antes posible en el proceso de diseño y desarrollo. A menudo no está claro qué huella de carbono tendrá su aplicación, especialmente a medida que se amplía, y les ingenieres de sostenibilidad deberían buscar e implementar siempre formas de exponer estos datos de forma segura, precisa y fiable. Proporcionar a les ingenieres la conciencia de los efectos a medio o largo plazo de sus decisiones ayudará a dar forma a comportamientos más sostenibles en el futuro.

A menudo no está claro qué huella de carbono tendrá su aplicación, especialmente a medida que se amplía, y les ingenieres de sostenibilidad deberían buscar e implementar siempre formas de exponer estos datos de forma segura, precisa y fiable.

Debe quedar claro que une Ingeniere de Sostenibilidad no se centra únicamente en el medio ambiente global sino que equilibra las tres áreas para encontrar una solución óptimamente sostenible. La aplicación más ecológica es la que nunca se escribe en primer lugar por lo que centrarse únicamente en un aspecto no puede ser la respuesta. Cada línea de código que se escribe tiene efectos a corto, medio y largo plazo (buenos y malos). Les ingenieres de sostenibilidad utilizan la ciencia y los datos para definir el mejor camino a seguir, uno que equilibre los efectos en los tres plazos para conseguir un sistema verdaderamente sostenible.

Dos personas escribiendo en una pizarra de cristal con marcadores
Foto por Christina @ wocintechchat.com en Unsplash



En conversación con Branch:


"¿Cómo crees que la Ingeniería de la Sostenibilidad mejora la vida de las personas más allá de la reducción de emisiones y el desperdicio de materiales?"

El medio ambiente es una de las pocas cosas que afecta a todos los habitantes del planeta, pero no afecta a todes por igual. La subida del nivel del agua, el aumento de las temperaturas y la mayor frecuencia de intensidad de las catástrofes naturales afectan de forma desproporcionada a las comunidades más pobres y marginadas. La ingeniería de la sostenibilidad introduce el medio ambiente como factor en las decisiones técnicas para ayudar a equilibrar la balanza sobre qué comunidades obtienen los beneficios y pagan la carga de nuestras decisiones. Gran parte de la industria tecnológica, y del software en particular, se centra en la respuesta inmediata y los beneficios a corto plazo. La ingeniería de la sostenibilidad mira más allá de los beneficios a corto plazo para evaluar el impacto a largo plazo y encontrar el equilibrio adecuado entre ambos, nivelando el beneficio y la carga.

"¿Cuáles son, en tu opinión, las salidas profesionales (o las barreras) de la Ingeniería de la Sostenibilidad? ¿Cómo puede convertirse en un campo real, con formación, especialización, títulos de trabajo, presupuestos, etc.?"

En cuanto al software creo que hay una progresión natural desde los roles de DevOps/SRE (Operación de Desarrollo) hasta la Ingeniería de la Sostenibilidad. Lo que ha hecho que DevOps/SRE sea tan impactante es que plantea la pregunta de "¿qué se necesita para mantener este sistema?". La Ingeniería de la Sostenibilidad se basa en eso para preguntar sobre el impacto que el sistema tiene en el propio planeta. Sin embargo, no se trata solo de software, hay problemas de ingeniería de la sostenibilidad en el hardware (frecuencias óptimas de la CPU para maximizar el uso de la energía), la cadena de suministro (creación y reciclaje/reutilización de máquinas), la ciencia de los datos (valor de los modelos de ML [Aprendizaje de Máquinas] e IA [Inteligencia Artificial] en función de su consumo de energía) y muchas otras áreas. Lo mejor que puede pasar para el campo a corto plazo es normalizarlo, más allá de los ingresos. Hacer de la "minimización de las emisiones de carbono" una prioridad para los sistemas es un gran primer paso. No sólo proporciona al equipo una cifra a la que dar seguimiento sino que también les da una idea de lo que es bueno o malo. Si conseguimos que la conversación en torno al carbono y los residuos sea lo más fácil posible para los individuos y las empresas creo que se producirá un aumento de la demanda de este tipo de trabajo y la formación formal, las certificaciones y los presupuestos le seguirán.

Sobre el autor

Bill Johnson es director de ingeniería principal de Azure durante el día y entrenador de @teamchallengenw por la noche. El artículo original apareció en Medium.

Volver al índice