Reducción de emisiones en la ejecución del software. Posts para un Software Green IV
El cuarto post dedicado a la optimización de ejecución de procesos en los momentos más eficientes.
Hilando aún más fino: ¿cuándo ejecutar una tarea?
Hasta ahora hemos hablado de: borrar recursos que no usamos, desactivar los que tenemos cuando no estemos trabajando, e instalar los nuevos en las zonas menos contaminantes. Pero aún podemos hilar más fino, pues el mix energético varía dependiendo del momento del día:
- Normalmente, la producción solar es más abundante desde las 10 de la mañana hasta las 2 de la tarde.
- El patrón de vientos, por otro lado, varía según la región y la estación (por ejemplo, hay zonas en que los vientos son más fuertes debido a la variación térmica; en otras, las brisas diurnas (por ejemplo, las brisas marinas) pueden aumentar la producción eólica durante el día.
Tanto la producción solar como la eólica dependen, también, de las condiciones atmosféricas del momento, por lo que no siempre es fácil determinar el mejor momento para ejecutar una tarea pesada.
Cómo consultar el mix energético
Por suerte, existen APIs que ofrecen datos de producción y consumo de energía (¡bien!), de las cuales las más conocidas son, tal vez, WattTime y Electricity Maps. Por desgracia, estas fuentes de datos son de pago (¡mecachis!). Sin embargo, tras investigar qué fuentes de datos alimentan, a su vez, a estas APIs, pudimos comprobar que (al menos en el caso de Electricity Maps) agregan datos de fuentes que están disponibles de forma gratuita (¡bien!).
De las fuentes disponibles, en Ilitia hemos explorado la web API de ENTSO-E, la asociación europea de los gestores de transporte de electricidad. Utilizándola como fuente de datos, hemos logrado determinar los mejores momentos para ejecutar un job en los data centers de Azure de Europa.
Asimismo, hemos empezado a trabajar en un dashboard que nos permite estimar las emisiones de nuestra infraestructura cloud, cruzando los datos de generación de energía de ENTSO-E con los de consumos de Azure ofrecidos por Microsoft. Sabemos que existen iniciativas parecidas, pero en este caso nos aseguramos de que los datos de producción de electricidad son recientes.
¿Y la ejecución de software, qué?
Es verdad: hasta ahora nos hemos centrado en soluciones de infraestructura, pero hacer nuestro software más eficiente también puede ayudar a reducir nuestra huella de carbono. Grosso modo, menos ciclos de computación y menores asignaciones de memoria se traducen en menor consumo de electricidad y menor huella de carbono.
Asimismo, menor cantidad de datos navegando por la red también se traduce en menor consumo de electricidad.
Por tanto, debemos hacer un esfuerzo por escribir software eficiente que intercambie sólo los datos imprescindibles.
Empleados de Ilitia midiendo la eficiencia de su software.
Continuará… con medidas tangibles para realizar en el desarrollo del software.
José Ángel Fernández
Full-Stack Senior Software Engineer at ilitia Technologies
Edición: Jon Burguera