Aller au contenu
Cloud high

Résilience cloud : HA, Disaster Recovery et continuité d'activité

14 min de lecture

Votre application cloud tombe en panne : combien de temps pouvez-vous rester indisponible avant de perdre des clients ? Combien de données pouvez-vous vous permettre de perdre ? Ce guide vous explique comment concevoir des architectures cloud résilientes avec haute disponibilité (HA), disaster recovery (DR), et stratégies de sauvegarde adaptées à vos objectifs métier (RTO/RPO).

  • La différence entre HA (Haute Disponibilité) et DR (Disaster Recovery)
  • Comment définir RTO (Recovery Time Objective) et RPO (Recovery Point Objective)
  • Concevoir une architecture multi-zone tolérante aux pannes
  • Mettre en place une stratégie de backup et restore efficace
  • Les patterns cloud-native pour la résilience

Prérequis : Connaître les bases du cloud et les zones de disponibilité. Si besoin, voir Régions et zones cloud.

Haute Disponibilité (HA) : éviter l’interruption

Section intitulée « Haute Disponibilité (HA) : éviter l’interruption »

Objectif : Garantir que votre application reste accessible même si un composant tombe en panne (serveur, datacenter, réseau).

Principe : Redondance + basculement automatique (failover).

Exemple concret :

Vous avez un site e-commerce. Pour garantir la HA :

  • Déployer l’application dans 2 zones de disponibilité (AZ) différentes
  • Placer un load balancer devant les serveurs
  • Si une AZ tombe, le load balancer redirige automatiquement vers l’autre

SLA typique : 99.9% à 99.99% de disponibilité (8h à 52 min d’indisponibilité/an max)

Objectif : Récupérer après un événement catastrophique (incendie datacenter, cyberattaque, corruption de données, erreur humaine massive).

Principe : Sauvegardes + réplication + plan de reprise testé régulièrement.

Exemple concret :

Un ransomware chiffre toute votre base de données production. Sans DR :

  • ❌ Vos données sont perdues
  • ❌ Vous payez la rançon (sans garantie de récupération)

Avec DR :

  • ✅ Vous restaurez la base depuis le backup de la veille
  • ✅ Perte maximale : 24h de données (RPO = 24h)
CritèreHaute Disponibilité (HA)Disaster Recovery (DR)
ObjectifÉviter l’interruptionSe remettre de l’interruption
Échelle tempsSecondes à minutesMinutes à heures
ÉvénementPanne technique (serveur, zone)Catastrophe (incendie, cyber, corruption)
SolutionRedondance + failover autoBackups + réplication + runbook
CoûtMoyen (x2 à x3 ressources)Variable (stockage backups + test DR)
TestAutomatique (load balancer)Manuel régulier (drill DR)

Avant de concevoir une architecture résiliente, définissez deux métriques clés avec le métier :

Question : Combien de données pouvez-vous perdre maximum ?

Définition : Ancienneté maximale acceptable de la dernière sauvegarde avant l’incident.

Exemples :

Cas d’usageRPO acceptableStratégie backup
Blog personnel1 semaineBackup hebdomadaire manuel
Site e-commerce1 heureBackup horaire automatisé
Transactions bancaires0 minute (zéro perte)Réplication synchrone continue

Concrètement :

  • RPO = 24h → Backup quotidien à 3h du matin. Si incident à 14h, vous perdez 11h de données.
  • RPO = 1h → Backup toutes les heures. Si incident à 14h32, vous perdez max 32 min de données.
  • RPO = 0 → Réplication synchrone (chaque transaction écrite dans 2 datacenters).

Question : Combien de temps d’indisponibilité pouvez-vous tolérer ?

Définition : Délai maximal acceptable entre l’incident et le retour à la normale.

Exemples :

Cas d’usageRTO acceptableArchitecture nécessaire
Site vitrine corporate4 heuresBackup + restore manuel
SaaS B2B (clients professionnels)15 minutesHA multi-zone + failover auto
Plateforme financière0 minute (zéro downtime)Active-Active multi-région

