Conceptes d'alta disponibilitat
RTO — Recovery Time Objective
El RTO (Recovery Time Objective — Objectiu de Temps de Recuperació) és el temps màxim acceptable que el sistema pot estar inoperatiu després d'una fallada. Respon a la pregunta: "Quant de temps ens podem permetre estar fora de servei?"
Exemples:
- Banc en línia: RTO < 1 minut.
- Botiga electrònica: RTO < 15 minuts.
- Informe intern mensual: RTO de 24 hores.
RPO — Recovery Point Objective
El RPO (Recovery Point Objective — Objectiu de Punt de Recuperació) és la quantitat màxima de dades que es pot perdre en cas de fallada, expressada en temps. Respon a la pregunta: "Quantes dades ens podem permetre perdre?"
Exemples:
- Transaccions bancàries: RPO = 0 (cap pèrdua de dades acceptable, replicació síncrona).
- Blog corporatiu: RPO = 24 hores (una còpia diària és suficient).
SLA — Service Level Agreement
El SLA és un acord formal entre el proveïdor del servei i el client que especifica el nivell de disponibilitat garantit. S'expressa en percentatge de temps disponible per any:
| SLA | Downtime màxim/any | Downtime màxim/mes |
|---|---|---|
| 99% ("dos nines") | 3,65 dies | 7,3 hores |
| 99,9% ("tres nines") | 8,76 hores | 43,8 minuts |
| 99,99% ("quatre nines") | 52,6 minuts | 4,4 minuts |
| 99,999% ("cinc nines") | 5,26 minuts | 26 segons |
Failover i Failback
- Failover: el procés automàtic o manual de commutació del servei al node secundari quan el node primari falla.
- Failback: el procés de retornar el servei al node primari original quan s'ha recuperat.
El failover pot ser:
- Automàtic: un sistema de monitoratge detecta la fallada i commuta el servei sense intervenció humana (Patroni, Galera, WSFC).
- Manual: un administrador ha d'executar les comandes necessàries per promoure el secundari.
L'espectre de la disponibilitat
graph LR
subgraph "Nivell 1 — Node únic"
SN[("Node únic\nSense redundància\nRTO: hores/dies")]
end
subgraph "Nivell 2 — Replicació"
RP[("Primari")] --> RS[("Rèplica")]
RS -.->|"failover manual"| RP
end
subgraph "Nivell 3 — Clústering automàtic"
CP[("Node 1\n(actiu)")] <-->|"heartbeat"| CS[("Node 2\n(standby)")]
CS -.->|"failover automàtic"| CP
end
subgraph "Nivell 4 — Distribuït"
DA[("DC Barcelona")] <-->|"replicació síncrona"| DB_node[("DC Madrid")]
DB_node <-->|"replicació síncrona"| DC[("DC València")]
end
SN --> |"millora"| RP
RP --> |"millora"| CP
CP --> |"millora"| DA
style SN fill:#DC2626,stroke:#b91c1c,color:#fff
style RP fill:#7C3AED,stroke:#6d28d9,color:#fff
style RS fill:#7C3AED,stroke:#6d28d9,color:#fff
style CP fill:#16A34A,stroke:#15803d,color:#fff
style CS fill:#16A34A,stroke:#15803d,color:#fff
style DA fill:#2563EB,stroke:#1d4ed8,color:#fff
style DB_node fill:#2563EB,stroke:#1d4ed8,color:#fff
style DC fill:#2563EB,stroke:#1d4ed8,color:#fff
Comparativa de solucions
| Solució | RTO típic | RPO típic | Complexitat | Cost |
|---|---|---|---|---|
| Còpia de seguretat diària | Hores | 24 hores | Baixa | Baix |
| Replicació asíncrona | Minuts | Segons | Mitjana | Mig |
| Replicació síncrona | Segons | 0 | Alta | Alt |
| Clústering actiu-passiu | < 30 s | 0 | Alta | Alt |
| Clústering actiu-actiu | < 1 s | 0 | Molt alta | Molt alt |
| Base de dades distribuïda | < 1 s | 0 | Molt alta | Molt alt |