Appunti di lavoro - Se non è descritto non esiste

2025/04/14

Perché un'infrastruttura non documentata non è un'infrastruttura: è un favore personale che diventa debito tecnico.

Rappresentazione visiva di un Architetto che mette in ordine l'infrastruttura
Immagine generata da DALL-E 3

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.