Concrètement :

  • RTO = 4h → Vous avez 4h pour restaurer le backup et redémarrer l’app (acceptable pour un intranet interne)
  • RTO = 15 min → Failover automatique vers zone secondaire (e-commerce, SaaS)
  • RTO = 0 → Architecture active-active, pas de failover (banque, bourse)

Matrice RTO/RPO : plus RTO/RPO sont faibles, plus l'architecture est coûteuse

RTORPOCoûtArchitecture type
Élevé (4h+)Élevé (24h+)Backup quotidien + restore manuel
Moyen (1h)Moyen (1h)€€HA multi-zone + backup horaire
Faible (5min)Faible (5min)€€€HA multi-zone + réplication async
ZéroZéro€€€€Active-active multi-région + sync

La haute disponibilité repose sur la redondance géographique : déployer votre application dans plusieurs zones de disponibilité (AZ) indépendantes.

Une zone de disponibilité est un datacenter (ou groupe de datacenters) isolé au sein d’une même région cloud :

  • Alimentation électrique séparée
  • Refroidissement indépendant
  • Réseau dédié avec interconnexion très faible latence (< 2ms)

Exemple Outscale eu-west-2 (France) :

  • eu-west-2a, eu-west-2b, eu-west-2c : 3 sous-régions indépendantes
  • Si eu-west-2a perd l’électricité, eu-west-2b et eu-west-2c continuent de fonctionner

Architecture haute disponibilité multi-AZ : Load Balancer répartissant le trafic vers 3 App Servers (AZ-A, AZ-B, AZ-C), connectés à une base de données RDS Multi-AZ

Composants :

  1. Load Balancer : Répartit le trafic entre les 3 AZ, health checks automatiques
  2. App Servers : Déployés dans chaque AZ (minimum 2 AZ, idéal 3)
  3. Database : RDS Multi-AZ avec réplication synchrone automatique

Scénario de panne :

  1. AZ-A perd l’électricité → tous ses serveurs tombent
  2. Load balancer détecte que AZ-A ne répond plus (health check fail)
  3. Trafic automatiquement redirigé vers AZ-B et AZ-C
  4. Utilisateurs ne voient aucune interruption
  • Application déployée dans au moins 2 AZ (idéal : 3)
  • Load balancer avec health checks actifs
  • Base de données en mode Multi-AZ ou réplication synchrone
  • Stockage répliqué (S3 automatic replication, EBS snapshots multi-AZ)
  • Sessions externalisées (Redis, DynamoDB) pour rendre les serveurs stateless
  • Autoscaling configuré pour remplacer automatiquement les instances défaillantes

Même avec HA, les backups restent essentiels pour protéger contre :

  • Corruption de données
  • Ransomware / cyberattaque
  • Erreur humaine (DELETE FROM users WHERE 1=1;)
  • Bug applicatif qui détruit les données

3 copies de vos données :

  • 1 copie principale (production)
  • 2 sauvegardes

2 supports différents :

  • 1 local (snapshot disque, backup région primaire)
  • 1 distant (backup région secondaire ou autre cloud)

1 copie offline ou immuable :

  • Protection contre ransomware (backup verrouillé, non supprimable pendant X jours)
TypeFréquenceRPOCas d’usage
Snapshot disqueHoraire1hRécupération rapide, même région
Backup automatisé RDSQuotidien24hBase de données production
Réplication cross-regionContinue< 1 minDR multi-région
Backup immuableHebdomadaire1 semaineProtection ransomware
Archive GlacierMensuel1 moisConformité légale (7 ans)
  1. Snapshot automatique toutes les heures (rétention 24h) → RPO 1h
  2. Backup quotidien à 3h du matin (rétention 30 jours) → Récupération erreur humaine
  3. Backup hebdomadaire immuable (rétention 1 an) → Protection ransomware
  4. Réplication cross-region en continu → DR régional

Coût estimé (base de données 100 GB) :

  • Snapshots horaires : ~50 €/mois
  • Backups quotidiens : ~20 €/mois
  • Réplication cross-region : ~100 €/mois
  • Archive Glacier : ~10 €/mois

Total : ~180 €/mois pour une protection complète

