GreenFrame - Mesurer et réduire les émissions CO2 de vos applications web

Développeur fullstack chez Marmelab, j'ai conçu et développé GreenFrame de zéro - une application SaaS qui mesure l'empreinte carbone des applications web en temps réel via l'intégration continue.

Les points clés

  • Créé un système de mesure d'empreinte carbone basé sur des publications scientifiques, convertissant CPU/RAM/Réseau en CO2
  • Développé un CLI intégrable en CI/CD utilisant Docker et Playwright pour des mesures automatisées à chaque déploiement
  • Conçu et développé l'architecture complète de l'application (NextJS, NodeJS, Docker)
  • Implémenté le monitoring multi-conteneurs permettant de mesurer l'impact global de tous les composants d'une application (API, DB, Messaging...)

Le contexte

La part du numérique représente 4% des émissions mondiales de gaz à effet de serre, avec une croissance de 9% par an (The Shift Project). Les développeurs doivent construire des applications plus durables, mais le Green IT manque d’outils de mesure précis des émissions CO2.

GreenFrame est né pour répondre à ce besoin : offrir aux développeurs un outil concret pour mesurer et réduire l’impact écologique de leurs applications.

Architecture technique et innovation

Mesure par conteneurisation Docker

GreenFrame utilise Docker comme “boîte noire” pour isoler les processus du navigateur. L’API Docker Engine permet de collecter précisément les métriques (CPU, RAM, Réseau, I/O disque) du conteneur pendant l’exécution des scénarios.

Ces métriques sont converties en mWh puis en grammes de CO2 grâce à un modèle développé en interne basé sur des publications scientifiques validées.

CLI et intégration continue

Les utilisateurs exécutent dans leur CI un scénario basé sur Playwright qui simule de vraies actions utilisateur. Le CLI GreenFrame orchestre l’exécution, collecte les données et les envoie à l’API pour génération du rapport.

Cette approche permet d’intégrer la mesure d’impact dans le workflow de développement, détectant les régressions écologiques comme on détecte les régressions fonctionnelles.

Monitoring multi-conteneurs

Au-delà du navigateur, GreenFrame peut monitorer simultanément d’autres conteneurs (API, base de données, Redis) pour mesurer l’empreinte globale de l’application pendant les tests.

Design et infrastructure

Sans équipe design ou devops dédiée, nous avons conçu l’interface en NextJS et l’infrastructure AWS avec Terraform. L’application applique les principes d’éco-conception qu’elle promeut : légère, sobre en ressources, et monitorée par elle-même dans sa propre CI.

Un projet challengeant

Ce projet très jeune avec un budget limité nécessitait d’implémenter rapidement des fonctionnalités complexes sans compromettre la stabilité ou la qualité. Un vrai défi d’innovation technique au service de l’impact environnemental.