1. Scalabilité Verticale vs Horizontale #
Comprendre comment augmenter la puissance de traitement.
Scale-Up vs Scale-Out #
La scalabilité verticale (Scale-up) consiste à ajouter de la RAM ou du CPU à un serveur. Elle a des limites physiques. La scalabilité horizontale (Scale-out) consiste à ajouter de nouveaux serveurs identiques, offrant une croissance quasi infinie.
2. L'Élasticité : L'Auto-scaling en action #
L'élasticité est la capacité du système à déclencher automatiquement l'ajout ou la suppression de ressources en fonction de métriques précises (CPU > 70% ou latence réseau). C'est ce qui permet d'économiser de l'argent la nuit et de tenir la charge durant les soldes.
3. Design pour la Haute Disponibilité #
Pour être élastique, une application doit être 'stateless' (sans état local). Les sessions doivent être stockées dans des bases de données externes ou des caches (Redis) pour permettre aux serveurs d'apparaître et de disparaître sans couper la connexion des utilisateurs.
Mise en pratique : mettre à l'échelle #
Commandes de scalabilité.
Schéma #
Exemples #
# Scalabilité horizontale manuelle (Kubernetes)
kubectl scale deployment web --replicas=6
# Élasticité : ajustement automatique selon le CPU
kubectl autoscale deployment web --cpu-percent=70 --min=2 --max=20
# AWS Auto Scaling : politique de suivi de cible
aws autoscaling put-scaling-policy --auto-scaling-group-name web-asg --policy-name cpu70 --policy-type TargetTrackingScaling \
--target-tracking-configuration '{"PredefinedMetricSpecification":{"PredefinedMetricType":"ASGAverageCPUUtilization"},"TargetValue":70}'