Retour aux ressources
// architecture · scaling

Passer à l’échelle sans exploser la facture

Encaisser dix fois plus de trafic n'oblige pas à payer dix fois plus, ni tout le temps. La suite de mon archi e-commerce : comment je dimensionne pour tenir un pic, puis redescendre — sans laisser la facture en haut.

Guide13 juil. 2026~8 min · intermédiaire
ALBAuto ScalingRDS replicasElastiCacheCloudFront
01

Le point de départ

On part de l'archi e-commerce : EC2 pour le site, RDS pour la base, S3 + CloudFront pour les images. Pour scaler, on ne grossit pas une seule machine à l'infini — on en met plusieurs derrière un load balancer, et on décharge la base.

// le chemin d’une requête
Visiteur
client
CloudFront
CDN
EC2
web · PHP/Next
RDS
base
S3
photos produit
Lambda
→ WebP + tailles
CloudFront sert aussi les images depuis S3
i

Si tu n'as pas lu la base, commence par pourquoi AWS pour un e-commerce — cet article en est la suite directe.

02

Grossir puis redescendre

La clé du coût maîtrisé, c'est l'élasticité : ajouter des instances quand le trafic monte, les retirer quand il redescend. On ne paie la capacité de pointe que pendant la pointe.

autoscaling.tfcopier
# auto-scaling : grossir au trafic, redescendre ensuite
resource "aws_autoscaling_policy" "cpu" {
name = "scale-on-cpu"
policy_type = "TargetTrackingScaling"
target_tracking_configuration {
predefined_metric_specification {
predefined_metric_type = "ASGAverageCPUUtilization"
}
target_value = 60.0 # vise 60% de CPU : au-dela, on ajoute une instance
}
}
01
Load balancer

Un ALB répartit le trafic sur N instances et retire automatiquement celles qui échouent au health check.

02
Auto-scaling

Des règles sur le CPU (ou la file de requêtes) ajoutent/retirent des instances. Min 2 pour la résilience, max borné pour le budget.

03
Read replicas

Les lectures (catalogue, fiches produit) partent sur des répliques RDS ; la base primaire garde les écritures (commandes).

04
Cache

ElastiCache/Redis absorbe ce qui est lu en boucle. La requête la moins chère est celle qu'on ne fait pas.

03

Décharger la base

La base est presque toujours le premier goulot. Avant d'ajouter des serveurs web, on met en cache ce qui est lu en boucle — souvent 80% des requêtes portent sur 20% des données.

cache.tscopier
// soulager la base : mettre en cache ce qui est lu en boucle
const cached = await redis.get(key);
if (cached) return JSON.parse(cached); // pas de requete DB
const rows = await db.query("SELECT ..."); // fallback base
await redis.set(key, JSON.stringify(rows), "EX", 60);
return rows;
!

Le piège : sur-provisionner « au cas où » et laisser tourner. Fixe un max d'auto-scaling raisonnable et surveille — sinon un bug qui boucle peut faire exploser la facture en une nuit.

04

Garder le coût lié au trafic

Socle stable en Savings Plans (les 2 instances min), pointe en on-demand : tu engages sur le prévisible seulement.
CloudFront devant tout le statique : moins d'appels arrivent jusqu'à l'EC2.
Auto-scaling qui redescend vraiment la nuit — vérifie les métriques, pas juste la config.
i

Le scaling et le coût sont les deux faces d'une même pièce. Le playbook pour dégonfler ce qui a dérivé : diviser une facture AWS par deux.

05

Quelle politique de scaling choisir

« Auto-scaling » n'est pas un seul bouton. Il y a plusieurs manières de déclencher l'ajout d'instances, et le choix change le comportement pendant un pic. Sur mon archi e-commerce, je pars presque toujours du target tracking : je fixe une cible — par exemple 50 % de CPU moyen, ou un nombre de requêtes par instance — et EC2 Auto Scaling crée et gère lui-même les alarmes CloudWatch pour tenir cette cible. AWS le recommande explicitement pour scaler sur le CPU moyen ou le nombre de requêtes par cible.

Target tracking

Mon défaut

Tu donnes une cible (50 % CPU), AWS gère les alarmes et vise ce chiffre — comme un thermostat.
Il redescend plus doucement qu'il ne monte : la priorité est la dispo, pas la baisse agressive.
Métrique conseillée : ALBRequestCountPerTarget, qui suit la charge réelle mieux que le CPU sur du web.
Step scaling

Contrôle fin

Tu définis des paliers : +1 instance si la charge dépasse un seuil, +3 si elle explose vraiment.
Utile quand la réaction doit être proportionnelle à l'ampleur du dépassement.
Plus de câblage manuel : c'est toi qui gères les alarmes CloudWatch.
i

