Aller au contenu principal

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​

RessourceMetriqueSeuil de surdimensionnement
EC2CPU moyen< 40% sur 14 jours
EC2Memoire< 40% sur 14 jours
RDSCPU moyen< 40% sur 14 jours
RDSConnexions< 20% du max
LambdaMemoire 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)​

ActionEconomie potentielleEffort
Supprimer ressources non utilisees10-30%Faible
Arreter instances DEV la nuit/weekend70% sur DEVFaible
Supprimer EBS volumes orphelinsVariableFaible
Supprimer anciens snapshotsVariableFaible
Migrer gp2 vers gp320% sur EBSMoyen

Actions Moyen Terme​

ActionEconomie potentielleEffort
Rightsizing EC2/RDS20-50%Moyen
Reserved Instances/Savings Plans30-60%Moyen
S3 Lifecycle Policies50-90% sur stockageMoyen
Spot Instances pour batch60-90%Moyen

Actions Long Terme​

ActionEconomie potentielleEffort
Architecture serverless30-70%Eleve
Multi-region optimiseVariableEleve
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 :

  1. Scheduling DEV/TEST : 5 instances × 70% OFF = -$490/mois

  2. Rightsizing PROD : m5.xlarge → m5.large = -$350/mois

  3. Reserved Instances PROD : 5 instances 1 an = -$280/mois

  4. EBS orphelins : Supprimer 100 GB = -$10/mois

  5. gp2 → gp3 : 500 GB = -$10/mois

  6. 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