Introduction à ECS et Fargate
1 - Qu'est-ce qu'Amazon ECS ?
Amazon ECS (Elastic Container Service) est un service d'orchestration de conteneurs entièrement managé qui permet d'exécuter, arrêter et gérer des conteneurs Docker sur un cluster.
2 - ECS vs EKS vs Fargate
2.1 Comparaison
| Critère | ECS | EKS | Fargate |
|---|---|---|---|
| Type | Orchestrateur AWS natif | Kubernetes managé | Serverless compute |
| Complexité | Faible | Élevée | Très faible |
| Portabilité | AWS uniquement | Multi-cloud | AWS uniquement |
| Gestion infra | EC2 ou Fargate | EC2 ou Fargate | Aucune |
| Courbe d'apprentissage | Douce | Raide | Très douce |
| Coût | $ | $$ | $$ |
2.2 Quand choisir quoi ?
Choisir ECS si :
- Vous êtes 100% sur AWS
- Vous n'avez pas besoin de Kubernetes
- Vous voulez une solution simple
Choisir EKS si :
- Vous avez besoin de Kubernetes
- Portabilité multi-cloud requise
- Équipe avec expertise K8s
Choisir Fargate si :
- Vous ne voulez pas gérer d'infrastructure
- Workloads avec scaling variable
- Simplicité maximale
3 - Architecture ECS
3.1 Composants principaux
3.2 Hiérarchie des concepts
| Concept | Description |
|---|---|
| Cluster | Regroupement logique de ressources |
| Task Definition | Blueprint pour les conteneurs (comme un Dockerfile) |
| Task | Instance d'une Task Definition en cours d'exécution |
| Service | Maintient N tasks en fonctionnement |
| Container Instance | EC2 avec l'agent ECS (EC2 launch type) |
4 - Launch Types
4.1 EC2 Launch Type
Avantages :
- Contrôle total sur l'infrastructure
- GPU et instances spécialisées
- Pricing réservé possible
- Accès aux instances
Inconvénients :
- Gestion des instances
- Capacity planning
- Patching OS
4.2 Fargate Launch Type
Avantages :
- Serverless - pas d'infrastructure à gérer
- Pay-per-use
- Scaling instantané
- Sécurité renforcée (isolation)
Inconvénients :
- Coût plus élevé par tâche
- Pas d'accès aux instances
- Limites de ressources
5 - Cas d'utilisation
5.1 Microservices
5.2 Batch Processing
# Task Definition pour batch
{
"family": "batch-processor",
"containerDefinitions": [
{
"name": "processor",
"image": "batch-app:latest",
"command": ["python", "process.py"]
}
]
}
5.3 CI/CD Runners
- Runners Jenkins/GitLab sur ECS
- Scaling basé sur la queue
- Isolation par container
6 - Tarification
6.1 EC2 Launch Type
| Composant | Coût |
|---|---|
| ECS | Gratuit |
| EC2 Instances | Prix EC2 standard |
| Data Transfer | Prix standard |
6.2 Fargate
| Ressource | Prix (eu-west-1) |
|---|---|
| vCPU | ~$0.04048/heure |
| Memory | ~$0.004445/GB/heure |
Exemple : 1 vCPU, 2GB RAM, 24h
- vCPU: 0.97
- Memory: 0.21
- Total: ~$1.18/jour
6.3 Fargate Spot
Jusqu'à 70% de réduction pour les workloads tolérants aux interruptions.
7 - Premier cluster ECS
7.1 Via Console
- Ouvrir la console ECS
- "Create Cluster"
- Choisir le template (Networking only pour Fargate)
- Nommer le cluster
- Configurer VPC/Subnets
7.2 Via CLI
# Créer un cluster
aws ecs create-cluster \
--cluster-name mon-cluster \
--capacity-providers FARGATE FARGATE_SPOT \
--default-capacity-provider-strategy \
capacityProvider=FARGATE,weight=1 \
capacityProvider=FARGATE_SPOT,weight=1
# Vérifier
aws ecs describe-clusters --clusters mon-cluster
7.3 Via CloudFormation
AWSTemplateFormatVersion: '2010-09-09'
Resources:
ECSCluster:
Type: AWS::ECS::Cluster
Properties:
ClusterName: mon-cluster
CapacityProviders:
- FARGATE
- FARGATE_SPOT
DefaultCapacityProviderStrategy:
- CapacityProvider: FARGATE
Weight: 1
- CapacityProvider: FARGATE_SPOT
Weight: 1
ClusterSettings:
- Name: containerInsights
Value: enabled
Tags:
- Key: Environment
Value: Production
Résumé
Dans ce chapitre, nous avons découvert :
- ECS comme orchestrateur de conteneurs AWS
- Les différences entre ECS, EKS et Fargate
- L'architecture et les composants d'ECS
- Les launch types (EC2 vs Fargate)
- Les cas d'utilisation typiques
- La tarification
Prochaine étape
Dans le prochain chapitre, nous approfondirons les Concepts fondamentaux d'ECS.
→ Chapitre suivant : Concepts fondamentaux