Détail qui piège beaucoup de monde : le cooldown ne s'applique qu'aux simple scaling policies. Le target tracking et le step scaling peuvent relancer un scale-out immédiatement — c'est le warmup d'instance (le temps qu'une nouvelle machine devienne saine) qui régule le rythme, pas un cooldown fixe. AWS déconseille désormais les simple scaling policies au profit du target tracking.

Anticiper le pic prévisible : predictive scaling

Le target tracking est réactif : il attend que le CPU monte pour agir, et une nouvelle instance met une ou deux minutes à démarrer. Pour un pic que je vois venir — soldes du lundi matin, campagne à 18 h — j'ajoute du predictive scaling. Il analyse jusqu'à 14 jours d'historique, en déduit une prévision horaire sur 48 h, et provisionne avant que la charge n'arrive. Deux choses à retenir : il démarre en mode « forecast only » (il prévoit sans scaler, le temps que tu valides), et il ne fait que scaler out — pour redescendre, tu gardes tes politiques dynamiques. Predictive gère le prévisible, target tracking encaisse l'imprévu par-dessus.

!

Pour les read replicas, pas de magie équivalente : RDS ne gère pas l'auto-scaling des répliques. On les ajoute et on les retire à la main, et chaque réplique est facturée comme une instance de sa classe. C'est justement pour ça que le cache passe avant : ajouter une réplique, c'est un coût fixe qui ne redescend pas tout seul la nuit.

06

L'économie du taux de hit

Un cache n'a de valeur que par son taux de hit : la part des requêtes servies depuis le cache plutôt que depuis l'origine. Ce chiffre n'est pas cosmétique, il pilote directement la facture. À 80 % de hit, seule une requête sur cinq atteint la base ou l'EC2 ; à 95 %, c'est une sur vingt. Passer de 80 à 95 %, ce n'est pas « 15 % de mieux » : c'est diviser par quatre la charge qui arrive derrière — donc potentiellement une read replica en moins ou deux instances EC2 en moins pendant le pic.

hit 80 %
20% origine atteinte
hit 90 %
10% origine atteinte
hit 95 %
5% origine atteinte
hit 99 %
1% origine atteinte

Concrètement il y a deux caches à surveiller. Sur ElastiCache/Redis, la documentation AWS sur les métriques à suivre recommande d'alarmer sur les evictions et la mémoire : quand Redis évince des clés faute de place, ton taux de hit chute et la base réencaisse tout. Devant le statique, CloudFront a son propre levier : augmenter le cache hit ratio en allongeant le max-age, en limitant les query strings et cookies pris dans la clé de cache, et en activant Origin Shield comme couche supplémentaire devant l'origine.

ElastiCacheVise un taux de hit ≥ 80 % ; surveille Evictions et FreeableMemory, sinon le cache travaille contre toi.
CloudFrontmax-age long sur le statique, clé de cache minimale, Origin Shield pour les gros catalogues d'images.
Warm poolSi tes instances bootent lentement, un [warm pool](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html) tient des machines pré-initialisées en état Stopped — tu ne paies alors que l'EBS, pas le calcul.

La bonne boucle : mesure d'abord le taux de hit, puis décide. Souvent, gagner 10 points de hit coûte zéro (juste de la config) et t'évite d'ajouter du matériel qui, lui, se facture 24/7.

07

Sources & ressources

01AWS — Target tracking scaling policiesLa politique que je prends par défaut : cible de CPU/requêtes, alarmes gérées par AWS.02AWS — Step and simple scaling policiesLes paliers, pour quand tu veux une réaction proportionnelle au dépassement.03AWS — Scaling cooldownsPourquoi le cooldown ne concerne que le simple scaling, pas le target tracking.04AWS — How predictive scaling worksPrévision sur 48 h à partir de l'historique, mode forecast-only pour valider avant.05AWS — Warm pools for Auto ScalingInstances pré-initialisées en Stopped pour absorber un pic sans payer le calcul à vide.06AWS — RDS read replicasScaler les lectures ; rappel important : pas d'auto-scaling des répliques, c'est manuel.07AWS — ElastiCache: which metrics to monitorAlarmer sur les evictions et la mémoire pour protéger le taux de hit.08AWS — Increase CloudFront cache hit ratiomax-age, clé de cache minimale, Origin Shield : plus de hit, moins d'origine.

Scaler proprement, c'est rendre le coût proportionnel au trafic : plusieurs instances derrière un load balancer, une base déchargée par le cache et les répliques, et de l'auto-scaling qui redescend vraiment. On tient le pic, et la facture retombe avec lui.