La ingeniería de software sostenible es una disciplina emergente que se centra en la intersección de la climatología, el software, el hardware, la electricidad y la arquitectura de nuestras aplicaciones modernas.
Promueve dos filosofías o creencias:
- TODOS deben participar, teniendo en cuenta que nada ocurre de forma aislada, todo está conectado, y siempre habrá algo que se pueda hacer y que tenga impacto.
- La SOSTENIBILIDAD es suficiente para justificar el trabajo, debe ser el enfoque principal al momento de crear soluciones; el resto de logros serán simples ventajas adicionales.
Sin importar el dominio de la aplicación, el tipo de organización (y su tamaño), el proveedor en la nube o el hospedador de la aplicación, y las tecnologías utilizadas (lenguajes de programación, frameworks, etc.), un ingeniero de software sostenible debe basar su actuar en ocho principios:
- Carbono
1.1. Es necesario dejar de agregar carbono a la atmósfera
1.2. Objetivo: lograr el mayor valor posible a través de nuestra aplicación, minimizando la cantidad de carbono por unidad de trabajo - Electricidad
2.1. El suministro eléctrico es la principal causa de emisiones de carbono
2.2. Objetivo: crear aplicaciones con eficiencia energética - Intensidad del carbono
3.1. Hace referencia a la medida de carbono generada por la fuente de la electricidad que consumimos
3.2. Hay fuentes de electricidad limpias y renovables (que no emiten carbono, por lo que su intensidad de carbono es cero), y fuentes de electricidad soportadas por combustibles fósiles (intensidad de carbono alta)
3.3. Objetivo: desplazar cargas de trabajo a horas y ubicaciones en las que haya mayor suministro de energía renovable para consumir la electricidad con la menor intensidad de carbono posible (demand shifting) - Carbono incorporado
4.1. Se refiere a la cantidad de carbono emitida para producir y destruir hardware (es decir, a su eficiencia de uso)
4.2. La cantidad de carbono incorporado en dispositivos personales generalmente es mayor a la cantidad de carbono emitido por consumo eléctrico
4.3. Objetivo: desarrollar aplicaciones que se puedan ejecutar en hardware antiguo, extendiendo su fecha de expiración y sin forzar sus límites. - Proporcionalidad energética
5.1. Describe la relación entre energía y tasa de utilización
5.2. Contrario a lo que generalmente se piensa, a mayor uso de un servidor, mayor eficiencia logrará al convertir electricidad en operaciones computacionales
5.3. ¿Por qué? Porque el consumo de electricidad de la mayoría de componentes de una computadora es estático, es decir, variará muy poco (o nada) respecto a la tasa de utilización
5.4. Objetivo: maximizar la eficiencia energética del hardware, ejecutando el trabajo en el menor número posible de servidores, con la mayor tasa de uso posible, y reduciendo la velocidad de reloj en momentos de baja utilización - Eficiencia de la red
6.1. Todos los dispositivos conectados a una red tienen carbono incorporado y consumen electricidad
6.2. Objetivo: reducir la cantidad de datos a enviar y/o recibir, junto con la distancia que deben recorrer - Modelado de la demanda (demand shaping)
7.1. Adaptar la demanda de nuestra aplicación para que coincida con el suministro eléctrico existente en el momento y lugar
7.2. Si el suministro de energía renovable actual es alto, se aumentan las cargas de trabajo; de lo contrario, se bajan
7.3. Objetivo: evaluar la posibilidad de cancelar cargas de trabajo, reducir demanda y expectativas de los usuarios, siempre que la intensidad de carbono sea alta - Optimización
8.1. No es fácil medir la cantidad de carbono que consume una aplicación (es más fácil medir la electricidad, aunque tampoco es fácil)
8.2. Objetivo: elegir un criterio de medición que proporcione señales claras sobre dónde concentrar los esfuerzos de optimización, paso a paso
¿Quieres profundizar y convertirte en un Ingeniero de Software SOSTENIBLE? Te invito a la clase Principios de la ingeniería de software sostenible del curso Fundamentos de Ingeniería de Software.