Optimisation Pratique des Couts AWS
Introduction
L'optimisation des couts AWS n'est pas un evenement ponctuel mais un processus continu. Ce chapitre presente des techniques pratiques et immediates pour reduire vos factures AWS.
Les 7 Leviers d'Optimisation
┌─────────────────────────────────────────────────────────────────┐
│ 7 LEVIERS D'OPTIMISATION AWS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. RIGHTSIZING Adapter la taille des ressources │
│ 2. SCHEDULING Arreter quand non utilise │
│ 3. RESERVED/SAVINGS Engagement pour remises │
│ 4. SPOT INSTANCES Utiliser la capacite excedentaire │
│ 5. STORAGE TIERING Deplacer vers stockage moins cher │
│ 6. DATA TRANSFER Optimiser les transferts │
│ 7. ARCHITECTURE Concevoir pour le cout │
│ │
└─────────────────────────────────────────────────────────────────┘
1. Rightsizing (Dimensionnement)
Identifier les Ressources Surdimensionnees
┌─────────────────────────────────────────────────────────────────┐
│ ANALYSE RIGHTSIZING │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Instance actuelle : m5.xlarge (4 vCPU, 16 GB RAM) │
│ Cout : $140/mois │
│ │
│ Utilisation observee (30 jours) : │
│ ┌────────────────────────────────────────────┐ │
│ │ CPU ████░░░░░░░░░░░░░░░░ 20% moyenne │ │
│ │ RAM ██████░░░░░░░░░░░░░░ 30% moyenne │ │
│ └────────────────────────────────────────────┘ │
│ │
│ Recommandation : t3.medium (2 vCPU, 4 GB RAM) │
│ Nouveau cout : $30/mois │
│ Economie : $110/mois (78%) │
│ │
└─────────────────────────────────────────────────────────────────┘
Metriques a Surveiller
| Ressource | Metrique | Seuil de surdimensionnement |
|---|---|---|
| EC2 | CPU moyen | < 40% sur 14 jours |
| EC2 | Memoire | < 40% sur 14 jours |
| RDS | CPU moyen | < 40% sur 14 jours |
| RDS | Connexions | < 20% du max |
| Lambda | Memoire utilisee | < 50% allouee |
Actions Recommandees
Surdimensionne (CPU < 40%) → Reduire d'une taille
Bien dimensionne (40-80%) → Conserver
Sous-dimensionne (> 80%) → Augmenter ou Auto Scale
2. Scheduling (Planification)
Environnements Non-Production
┌─────────────────────────────────────────────────────────────────┐
│ SCHEDULING NON-PROD │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Environnement DEV/TEST : │
│ │
│ Horaire bureau : 8h - 18h (10h/jour) │
│ Jours ouvrables : Lundi - Vendredi (5 jours) │
│ │
│ Heures ON : 10h × 5j = 50h/semaine │
│ Heures OFF : 168h - 50h = 118h/semaine │
│ │
│ Economie potentielle : 70% ! │
│ │
│ Implementation : │
│ • AWS Instance Scheduler │
│ • Lambda + CloudWatch Events │
│ • Tags : Schedule=office-hours │
│ │
└─────────────────────────────────────────────────────────────────┘
Script de Scheduling Simple
# Lambda pour arreter les instances DEV le soir
import boto3
def lambda_handler(event, context):
ec2 = boto3.client('ec2')
# Trouver instances avec tag Environment=dev
instances = ec2.describe_instances(
Filters=[
{'Name': 'tag:Environment', 'Values': ['dev', 'test']},
{'Name': 'instance-state-name', 'Values': ['running']}
]
)
instance_ids = []
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
instance_ids.append(instance['InstanceId'])
if instance_ids:
ec2.stop_instances(InstanceIds=instance_ids)
print(f"Arrete {len(instance_ids)} instances")
3. Reserved Instances et Savings Plans
Comparaison des Options
┌─────────────────────────────────────────────────────────────────┐
│ OPTIONS D'ENGAGEMENT │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ON-DEMAND (Pas d'engagement) │
│ └── Prix plein, flexibilite maximale │
│ Ideal pour : workloads imprevisibles │
│ │
│ RESERVED INSTANCES (1 ou 3 ans) │
│ └── Jusqu'a -72% vs On-Demand │
│ Lie a : type d'instance + region │
│ Ideal pour : workloads stables et previsibles │
│ │
│ SAVINGS PLANS (1 ou 3 ans) │
│ └── Jusqu'a -72% vs On-Demand │
│ Plus flexible que RI │
│ Compute SP : EC2, Fargate, Lambda │
│ EC2 SP : famille d'instance dans une region │
│ │
│ SPOT INSTANCES │
│ └── Jusqu'a -90% vs On-Demand │
│ Peut etre interrompu avec 2 min de preavis │
│ Ideal pour : batch, CI/CD, workloads tolerants │
│ │
└─────────────────────────────────────────────────────────────────┘
Strategie de Couverture
┌─────────────────────────────────────────────────────────────────┐
│ STRATEGIE DE COUVERTURE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Capacite totale necessaire : 100 unites │
│ │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │████████████████████████████████████████░░░░░░░░░░░░░░░░░░░│ │
│ │ Reserved/Savings (60%) │ On-Demand │ Spot │ │
│ │ -60% │ (20%) │ (20%) │ │
│ │ Baseline stable │ Variable │ -90% │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ Economie globale : ~50% │
│ │
└─────────────────────────────────────────────────────────────────┘
4. Optimisation du Stockage
S3 Storage Classes
┌─────────────────────────────────────────────────────────────────┐
│ CLASSES DE STOCKAGE S3 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ S3 STANDARD $0.023/GB Acces frequent │
│ ↓ apres 30 jours │
│ S3 INFREQUENT ACCESS $0.0125/GB Acces < 1x/mois │
│ ↓ apres 90 jours │
│ S3 GLACIER IR $0.004/GB Archive, acces rapide │
│ ↓ apres 180 jours │
│ S3 GLACIER DA $0.00099/GB Archive long terme │
│ │
│ Economie : Jusqu'a 95% avec lifecycle policies │
│ │
└─────────────────────────────────────────────────────────────────┘
EBS Optimization
Problemes courants :
• Volumes non attaches (orphelins) → Supprimer
• Snapshots anciens → Lifecycle policy
• gp2 au lieu de gp3 → Migration (20% moins cher)
• Volumes surdimensionnes → Reduire
5. Optimisation Lambda
┌─────────────────────────────────────────────────────────────────┐
│ OPTIMISATION LAMBDA │
├─────────────────────────────────────────────────────────────────┤
│ │
│ AVANT : 1024 MB, 500ms moyenne │
│ Cout : 1M invocations × 0.5s × 1GB = $8.33/mois │
│ │
│ APRES : 512 MB, 600ms moyenne (CPU plus lent) │
│ Cout : 1M invocations × 0.6s × 0.5GB = $5.00/mois │
│ │
│ Economie : 40% │
│ │
│ OU │
│ │
│ APRES : 2048 MB, 200ms moyenne (CPU plus rapide) │
│ Cout : 1M invocations × 0.2s × 2GB = $6.67/mois │
│ │
│ Economie : 20% + meilleure performance │
│ │
│ → Testez differentes configurations ! │
│ │
└─────────────────────────────────────────────────────────────────┘
6. Checklist d'Optimisation Rapide
Actions Immediates (Quick Wins)
| Action | Economie potentielle | Effort |
|---|---|---|
| Supprimer ressources non utilisees | 10-30% | Faible |
| Arreter instances DEV la nuit/weekend | 70% sur DEV | Faible |
| Supprimer EBS volumes orphelins | Variable | Faible |
| Supprimer anciens snapshots | Variable | Faible |
| Migrer gp2 vers gp3 | 20% sur EBS | Moyen |
Actions Moyen Terme
| Action | Economie potentielle | Effort |
|---|---|---|
| Rightsizing EC2/RDS | 20-50% | Moyen |
| Reserved Instances/Savings Plans | 30-60% | Moyen |
| S3 Lifecycle Policies | 50-90% sur stockage | Moyen |
| Spot Instances pour batch | 60-90% | Moyen |
Actions Long Terme
| Action | Economie potentielle | Effort |
|---|---|---|
| Architecture serverless | 30-70% | Eleve |
| Multi-region optimise | Variable | Eleve |
| Conteneurisation (Fargate) | 20-40% | Eleve |
7. Outils AWS pour l'Optimisation
┌─────────────────────────────────────────────────────────────────┐
│ OUTILS AWS FINOPS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ AWS COST EXPLORER │
│ └── Visualisation des couts, tendances, previsions │
│ │
│ AWS BUDGETS │
│ └── Alertes quand budget depasse │
│ │
│ AWS TRUSTED ADVISOR │
│ └── Recommandations automatiques │
│ │
│ AWS COMPUTE OPTIMIZER │
│ └── Rightsizing EC2, Lambda, EBS │
│ │
│ AWS COST ANOMALY DETECTION │
│ └── Detection automatique des anomalies │
│ │
│ SAVINGS PLANS RECOMMENDATIONS │
│ └── Recommandations d'engagement │
│ │
└─────────────────────────────────────────────────────────────────┘
Exercice Pratique
Scenario : Optimiser cette facture
Facture mensuelle actuelle : $5,000
Repartition :
• EC2 (10 instances m5.xlarge 24/7) : $1,400
• RDS (db.r5.large Multi-AZ) : $400
• EBS (500 GB gp2) : $50
• S3 (10 TB Standard) : $230
• Data Transfer (500 GB) : $45
• Lambda (50M invocations) : $100
• Autres : $2,775
Observations :
• 5 instances EC2 sont pour DEV/TEST
• CPU moyen EC2 PROD : 35%
• 3 TB de donnees S3 ont > 1 an
• 100 GB EBS non attaches
Voir les recommandations
Optimisations recommandees :
-
Scheduling DEV/TEST : 5 instances × 70% OFF = -$490/mois
-
Rightsizing PROD : m5.xlarge → m5.large = -$350/mois
-
Reserved Instances PROD : 5 instances 1 an = -$280/mois
-
EBS orphelins : Supprimer 100 GB = -$10/mois
-
gp2 → gp3 : 500 GB = -$10/mois
-
S3 Lifecycle : 3 TB vers Glacier = -$60/mois
Total economise : ~$1,200/mois (24%)
Nouvelle facture : ~$3,800/mois
Resume
- Rightsizing : Adapter les ressources a l'utilisation reelle
- Scheduling : Arreter les ressources non-production
- Engagement : Reserved Instances ou Savings Plans pour le stable
- Spot : Utiliser pour les workloads tolerants aux interruptions
- Stockage : Lifecycle policies pour S3, supprimer orphelins
- Monitoring : Utiliser les outils AWS (Cost Explorer, Trusted Advisor)
Prochaine section : Quiz de Validation