Hacia la medición del consumo energético de las opciones de arquitectura de infraestructura de las aplicaciones web

Compartir por correo electrónico

Reducir nuestra huella ambiental se convirtió en una prioridad para salvar el planeta. Según un reciente estudio sobre tecnologías verdes, la huella medioambiental global de la tecnología digital equivale a un continente de dos a tres veces el tamaño de Francia y a cinco veces el peso del parque automovilístico francés. Los fabricantes de hardware llevan 40 años optimizando la eficiencia de sus equipos, mientras que los proveedores de software hacen el camino inverso, apilando capas de aplicaciones. Quizá el aspecto puramente inmaterial del software dificulte la detección de las emisiones de carbono al final de la cadena, pero es un hecho.
Frente a la amenaza global del medio ambiente, cada empresa está invitada a poner su parte en la aplicación de medidas para desarrollar soluciones de software y servicios ecológicos. Berger-Levrault participa en esta perspectiva. Sin embargo, esto requiere un análisis energético de las plataformas, servicios y funcionalidades existentes. Este análisis permitirá identificar el "bloatware", es decir, el software que utiliza excesivos recursos del sistema y energía, y por qué.

El trabajo que presentamos a continuación es sólo un pequeño paso de una ambición muy grande. Nuestro objetivo final es determinar las pautas para diseñar y escribir software que sea energéticamente sobrio por diseño. Hoy en día los arquitectos de software tienen toneladas de buenas prácticas, patrones y directrices para mejorar la interoperabilidad, la mantenibilidad, la reutilización, el rendimiento, etc., pero no hay un patrón claro para determinar qué opciones arquitectónicas son energéticamente eficientes. Este es el camino que seguimos.

Introducción

Apoyamos el desarrollo de lo digital y de la tecnología, el despliegue del 5G, la cloudificación, etc. Quizá podríamos hacer algo para reducir la huella de nuestras aplicaciones? ¡Ya sería el primer paso! Lo primero que hay que hacer para controlar el problema del consumo de energía por capas de software es tener las herramientas para medirlo. En nuestro caso, necesitamos medidas y números que nos muestren cómo consumen nuestras aplicaciones para entender y mejorar este punto.

Presentación del proceso

Utilizamos varias herramientas existentes para analizar el consumo de energía, como Scaphandre, Prometeus, Grafana, Selenium. La Figura 1 presenta el proceso propuesto.

Figura 1: Proceso de análisis del consumo energético de la aplicación

El proceso presentado en La Figura 1 representa la cadena de medición del consumo de energía, la interacción entre las herramientas implicadas (Scaphandre, Prometheus, Grafana, Selenium)los actores y el motor de automatización (Script Bash).
Hagamos una breve presentación de las herramientas implicadas:

  • Scaphandre es un software open source para medir el consumo de energía de un ordenador o servidor informático, pero también de los servicios y aplicaciones que se ejecutan en él.
  • Prometheus es un sistema de supervisión y alerta open source. Recoge y almacena sus métricas como datos de series temporales, y la información de las métricas se almacena con la marca de tiempo en la que se registró.
  • Grafana es una plataforma open source para supervisar, analizar y visualizar métricas. Proporciona tablas, gráficos y alertas para la web cuando se conecta a fuentes de datos como Prometheus.
  • Selenium IDE es un entorno de desarrollo integrado para las pruebas de Selenium. Nos permite registrar nuestras interacciones con las interfaces de las aplicaciones web (escenario). De este modo, podemos crear y mantener pruebas automatizadas sobre interfaces de aplicaciones web y eliminar las tareas manuales repetitivas.

Medición del consumo de energía con Scaphandre

Scaphandre es un agente de control dedicado a las medidas de consumo energético. Su objetivo es ayudar a medir y, por tanto, a comprender los patrones de consumo energético de los servicios tecnológicos. Creemos que es un elemento esencial para que la industria tecnológica avance hacia una mayor sostenibilidad. Scaphandre está disponible desde finales de 2020 como contenedor docker y exporta los resultados directamente a una pantalla de consola o a una exportación de Prometheus. Las medidas exportadas (consumo del host, consumo por proceso, etc.) se importan luego a Grafana para una visualización clara y personalizable. La solución está bien documentada y sigue en desarrollo, especialmente para su futuro uso en máquinas virtuales (VM), estimando el consumo a partir de datos de componentes emulados. La herramienta sólo funciona en Linux, y en una máquina real, es imposible hacerla funcionar en una VM.

