Pourquoi Chaque Objet Mérite un Cycle de Vie : Construire un Stockage plus Écologique avec DTZ ObjectStore

created: jeudi, nov. 6, 2025

Introduction

Dans le développement cloud, nous considérons souvent le stockage comme infini. Chaque log, sauvegarde ou ensemble de données que nous créons est conservé indéfiniment - non pas parce que c’est toujours utile, mais parce que la suppression semble risquée. Pourtant, cet état d’esprit augmente silencieusement à la fois les coûts et l’impact carbone.

La vérité est : la plupart des objets stockés ne devraient pas vivre éternellement. Des artefacts de construction éphémères aux exports temporaires en passant par les ensembles de données analytiques à courte durée de vie, une grande partie des données que nous produisons a une durée de vie naturelle. Le défi consiste à aligner ce cycle de vie avec nos systèmes.

Chez DownToZero.Cloud, nous avons conçu DTZ ObjectStore autour de ce principe. Il ne s’agit pas seulement de stocker les données efficacement - il s’agit de le faire responsablement.

Le Problème du Stockage Perpétuel

Chaque objet dans le cloud consomme plus que de l’espace disque. Il utilise :

Cette activité continue même pour des données qui ne sont jamais consultées à nouveau. En essence, notre stockage a une ombre carbone - et l’absence de gestion des cycles de vie des données l’agrandit avec le temps.

Concevoir avec le Temps en Tête

Un des Green Software Patterns fondamentaux est la Gestion du Cycle de Vie des Données - assurer que les ressources numériques correspondent à leur pertinence réelle.

En pratique, cela signifie :

Lorsque vous appliquez ce pattern, les avantages dépassent la durabilité :

Comment DTZ ObjectStore Place les Cycles de Vie au Premier Plan

Le service DTZ ObjectStore est construit avec la gestion du cycle de vie au cœur. Contrairement aux systèmes de stockage traditionnels où les TTL sont une réflexion après coup, DTZ intègre cette capacité dans le flux de création d’objet.

1) TTL par Objet via Headers HTTP

Attachez un TTL lors de votre upload. Utilisez soit une durée relative (X-DTZ-EXPIRE-IN) soit un horodatage absolu (X-DTZ-EXPIRE-AT). Fournissez votre clé API en X-API-KEY.

URL de base : https://objectstore.dtz.rocks/api/2022-11-28

Uploader avec un TTL de 24 heures (durée) :

curl -X PUT \
  "https://objectstore.dtz.rocks/api/2022-11-28/obj/logs/builds/2025-11-05.json" \
  -H "X-API-KEY: $DTZ_API_KEY" \
  -H "X-DTZ-EXPIRE-IN: P1D" \
  --data-binary @build-output.json

Uploader avec expiration à un instant précis (RFC-3339) :

curl -X PUT \
  "https://objectstore.dtz.rocks/api/2022-11-28/obj/exports/report.csv" \
  -H "X-API-KEY: $DTZ_API_KEY" \
  -H "X-DTZ-EXPIRE-AT: 2025-12-01T00:00:00Z" \
  --data-binary @report.csv

2) Lire, Inspecter et Lister les Objets

Télécharger un objet :

curl -s \
  "https://objectstore.dtz.rocks/api/2022-11-28/obj/exports/report.csv" \
  -H "X-API-KEY: $DTZ_API_KEY" -o report.csv

Vérifier les métadonnées (incluant expiration calculée par le serveur) :

curl -I \
  "https://objectstore.dtz.rocks/api/2022-11-28/obj/exports/report.csv" \
  -H "X-API-KEY: $DTZ_API_KEY"
# Recherchez des en-têtes comme :
# X-DTZ-EXPIRATION: 2025-12-01T00:00:00Z

Lister les objets par préfixe :

curl -s \
  "https://objectstore.dtz.rocks/api/2022-11-28/obj/?prefix=logs/builds/" \
  -H "X-API-KEY: $DTZ_API_KEY" \
  | jq .
# La réponse inclut des champs par objet comme key, size, lastModified, et expiration.

Supprimer prématurément (si nécessaire) :

curl -X DELETE \
  "https://objectstore.dtz.rocks/api/2022-11-28/obj/exports/report.csv" \
  -H "X-API-KEY: $DTZ_API_KEY"

3) Nettoyage Sensible à l’Énergie

La suppression de chaque objet est divisée en deux phases. Lorsqu’un objet atteint son temps d’expiration, il n’est plus accessible via l’API, mais reste présent dans le système de stockage (sans être facturé à ce moment). La suppression effective est planifiée en lots durant des fenêtres horaires à faible empreinte carbone pour minimiser l’impact des jobs en arrière-plan - transformant l’application du cycle de vie en levier de durabilité, pas seulement en tâche opérationnelle.

De la Politique à la Pratique

Le cycle de vie ne consiste pas à supprimer sans réfléchir - il s’agit de concevoir avec un but. Les patterns efficaces sont :

Définissez les règles une fois et laissez le système s’optimiser continuellement - consommant moins, coûtant moins, et accomplissant plus avec la même enveloppe énergétique.

Le But Commun : La Durabilité par Conception

La gestion du cycle de vie des objets reflète directement l’éthique du Green Software : supprimer les ressources de stockage inutilisées et définir des politiques de rétention par défaut - un petit acte intentionnel de gestion à grande échelle.

Chez DownToZero.Cloud, c’est là où le bon génie logiciel rencontre la bonne citoyenneté. Notre mission est d’aider les développeurs à concevoir pour zéro gaspillage - où les données vivent uniquement aussi longtemps que nécessaire, et pas plus.

Intégration GitHub Actions

La gestion du cycle de vie des objets s’intègre parfaitement dans les pipelines CI/CD. DTZ fournit des GitHub Actions dédiées pour uploader et télécharger les objets avec support intégré de l’expiration :

Exemple : Upload d’un artefact de build avec une expiration de 30 jours

- name: Upload build artifact
  uses: DownToZero-Cloud/objectstore-upload@main
  with:
    api_key: ${{ secrets.DTZ_API_KEY }}
    name: build.zip
    expiration: P30D

Cela rend l’application des politiques de cycle de vie simple et directe dans vos workflows de déploiement - garantissant que les artefacts temporaires ne s’accumulent pas indéfiniment.

Conclusion

Le stockage doit être dynamique, pas statique.

En intégrant la conscience du cycle de vie dans votre architecture, vous réduisez le gaspillage cloud et adoptez un pattern de conception durable bénéfique pour la planète, votre plateforme et vos utilisateurs.

DTZ ObjectStore transforme ce principe en pratique - donnant à chaque objet une histoire, un but, et surtout, une fin.