GH GambleHub

Strategie DR e RTO/RPO

1) Principi di base

1. Obiettivi prima dei mezzi. Prima formuliamo RTO/RPO e scenari critici, poi scegliamo la tecnologia.
2. Segmentazione per importanza. Non tutti i servizi richiedono l'oro; suddivisi in termini di criticità aziendale.
3. I dati sono il kernel DR. Consistenza, replica, rilevamento dello strappo e punto di ripristino sono più importanti del ferro.
4. Automazione e convalida. Il Dottor non ha senso, senza test di riabilitazione e di telemetria.
5. Insegnamenti e prove. Un piano senza «game day» regolare è un'illusione di preparazione.
6. Sicurezza e compliance. Crittografia, isolamento, back-up WORM/immutabili, DPA/giurisdizione.

2) Termini e corrispondenze

RTO - Tempo dal momento dell'evento al ripristino del servizio «normale».
RPO è «l'età» dell'ultimo punto di recupero sano.
RLO (Recovery Level Objective) è il livello di funzionalità che è obbligato a ripristinare (servizio minimamente sostenibile).
MTD è la soglia dopo la quale le imprese subiscono danni inaccettabili.
RTA/RPA - Tempo effettivo/punto di ripristino dalla pratica.

Comunicazione RTO ≤ MTD; RPA ≤ RPO. Il divario tra gli obiettivi e i fatti è un oggetto post - mortem e miglioramenti.

3) Classi di strategie DR (livelli di preparazione)

LivelloDescrizioneRTO/RPO tipiciCostoApplicazione
Backup/RestoreSolo bacap e immagine ambienteRTO: ore-giorni, RPO: ore$Sistemi non ritrici, reporting
Pilot LightLuce: stack minimo alzato, dati replicatiRTO: decine di minuti-ore, RPO: minuti-ore$$Criticità media, risparmio
Warm StandbyStand caldo: quasi pronto, basso caricoRTO: minuti - $$$Core B2C, gateway di pagamento
Active/PassiveClone passivo completo, feelover automaticoRTO: minuti, RPO: secondi-minuti$$$$API mission-critical
Active/ActiveEntrambi i siti in venditaRTO≈0, RPO≈0. $$$$$SLO estremo, prodotti globali
💡 Regola: scegliere un livello minimo adeguato al rischio aziendale.

4) Script contro cui difenderci

Perdita della regione/cloud/centro dati (elettricista, rete, provider).
Corruzione dei dati/errore dell'operatore (rimozione, battitura, rottura logica).
Malware/crittografatore (ransomware).
Errore di rilascio/configurazione (outage di massa).
Crollo della dipendenza (KMS, DNS, segreti, provider di pagamenti).
Eventi legali (blocchi, impedimento dell'estrazione dei dati dalla giurisdizione).

Per ogni script, specificare RTO/RPO, livello DR, playbook, responsabili.

5) Strategie dei dati (chiave RPO)

5. 1 Bacapi

Registri transazioni completi + incrementali + (per database).
Archivi immutabili/WORM e copie off-line (air-gapped).
Directory dei bacapi con metadati e criptopodesche Test di ripristino programmati.

5. 2 Replica

Sincrona (RPO basso, ↑latentnost, rischio di distruzione).
Asincrona (bassa influenza su perf, RPO> 0; combinare con un oggetto di rottura).
CDC (Change Data Capture) per la replica in streaming e la ricostruzione dello stato.

5. 3 Protezione contro la rottura logica

Versioning/punti nel tempo (PITR) con finestra ≥ N giorni.
Le firme degli invarianti (bilanci, importi, chexumma) sono il primo dettaglio dei dati.
I canali di replica lenti (delay 15-60 min) sono un buffer contro la rottura istantanea.

Sketch di selezione punto di ripristino:
python def pick_restore_point(pitr, anomaly_signals, max_age):
healthy = [p for p in pitr if not anomaly_signals. after(p. time)]
return max(healthy, key=lambda p: p. time if now()-p. time <= max_age else -1)

6) Applicazione, stato, cache

Staitless - Scalabile e riavviabile in qualsiasi regione (immagine/elenco/manifesto in Git).
Stato (BD/cache/kew): la sorgente della verità è uno dei database; la cache e gli indici sono surrogabili.
Idampotenza e re-drive - La nuova consegna degli eventi è consentita; usate outbox/inbox, deadup e versioni.

7) Rete e punto di ingresso

Failover GSLB/DNS: latency/health-based, TTL brevi alla finestra dell'incidente.
Anycast/L7-proxy: unico IP, routing per la salute delle regioni.
Domini regionali e criteri di giurisdizione (geo-pinning per PII).
Feelover certificati/KMS - catene di riserva, dual-key.

Pseudocode del feelover:
python if slo_breach("region-a") or health("region-a")==down:
route. shift(traffic, from_="region-a", to="region-b", step=20) # канарим enable_readonly_if_needed()

8) Modello operativo e automazione

IaC/GitOps: infrastruttura della seconda regione = codice, installazione «monouso».
Policy as Code: gate «Nessun manifesto DR/bacap/alert - nessun rilascio».
Runbooks - istruzioni passo-passo e «pulsante rosso» identiche a entrambe le regioni.
I segreti sono crediti a breve termine, la Federazione OIDC, un piano di compromissione/ritiro.

Gate (idea):
rego package dr deny["Missing PITR ≥ 7d"] {
input. db. pitr_window_days < 7
}
deny["No restore test in 30d"] {
now() - input. db. last_restore_test > 3024h
}

