MAISON CODE .
/ DevOps · Terraform · AWS · IaC

Infrastruttura come codice: Terraform vs Pulumi

Fare clic sui pulsanti nella console AWS è un debito tecnico. Come gestire la tua infrastruttura Headless utilizzando codice, file di stato e Git.

AB
Alex B.
Infrastruttura come codice: Terraform vs Pulumi

Configura manualmente il tuo bucket AWS S3. Hai abilitato CORS manualmente. 6 mesi dopo, è necessario avviare un ambiente di staging. Riesci a ricordare esattamente quali caselle hai spuntato? No. Infrastructure as Code (IaC) risolve questo problema. Definiamo i nostri server, database e record DNS in file di testo. Li affidiamo a Git. Li applichiamo in modo deterministico.

Perché Maison Code ne parla

In Maison Code Paris, agiamo come la coscienza architettonica dei nostri clienti. Spesso ereditiamo stack “moderni” costruiti senza una comprensione fondamentale della scala.

Discutiamo di questo argomento perché rappresenta un punto di svolta critico nella maturità ingegneristica. Implementarlo correttamente differenzia un MVP fragile da una piattaforma resiliente di livello aziendale.

Il modello dichiarativo (Terraform)

Terraform è lo standard del settore. Utilizza HCL (HashiCorp Configuration Language). Descrivi lo Stato finale. Terraform capisce come arrivarci.

# principale.tf
fornitore "aws" {
  regione = "noi-est-1"
}

risorsa "aws_s3_bucket" "risorse" {
  bucket = "maison-code-assets-prod"
  acl = "lettura pubblica"

  regola_cors {
    intestazioni_permesse = ["*"]
    metodi_permessi = ["OTTIENI"]
    consentiti_origins = ["https://maisoncode.paris"]
  }
}

L’esecuzione di “terraform apply” crea il bucket. Se cambio allowed_methods in ["GET", "HEAD"] ed eseguo di nuovo apply, Terraform aggiorna l’API del bucket. Abilita CI/CD per l’infrastruttura.

Il modello imperativo (Pulumi)

Terraform è fantastico, ma HCL è un linguaggio dedicato. Pulumi ti consente di scrivere l’infrastruttura in TypeScript. Questo ti dà loop, funzioni e logica distinta.

“dattiloscritto”. // indice.ts importa * come aws da “@pulumi/aws”;

