Passa al contenuto principale

Ambienti e Deploy

Container-first

Tutto il sistema è progettato per girare in container. Non è un dettaglio infrastrutturale — è un vincolo di progettazione che si rispetta fin dal primo giorno di sviluppo.

La conseguenza diretta è che ogni sviluppatore può farsi girare l'intero stack in locale, autonomamente, senza dipendere da ambienti condivisi o configurazioni manuali. Se per avviare il sistema in locale serve qualcosa che non è nel repository, c'è qualcosa che non va.

Ambienti

Locale

Ogni sviluppatore ha il proprio ambiente completo. Database, servizi dipendenti, tutto gira in container — tipicamente orchestrati con docker compose.

L'obiettivo è che l'avvio sia triviale:

docker compose up

Non ci sono configurazioni manuali, non ci sono prerequisiti impliciti, non ci sono servizi che "si assume siano già running". Se serve, si documenta in regole/ambiente-di-sviluppo.

Staging

Lo staging è il primo ambiente aggiornato quando si stacca una versione dal trunk. Riceve ogni release prima che arrivi in produzione ed è l'ambiente dove si verifica che tutto funzioni nel contesto reale — infrastruttura reale, dati reali o realistici, integrazioni reali.

Staging non è opzionale. Una versione non arriva in produzione senza passare per staging.

Produzione

L'ambiente di produzione riceve solo versioni già validate in staging. Il percorso è sempre trunk → staging → produzione, mai diretto.

Versionamento e deploy

Ogni deploy corrisponde a una versione tracciabile — un tag git. Non si deploya codice non taggato in staging o produzione. Il tag è l'unico riferimento non ambiguo che collega un ambiente a uno stato preciso dei sorgenti.

Vedi regole/versionamento per il workflow di rilascio.