Selon votre RTO/RPO, choisissez un pattern DR adapté :

Principe : Backups réguliers, restore manuel en cas de disaster.

Coût : € (stockage backups uniquement)

Scénario :

  1. Disaster détecté → équipe alertée
  2. Provision manuelle infrastructure région secondaire (Terraform)
  3. Restore du backup le plus récent
  4. Redirection DNS vers nouvelle région
  5. Tests et mise en prod

Pour qui : Applications non critiques, intranets, environnements dev/test

Principe : Infrastructure minimale toujours active en région secondaire (base de données répliquée), reste à provisionner en cas de disaster.

Coût : €€ (base de données secondaire + stockage)

Scénario :

  1. Disaster détecté
  2. Scale up infra secondaire (autoscaling rapide)
  3. Basculement DNS
  4. Perte de données limitée au delta de réplication

Pour qui : SaaS B2B, e-commerce moyenne taille

Principe : Environnement secondaire actif mais sous-dimensionné, peut scaler rapidement.

Coût : €€€ (infra secondaire + réplication continue)

Scénario :

  1. Disaster détecté
  2. Autoscaling immédiat région secondaire
  3. Basculement load balancer global
  4. Perte minimale de données

Pour qui : Plateformes SaaS critiques, fintech

Principe : Deux régions actives en parallèle, trafic réparti 50/50, réplication synchrone.

Coût : €€€€ (double infra + réplication sync + orchestration complexe)

Scénario :

  1. Disaster région A → détection automatique (health check)
  2. Trafic immédiatement redirigé vers région B
  3. Zéro perte de données (sync réplication)
  4. Utilisateurs ne voient rien

Pour qui : Banques, bourses, services critiques gouvernementaux

Problème : Un service dépendant tombe, votre app continue d’envoyer des requêtes qui échouent, cascade de timeouts.

Solution : Détecter le service défaillant et “ouvrir le circuit” → retourner une erreur immédiate sans tenter l’appel.

from circuitbreaker import circuit
@circuit(failure_threshold=5, recovery_timeout=60)
def call_external_service():
return requests.get("https://api.external.com/data")

Si 5 échecs consécutifs → circuit ouvert pendant 60 secondes (pas d’appel), puis réessai.

Problème : Erreur temporaire (réseau instable), mais vous abandonnez immédiatement.

Solution : Réessayer automatiquement avec délai croissant (1s, 2s, 4s, 8s…).

import time
def retry_with_backoff(func, max_retries=5):
for i in range(max_retries):
try:
return func()
except Exception as e:
if i == max_retries - 1:
raise
time.sleep(2 ** i) # 1s, 2s, 4s, 8s, 16s

Problème : Un service lent monopolise toutes vos ressources, autres services impactés.

Solution : Isoler les ressources (pool de connexions séparé par service).

# Pool dédié pour service critique
critical_pool = ThreadPoolExecutor(max_workers=10)
# Pool dédié pour service non critique
non_critical_pool = ThreadPoolExecutor(max_workers=5)

Si le service non-critique sature, le critique continue de fonctionner.

Problème : Service recommandations produit tombe → tout le site e-commerce tombe.

Solution : Afficher le site sans recommandations plutôt que planter.

try:
recommendations = get_recommendations(user_id)
except Exception:
recommendations = [] # Dégradation gracieuse

Le site fonctionne, juste sans cette feature non critique.

La résilience cloud repose sur plusieurs piliers complémentaires :

  1. HA (Haute Disponibilité) : Redondance multi-zone + failover automatique
  2. DR (Disaster Recovery) : Backups testés + plan de reprise documenté
  3. RTO/RPO : Définir avec le métier AVANT de concevoir l’architecture
  4. Stratégie backup : Règle 3-2-1, snapshots + réplication + immutabilité
  5. Patterns résilience : Circuit breaker, retry, bulkhead, graceful degradation

Règle d’or : Ne sur-engineerez pas. Adaptez RTO/RPO aux besoins métier réels, pas à “zéro downtime” systématique.

Limites et compromis du cloud

Découvrez les contraintes réelles du cloud (coûts, latence, lock-in)

Limites et compromis

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.