const bucket = nuovo aws.s3.Bucket(“assets”, { acl: “lettura pubblica”, corRegole: [{ consentitiIntestazioni: [”*”], Metodi consentiti: [“OTTIENI”], consentitiOrigins: [“https://maisoncode.paris”], }], });

export const bucketName = bucket.id;


## Stato dirigente
Gli strumenti IaC memorizzano lo "stato" del mondo in un file (`terraform.tfstate`).
Questo file associa il tuo codice al mondo reale (l'ID risorsa AWS).
**Pericolo**: non memorizzare mai lo stato localmente. Se il tuo laptop si rompe, perdi l'accesso all'infrastruttura.
Archivia lo stato in un backend remoto (bucket S3 con blocco o Terraform Cloud).

## Rilevamento della deriva
La "deriva" si verifica quando uno sviluppatore junior accede alla console AWS ed elimina manualmente una regola del firewall per "correggere un bug".
Il codice dice che il firewall è attivo. La realtà dice che il firewall è disattivato.
Eseguiamo un lavoro cron giornaliero `terraform plan`.
Se rileva cambiamenti (Drift), ci avvisa su Slack.
"Attenzione: deriva dell'infrastruttura rilevata sul gruppo di sicurezza sg-123."

## Infrastruttura immutabile
Ai vecchi tempi, accedevamo ai server tramite SSH per aggiornare PHP.
Nel mondo IaC, trattiamo i server come **Bestiame, non come animali domestici**.
Per aggiornare l'app, distruggiamo il vecchio server e ne creiamo uno nuovo con la nuova immagine.
Ciò garantisce che nel corso degli anni non si accumulino "derive di configurazione" o artefatti nascosti.

## Strategia multi-cloud
Shopify è su Google Cloud. Le tue immagini sono su AWS S3. Le tue funzioni Edge sono su Cloudflare.
IaC li gestisce tutti in un unico file.
Puoi passare l'output di uno (URL AWS CloudFront) come input a un altro (Record DNS Cloudflare).

## 9. Gestione dei segreti: nessuna password in Git

È necessario passare la password del database alla funzione Lambda.
**MAI** scriverlo in `main.tf`.
**MAI** eseguire il commit di `.env`.
**Soluzione**: AWS Secrets Manager + origini dati Terraform.
1. Crea il segreto nella console AWS (o tramite CLI).
2. Terraform fa riferimento ad esso: `data.aws_secretsmanager_secret_version.db_pass.secret_string`.
3. Terraform lo inserisce come variabile d'ambiente in Lambda al momento della distribuzione.
Il segreto esiste solo nella RAM durante la distribuzione. Non tocca mai il disco.

## 10. Politica come codice (Sentinel/OPA)

Come si impedisce a uno sviluppatore junior di avviare un'istanza GPU da $ 5.000 al mese?
**Politica come codice**.
Utilizziamo **Open Policy Agent (OPA)** per scansionare il piano Terraform *prima* dell'applicazione.
`nega se tipo_istanza non è in ["t3.micro", "t3.small"]`.
Se il codice viola la policy, la pipeline CI fallisce.
Questo è "Guardrail, non guardiani".

## 11. Infrastruttura di distribuzione blu-verde

IaC ci consente di creare un **ambiente duplicato**.
1. Il live è "verde" (v1).
2. Terraform fa girare "Blu" (v2).
3. Eseguiamo test E2E su Blue.
4. Terraform aggiorna il Load Balancer (ALB) in modo che punti a Blue.
5. Se gli avvisi si attivano, Terraform riporta immediatamente l'ALB al verde.
6. Una volta stabile, Terraform distrugge Green.
Ciò fornisce una **sicurezza** che le distribuzioni manuali non possono mai offrire.

## 12. Rotazione delle credenziali del database

La conformità dice "Ruota le password ogni 30 giorni".
Gli umani lo odiano.
Terraform lo adora.
Configuriamo `aws_secretsmanager_secret_rotation`.
Fa girare una Lambda che:
1. Accedi a RDS.
2. Crea utente B.
3. Aggiorna segreto.
4. Aggiorna l'app.
5. Elimina l'utente A.
Zero tempi di inattività. Zero coinvolgimento umano.

## 14. Disaster Recovery (DR) come codice

Cosa succede se "us-east-1" non funziona? (Succede).
Con IaC, DR è uno script.
`terraform apply -var="region=us-west-2"`.
In 15 minuti, la tua intera infrastruttura (Load Balancer, EC2, Database) viene replicata dall'altra parte del Paese.
Lo verifichiamo trimestralmente eseguendo "Giorni di gioco".
Verifichiamo di poter avviare lo stack da zero in un account AWS vuoto.
Se si fanno clic sui pulsanti nella console, il DR è impossibile. Rimarrai giù per giorni.
Con IaC sei inattivo per pochi minuti.

## 15. Perché Maison Code?

Noi di **Maison Code** crediamo che **L'infrastruttura sia il prodotto**.
Non assumiamo "amministratori di sistema". Assumiamo **Ingegneri DevOps**.
Costruiamo infrastrutture autoriparanti, scalabili automaticamente e immutabili.
Ti consegniamo le chiavi (il Git Repo), non una scatola nera.
Diamo al tuo team la possibilità di effettuare implementazioni 10 volte al giorno senza timore di interrompere la rete.
Perché la velocità richiede sicurezza.

## 16. Conclusione

L'infrastruttura come codice è la differenza tra un "Progetto Hobby" e una "Piattaforma Enterprise".
Trasforma "Ops" in ingegneria del software.
Ti offre verificabilità, velocità e sicurezza.
Smetti di fare clic sui pulsanti standard. Inizia a scrivere codice.


<hr style="margin: 1rem 0" />

### Stanco della configurazione manuale del server?
Migriamo l'infrastruttura manuale su pipeline Terraform/Pulumi robuste e verificabili.


**[Automatizza My Cloud](/contatto)**.
**[Assumi i nostri architetti](/contact)**.