Appunti di lavoro - Se non è descritto non esiste
2025/04/14Perché un'infrastruttura non documentata non è un'infrastruttura: è un favore personale che diventa debito tecnico.
Ho ereditato troppi ambienti dove la conoscenza era orale: "Non toccare quel server", "Quella variabile funziona solo se...". Script con nomi assurdi, readme incompleti. Fragili e pronti a rompersi al primo cambio.
Documentare a posteriori? Tempo perso. Le cose evolvono troppo in fretta.
Docker ha risolto il "sul mio PC funziona": incapsula tutto, isola componenti – webserver, database, key-value store, applicativo. Trasportabile, ma sposta il caos, non lo elimina. Terraform va oltre: ti obbliga a descrivere. Se non è nel codice, non esiste. Trasforma il "qualcuno lo sapeva far funzionare" in un sistema chiaro, versionato e ripetibile.
Esempio concreto: cliente con infra gestita via Portainer (non il mio tool preferito, ma era lì). L'ho integrato senza stravolgere tutto.
Setup modulare:
- Repo Git unico: sorgenti app + infrastruttura.
- App containerizzata, build in AWS ECR.
- Deploy semplice: push nuova immagine, terraform apply.
- Stato remoto in S3: fonte di verità condivisa. Niente conflitti, tutto versionato.
Risultato: cambiamenti tracciati, zero sovrapposizioni. Chi subentra non deve pregare il predecessore. Conoscenza che resta anche quando le persone cambiano. Terraform è verboso, sì. Ma è l'unico modo per avere chiarezza reale e ridurre il debito tecnico.
Come partire senza drammi:
- Containerizza prima (Docker o Podman).
- Descrivi quello che cambi più spesso.
- Backend remoto (S3) dal giorno uno.
- Trattalo come abitudine, non come atto di eroismo.
Preferisci l'open-source? OpenTofu e passa la paura.
Hai ambienti che dipendono dalla memoria di qualcuno? Parliamone. Ti dico se Terraform è la soluzione o se serve altro.