Para ver cómo obtener datos valiosos en un dashboard se quiere hacer un seguimiento del consumo de energía de un determinado proceso o aplicación en un dashboard y eventualmente establecer umbrales sobre el mismo. Para ver las medidas, debemos tener ya un servidor Prometheus en funcionamiento, una instancia de Grafana disponible y haber añadido Prometheus como fuente de datos en Grafana para ver nuestras medidas.

Herramientas de medición de energía existentes.
Figura 2: Herramientas de medición de energía existentes (Scaphandre, Prometeus, Grafana)

La medida que necesitamos del exportador de Prometheus se escribe como"Scaph_process_power_consumption_microwatts". Esta medida es una cartera para el consumo de energía de todos los procesos en ejecución en el host en un momento dado. Es una medida de Prometheus, por lo que dispone de etiquetas para filtrar los procesos que le interesan. Las etiquetas disponibles son instancia, cmdline, exe, trabajo y PID.

Así es como se ve, creando un panel en Grafana:

Ejemplo de un panel de visualización en Grafana.
Figura 3: Ejemplo de un panel de visualización en Grafana

Prueba de concepto: medir y comparar el consumo de energía de una aplicación en versión autónoma y en versión de la aplicación en un contenedor docker 

El marco propuesto nos permitió analizar el consumo de energía de las aplicaciones con o sin docker. Trabajamos con la aplicación Spring Boot Pet clinicque gestiona una clínica de animales. Con él, podemos ejecutar la aplicación como un archivo jar, o podemos ejecutarla como un contenedor docker. Después de ejecutar Pet cliniclanzamos el Selenium para interactuar con las dos versiones de la aplicación iniciando pruebas que ejecutan las funcionalidades a las que el usuario puede acceder manualmente.

Panel de consumo energético de la aplicación.
Figura 4: Panel del consumo energético de la aplicación en Watts

La curva verde muestra el consumo de energía de la aplicación ejecutada con un archivo jar, mientras que la curva amarilla muestra el consumo de energía de la aplicación ejecutada en un contenedor docker. La diferencia en el consumo de energía entre las dos versiones de la aplicación es muy notable, y el contenedor docker utiliza sustancialmente menos energía que el archivo jar. (La aplicación en contenedor sólo alcanza 0,018 vatios, en comparación con el consumo máximo de la aplicación sin contenedor de 0,077 vatios).

Otras soluciones

Hemos optado por trabajar con la herramienta de medición Scaphandre para monitorizar el consumo de energía de un proceso, pero hay diferentes herramientas que podemos utilizar en función de nuestras necesidades, aquí tenemos algunos ejemplos:

  • PowerAPI es una biblioteca que ofrece una API para medir el consumo de energía de un proceso del sistema. El cálculo se basa en el consumo de energía de los componentes de hardware utilizados por el proceso (CPU, memoria, disco ...) y utiliza fórmulas de energía, sin ningún esfuerzo de hardware, sin necesidad de un medidor de potencia u otras herramientas de medición de hardware para calcular el consumo de energía.
  • Calculadora de carbono del sitio webEste sitio permite, simplemente introduciendo la url de cualquier página web, descubrir una estimación de su emisión de carbono, es una herramienta práctica para concienciar pero que da muy poca información.
  • Análisis de las tecnologías verdes es una extensión del navegador que permite cuantificar el impacto ambiental del uso de una página web. Analiza la página en la que nos encontramos y proporciona automáticamente su huella ambiental y su rendimiento medioambiental.

Conclusión y perspectiva

En este artículo proponemos un proceso que permite monitorizar el consumo energético de una aplicación con o sin docker. El proceso se basa en varias herramientas Scaphandre, Prometeus, Grapfana, Selenium.
Hemos realizado un estudio de prueba de concepto que muestra la viabilidad de nuestro enfoque y confirma que la aplicación que se ejecuta en un contenedor Docker consume menos energía que una aplicación que se ejecuta con un archivo jar. Sin embargo, estos experimentos se han realizado para una aplicación pequeña. En el trabajo futuro planeamos probar la viabilidad del enfoque para aplicaciones a gran escala.

Por Marwa Slimene, Boubou Thiam Niang y Nawel Amokrane

Más ...

Scroll al inicio