Green Metrics Tool: Mide y Reduce tu Huella de Carbono Digital
En un mundo cada vez más consciente de la importancia de la sostenibilidad ambiental, la medición y reducción de la huella de carbono se ha convertido en una prioridad para muchas empresas y desarrolladores. Green Metrics Tool (GMT) es una herramienta de código abierto diseñada para medir la energía consumida y las emisiones de CO2eq generadas por aplicaciones software. En este artículo, exploraremos en detalle cómo GMT puede ayudarte a cuantificar y reducir el impacto ambiental de tus aplicaciones.
Green Metrics Tool es una primera aproximación práctica (desarrollada por el grupo de Green Coding Berlín) para llevar a la práctica la fórmula de Software Carbon Intensity de la Green Software Foundation
Contenarización con Docker Compose
Para empezar a utilizar GMT, debes contenerizar tu aplicación utilizando Docker Compose. GMT actualmente no es compatible con aplicaciones en Kubernetes. Una vez que hayas contenarizado tu aplicación, el siguiente paso es convertir tu archivo Docker Compose (compose.yml) en un archivo usage-scenario.yml. Este archivo es una extensión de la especificación de Docker Compose, aun que a su vez impone algunas restricciones.
Sin embargo, las claves que existen tanto en Docker Compose como en usage-scenario tienen el mismo significado en ambas especificaciones.
Estructura del archivo usage-scenario.yml
El archivo usage-scenario.yml se compone de cuatro bloques principales:
- Networks: Define las redes que se utilizarán.
- Services: Define los servicios de tu aplicación.
- Compose-file: Este bloque es opcional y te permite incluir archivos compose.yml existentes para reutilizar definiciones de servicios.
- Flow: Aquí es donde se definen los flujos de aplicación, que se medirán durante la fase de Runtime. Los flujos son esenciales para comprender cómo se consumen los recursos en una aplicación. Por ejemplo, en una aplicación web, puedes crear una imagen de Docker adicional que actúe como cliente y realice diversas interacciones con la aplicación para medir el consumo generado por un usuario.
Fases de Medición en GMT
La medición en GMT se realiza en seis fases distintas:
- Baseline: En esta fase, se mide el sistema (la infraestructura) sin tener la aplicación instalada. Esto proporciona una referencia del consumo de recursos sin la aplicación en funcionamiento.
- Installation: Se mide el sistema mientras se crean las imágenes de Docker necesarias para la aplicación.
- Boot: En esta fase, las imágenes y la aplicación se inician. Se mide el consumo durante el arranque.
- Idle: Se mide el consumo de la aplicación después del inicio, pero antes de que se ejecuten los flujos definidos en el archivo usage-scenario.yml. Esto refleja el consumo en estado de espera.
- Runtime: Aquí es donde se realiza la medición principal. Se registran los flujos definidos en el archivo usage-scenario.yml mientras se ejecutan. Esto proporciona información sobre el consumo real de recursos durante el funcionamiento normal de la aplicación.
- Remove: En la fase de Remove, se mide el consumo mientras el sistema se detiene y vuelve a la fase de Baseline. Esto permite evaluar el consumo cuando se detiene la aplicación.
Interfaz Web y Servicio en la Nube
GMT ofrece una interfaz web que te permite visualizar las mediciones realizadas, compararlas en diferentes momentos y obtener insignias por logros ambientales. Además, GMT proporciona un servicio en la nube donde puedes medir tu aplicación en la infraestructura que ofrecen. Sin embargo, ten en cuenta que para utilizar este servicio, el repositorio de tu aplicación debe ser público y solo se permite una solicitud por día, que se encolará para su ejecución.
En resumen, Green Metrics Tool te proporciona una forma estructurada de medir el consumo de recursos de tus aplicaciones. GMT te ayuda a tomar decisiones informadas para optimizar tus aplicaciones y reducir su impacto ambiental. Con GMT, estás un paso más cerca de contribuir a un mundo más sostenible y responsable ambientalmente.
Oscar Blanco
Senior Software Engineer at ilitia Technologies