Perché Ogni Oggetto Merita un Ciclo di Vita: Costruire uno Storage più Verde con DTZ ObjectStore

created: giovedì, nov 6, 2025

Introduzione

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

La verità è: la maggior parte degli oggetti memorizzati non dovrebbe vivere per sempre. Dagli artefatti di build transitori a esportazioni temporanee e dataset analitici di breve durata, molti dei dati che produciamo hanno una vita 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 conservare i dati in modo efficiente - si tratta di conservarli responsabilmente.

Il problema dello storage perpetuo

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

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

Progettare con il tempo in mente

Uno dei principali pattern del Green Software è la Gestione del ciclo di vita dei dati - garantire che le risorse digitali siano allineate alla rilevanza nel mondo reale.

In pratica, questo significa:

Quando applichi questo pattern, i vantaggi vanno oltre la sostenibilità:

Come DTZ ObjectStore mette i cicli di vita al primo posto

Il servizio DTZ ObjectStore è costruito con la gestione del ciclo di vita al suo 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 via 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.

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

Carica con 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 fisso (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 elencazione 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 metadata (inclusa l’espirazione 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 prima del tempo (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 del consumo energetico

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 è programmata in batch durante finestre temporali a basso impatto carbonico per minimizzare l’impronta dei job di background - trasformando l’applicazione delle lifecycle in una leva di sostenibilità, non solo in un’attività operativa.

Dalla policy alla pratica

Il ciclo di vita non riguarda la cancellazione sconsiderata - riguarda la progettazione 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 budget energetico.

L’obiettivo condiviso: sostenibilità by design

La gestione del ciclo di vita degli oggetti riflette direttamente l’etica del Green Software: cancellare le risorse di storage inutilizzate e impostare politiche di conservazione di default - un piccolo, intenzionale atto di responsabilità che scala.

Su DownToZero.Cloud, qui è dove la buona ingegneria incontra la buona cittadinanza. La nostra missione è permettere agli sviluppatori di progettare per zero sprechi - dove i dati vivono solo per il tempo 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 di scadenza integrato:

Esempio: caricare 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 politiche 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 nella tua architettura, riduci lo spreco cloud e abbracci un pattern di progettazione sostenibile che beneficia 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.