Perché ogni oggetto merita un ciclo di vita: costruire uno storage più sostenibile con DTZ ObjectStore

created: giovedì, nov 6, 2025

Introduzione

Nello sviluppo cloud, spesso consideriamo lo storage come infinito. Ogni log, backup o dataset che creiamo viene conservato indefinitamente - non perché sia sempre utile, ma perché cancellarlo sembra rischioso. Eppure questa mentalità aumenta silenziosamente sia i costi sia l’impatto di carbonio.

La verità è: la maggior parte degli oggetti memorizzati non dovrebbe vivere per sempre. Dai artefatti di build transitori a esportazioni temporanee e dataset analitici di breve durata, gran parte dei dati che produciamo ha una durata naturale. La sfida è allineare quel ciclo di vita ai nostri sistemi.

Su DownToZero.Cloud, abbiamo progettato DTZ ObjectStore attorno a questo principio. Non si tratta solo di memorizzare i dati in modo efficiente - si tratta di memorizzarli responsabilmente.

Il problema dell’archiviazione perpetua

Ogni oggetto nel cloud consuma più dello spazio su disco. Usa:

Questa attività continua persiste anche per i dati che non vengono mai più consultati. In sostanza, il nostro storage ha un’ombra di carbonio - e cicli di vita dei dati non gestiti la fanno crescere nel tempo.

Progettare tenendo conto del tempo

Uno dei principali Green Software Patterns è la gestione del ciclo di vita dei dati - assicurarsi che le risorse digitali siano allineate alla loro rilevanza nel mondo reale.

In pratica, ciò significa:

Quando applichi questo pattern, i benefici si estendono oltre la sostenibilità:

Come DTZ ObjectStore rende i cicli di vita una priorità

Il servizio DTZ ObjectStore è costruito con la gestione del ciclo di vita al centro. A differenza dei sistemi di storage tradizionali dove i TTL sono un ripensamento, DTZ integra questa capacità nel flusso di lavoro di creazione degli oggetti.

1) TTL per singolo oggetto tramite header HTTP

Allega un TTL quando carichi. Usa una durata relativa (X-DTZ-EXPIRE-IN) o un timestamp assoluto (X-DTZ-EXPIRE-AT). Fornisci la tua API key come X-API-KEY.

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

Carica con un TTL di 24 ore (durata):

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

Caricamento che scade a un orario fissato (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) Lettura, ispezione e elenco degli oggetti

Scarica un oggetto:

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

Controlla i metadati (inclusa l’expiration calcolata dal server):

curl -I \
  "https://objectstore.dtz.rocks/api/2022-11-28/obj/exports/report.csv" \
  -H "X-API-KEY: $DTZ_API_KEY"
# Look for headers like:
# X-DTZ-EXPIRATION: 2025-12-01T00:00:00Z

Elenca oggetti per prefisso:

curl -s \
  "https://objectstore.dtz.rocks/api/2022-11-28/obj/?prefix=logs/builds/" \
  -H "X-API-KEY: $DTZ_API_KEY" \
  | jq .
# Response includes per-object fields like key, size, lastModified, and expiration.

Elimina in anticipo (se necessario):

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

3) Pulizia consapevole dell’energia

La cancellazione di ogni oggetto è suddivisa in due fasi. Quando un oggetto raggiunge il suo tempo di scadenza, non è più accessibile tramite l’API, ma rimane presente nel sistema di storage (e a quel punto non viene fatturato). La cancellazione effettiva è pianificata in batch durante finestre di basso impatto carbonio per minimizzare l’impronta dei job in background - trasformando l’applicazione delle policy di ciclo di vita in una leva di sostenibilità, non solo in un’attività operativa.

Dalla policy alla pratica

Il ciclo di vita non significa cancellare imprudentemente - significa progettare con uno scopo. Pattern che funzionano bene:

Definisci le regole una volta e lascia che il sistema si ottimizzi continuamente - consumando meno, costando meno e facendo di più con lo stesso involucro energetico.

L’obiettivo condiviso: sostenibilità by design

La gestione del ciclo di vita degli oggetti riflette direttamente l’etica del Green Software: elimina le risorse di storage non usate e imposta politiche di retention di default - un piccolo, intenzionale atto di cura che scala.

Su DownToZero.Cloud, questo è il punto in cui la buona ingegneria incontra la buona cittadinanza. La nostra missione è dare ai sviluppatori il potere di progettare per zero sprechi - dove i dati vivono solo finché necessario, e non oltre.

Integrazione con GitHub Actions

La gestione del ciclo di vita degli oggetti si integra perfettamente nelle pipeline CI/CD. DTZ fornisce GitHub Actions dedicate per caricare e scaricare oggetti con supporto integrato per la scadenza:

Esempio: carica un artefatto di build con scadenza a 30 giorni

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

Questo rende semplice applicare le policy di lifecycle direttamente nei workflow di deployment - garantendo che gli artefatti temporanei non si accumulino indefinitamente.

Conclusione

Lo storage dovrebbe essere dinamico, non statico.

Integrando la consapevolezza del ciclo di vita nell’architettura, riduci gli sprechi cloud e abbracci un pattern di progettazione sostenibile che avvantaggia il pianeta, la tua piattaforma e i tuoi utenti allo stesso modo.

DTZ ObjectStore trasforma questo principio in pratica - dando a ogni oggetto una storia, uno scopo e, cosa più importante, una fine.