9) Esercitazioni e test (Game Days)

La tabella degli scenari è la perdita di database, i dati «battuti», l'interruzione di KMS, la caduta della regione, il limite di egress improvviso.
Frequenza: trimestrale per missione-critici; Ogni sei mesi, per gli altri.
Metriche esercitazioni: RTA/RPA vs obiettivi, quota di passi automatici, numero di interventi manuali, errori playbook.
Chaos-smoke nelle release: la degradazione delle dipendenze non deve «rompere» i percorsi DR.

Esempio di mini-esercitazione:

T0: cut off the primary database (firewall drop)
T + 2m: GSLB shift 20% of traffic, then 100% at SLO_ok
T + 6m: checking business invariants and lag replication
T + 10m: post-drill: fixing RTA/RPA, playbook improvements

10) Playbook (modello canonico)

yaml playbook: "dr-failover-region-a-to-b"
owner: "platform-sre"
rto: "15m"
rpo: "5m"
triggers:
- "health(region-a)==down"
- "slo_breach(payments)"
prechecks:
- "backup_catalog ok; last_restore_test < 30d"
- "pitr_window >= 7d"
steps:
- "Announce incident; open war-room; assign IC"
- "Freeze writes in region-a (flag write_readonly)"
- "Promote db-b to primary; verify replication stopped cleanly"
- "Shift GSLB 20%→50%→100%; monitor p95/error"
- "Enable compensations and re-drive queues"
validation:
- "Business invariants (balances, duplicate_checks)"
- "Synthetic tests green; dashboards stable 30m"
rollback:
- "If db-b unhealthy: revert traffic; engage restore from PITR T-Δ"
comms:
- "Status updates each 15m; external note if SEV1"

11) Metriche di osservabilità DR

Replica lag (secondi), RPO-drivt (differenza tra RPO target e RPO effettivo).
Restore SLI: tempo di ripristino freddo/caldo per ambienti.
Coverage:% di servizi con playbook/backap/PITR-N giorni.
Drill score: quota di passaggi automatici, distribuzione RTA, frequenza di errori.
Immutabilità:% backup in WORM/air-gapped.
Metriche di evento: lunghezza delle code/velocità re-drive dopo il feelover.

12) Costi e compromessi

CapEx/OpEx: lo stand caldo è più economico di Active/Active, ma più costoso di Pilot Light.
Egress: la replica interregionale/trasversale costa denaro; cache/compressione/unità locali.
RTO/RPO vs $: ogni nove disponibilità e un secondo RPO costano il doppio - concordare con il business.
Finestre verdi: replica batch - in orologi economici/verdi.

13) Sicurezza e compliance

Crittografia «in pace» e «in transito», domini KMS separati per regione.
Bap immutabili, protezione da ransomware: «3-2-1» (3 copie, 2 supporti, 1 off-line), MFA-delete.
Giurisdizione: geo-pinning per PII, localizzazione dei backup, Legale Hold sopra TTL.
Disponibili in base al tempo: ruoli temporanei per le operazioni DR, registro di verifica.

14) Anti-pattern

«Scriviamo un piano più tardi», dottor senza esercitazioni.
Replicare senza una protezione da una rottura logica può creare un errore.
Una regione di KMS/segreti è impossibile da fare.
I Becap senza ripristini regolari sono il DOTTOR Shredinger.
Transazioni sincroni strettamente correlate tra le regioni - latitanza a cascata/calo.
Nessuna priorità: lo stesso livello DR per tutto (costoso e inutile).

15) Assegno-foglia architetto

1. RTO/RPO/RLO definiti per servizi e script?
2. Dati classificati: origine verità, PITR/finestra, WORM/immutabile?
3. È stato selezionato il livello DR (Backup/Restore, Pilot, Warm, A/P, A/A) per il servizio?
4. Rete: GSLB/Anycast, certificati/chiavi di riserva, bandiere «read-only»?
5. Idampotenza, outbox/inbox, transazioni compensative?
6. IaC/GitOps/Policy as Code, un click per la seconda regione?
7. Roadmap, KPI RTA/RPA, post-training?
8. Monitoraggio: lag, RPO-drivt, restore-SLI, drill-score, backap immutabili?
9. Sicurezza/Compilation: domini KMS, giurisdizione, Legale Hold?
10. Costo: budget egress, finestre verdi, livello ragionevole?

16) Mini-ricette e sketch

16. 1 PITR per Postges (idea):

bash base backup daily + WAL archive pg_basebackup -D/backups/base/$ (date +% F)
archive_command='aws s3 cp %p s3://bucket/wal/%f --sse'
restore pg_restore --time "2025-10-31 13:21:00Z"...

16. 2 Protezione contro la rottura logica (replica ritardata):

yaml replication:
mode: async apply_delay: "30m" # window to roll back on corruption

16. 3 Cambio di traffico (pseudo-API GSLB):

bash gslb set-weight api. example. com region-a 0 gslb set-weight api. example. com region-b 100

16. 4 Verifica degli invarianti dopo il feelover (pseudocode):

python assert total_balance(all_accounts) == snapshot_total assert no_duplicates(events_since(t_failover))

Conclusione

Il DR è la capacità di prendere decisioni tecniche e organizzative più velocemente di un aumento dei danni. Definire RTO/RPO realistici, scegliere un livello di preparazione adeguato, automatizzare l'infrastruttura e i controlli, allenarsi regolarmente e misurare RTA/RPA effettivi. Allora l'incidente non si trasformerà in un disastro, ma in un incidente gestito con esito prevedibile.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.