Aller au contenu

PD-6 — Rétrospective

1. Contexte

Champ Valeur
Story ID PD-6
Titre Cross-Region Replication Paris → Frankfurt
Domaine storage
Projet infra
Date complétion 2025-01-XX
Verdict ACCEPTÉ AVEC RÉSERVES

2. Métriques

Métrique Valeur
Écarts majeurs 1 (SSE-KMS non implémenté)
Écarts mineurs 2
Points fluides 16
Points difficiles 5

3. Learnings clés

  • S3 Object Lock COMPLIANCE + CRR = solution WORM complète : Glacier Vault Lock initialement prévu s'est révélé redondant. Architecture plus simple.

  • Delete marker replication doit être explicitement désactivée pour WORM : Par défaut CRR peut répliquer les delete markers, compromettant l'immutabilité.

  • RTC (Replication Time Control) essentiel pour conformité SLA : Le SLA 15 minutes garanti est critique pour résilience probatoire. Fonctionnalité payante mais justifiée.

  • Le logging sur bucket destination CRR est optionnel : Le bucket source capture toutes les écritures. Alerte SonarQube S6258 documentée comme intentionnelle.

  • SSE-KMS CRR nécessite configuration additionnelle significative : replica_kms_key_id, permissions KMS cross-region, bloc sse_kms_encrypted_objects. SSE-S3 simplifie mais ne satisfait pas exigence clés distinctes.

4. Patterns applicables

Nouveau pattern : CRR WORM avec RTC

resource "aws_s3_bucket_replication_configuration" "crr" {
  bucket = aws_s3_bucket.paris.id
  role   = aws_iam_role.crr.arn

  rule {
    id     = "crr-paris-to-frankfurt"
    status = "Enabled"

    # CRITIQUE: Ne pas répliquer les suppressions
    delete_marker_replication {
      status = "Disabled"
    }

    # SLA 15 minutes garanti
    destination {
      bucket        = aws_s3_bucket.frankfurt.arn
      storage_class = "DEEP_ARCHIVE"

      replication_time {
        status  = "Enabled"
        time { minutes = 15 }
      }

      metrics {
        status = "Enabled"
        event_threshold { minutes = 15 }
      }
    }
  }
}

Pattern confirmé : IAM CRR cross-region

# Permissions Object Lock pour réplication
data "aws_iam_policy_document" "crr" {
  statement {
    actions = [
      "s3:GetReplicationConfiguration",
      "s3:ListBucket",
      "s3:GetObjectVersion",
      "s3:GetObjectVersionAcl",
      "s3:GetObjectVersionTagging",
      "s3:PutObjectRetention",      # Object Lock
      "s3:PutObjectLegalHold",      # Legal Hold
    ]
    resources = [
      aws_s3_bucket.paris.arn,
      "${aws_s3_bucket.paris.arn}/*",
      aws_s3_bucket.frankfurt.arn,
      "${aws_s3_bucket.frankfurt.arn}/*",
    ]
  }
}

5. Signal CLAUDE.md

Priorité haute : CRR WORM avec delete_marker_replication disabled.

### AWS S3 — CRR pour WORM (2026-02-XX)

**CRITIQUE** : Désactiver la réplication des delete markers pour conformité WORM.

```hcl
delete_marker_replication {
  status = "Disabled"  # OBLIGATOIRE pour WORM
}

Pourquoi : Si Enabled, une suppression sur source propage un delete marker sur destination, compromettant l'immutabilité.

RTC (Replication Time Control) : Activer pour SLA 15min garanti (payant mais requis pour conformité). ```

6. Conclusion

PD-6 a livré la réplication cross-region Paris → Frankfurt avec Object Lock COMPLIANCE préservé, RTC 15 minutes, et delete marker replication désactivée. L'écart majeur (SSE-S3 vs SSE-KMS) simplifie l'architecture mais ne satisfait pas l'exigence de clés distinctes par région. Le pattern CRR WORM est réutilisable pour toute architecture multi-région probatoire.


Rétrospective générée 2026-02-19 (Étape 10 batch storage)