2 min
lire
Quel service choisir pour gérer vos conteneurs sur AWS ?
C'est une question que nous abordons fréquemment dans le cadre de projet de build d'infrastructure, de migration vers AWS ou encore d’optimisation d’infrastructure existante. En effet, les clients d'AWS ont le choix entre ECS Amazon Elastic Container Service et EKS Elastic Container Service for Kubernetes.
L’objectif de cet article est de vous présenter ces deux services ainsi que leur mode d’exécutions et de vous donner quelques clés pour déterminer dans quels cas vous devriez vous tourner vers l’une ou l’autre de ces solutions.
Orchestration de conteneurs sur AWS
Amazon Elastic Container Service (ECS )est le service conçu par AWS dédié à l’orchestration des conteneurs. Celui-ci a été conçu de façon à simplifier la gestion des applications conteneurisées. Avec ECS, vous déployez, exécutez, gérez et mettez à l’échelle aisément vos applications.
ECS est une solution fiable et sécure, par ailleurs, plusieurs services AWS se basent sur ECS. Comme celui-ci est une solution native d’AWS, il s’intègre facilement à votre infrastructure AWS. Les clients AWS reconnaissent ECS pour la facilité de gestion de ce service et pour sa parfaite intégration avec l’environnement AWS.
Amazon EKS est un service managé qui vous permet d'exécuter Kubernetes sur AWS. Kubernetes est le système d'orchestration de conteneur open source qui permet de déployer et de gérer des applications conteneurisées à l'échelle le plus largement utilisé aujourd’hui.
Kubernetes est quant à lui plébiscité pour son écosystème, sa richesse d’APIs Open Source, sa communauté et la flexibilité du service.
Avec son principe de portabilité, Kubernetes est une solution très intéressante pour éviter le "vendor lock-in" chez un cloud provider ou dans le cadre d'environnements hybrides et multi-cloud.
[Petite parenthèse sur la question du vendor lock-in : il est théoriquement plus facile de migrer d'un cloud provider à l'autre avec Kubernetes ; en réalité, une migration demandera toujours un certain effort].
Ainsi, le choix entre ECS et EKS est un choix plus stratégique que technologique, la simplicité VS la flexibilité.
Il ne faut cependant pas oublier de prendre en compte les compétences techniques de votre équipe !
Kubernetes est une solution qui présente de nombreux avantages, mais avant de pouvoir l'utiliser à son plein potentiel, il vous faudra maîtriser un certain nombre de concepts parfois assez abstraits : Pod, Node, Service, Selector, Endpoint, etc. La montée en compétence nécessaire à la maîtrise et à l'implémentation ces concepts ne doit pas être sous-estimée.
En résumé, votre choix peut se porter sur les éléments suivants :
- Préférences opérationnelles
- Exigences de votre environnement
- Compétences techniques
Mode d'exécution sur AWS
Avec Amazon EKS et Amazon ECS, AWS propose différents modes d'exécution pour les tâches de conteneurs. Examinons de plus près les modes EC2 et Fargate.
Mode EC2
Le mode EC2 implique que vous avez un contrôle total sur les instances EC2 sous-jacentes. Cela signifie que vous pouvez configurer votre infrastructure pour correspondre à vos besoins (comme choisir des instances optimisées en termes de réseaux ou de GPU). En revanche, cela signifie également que vous êtes responsable de la sélection des instances, des configurations réseaux et sécurité ainsi que des mises à jour.
Mode Fargate
AWS Fargate applique le modèle serverless à l'orchestration de conteneurs et permet d'exécuter des applications conteneurisées sans avoir à gérer un cluster d'instances.
Le service Fargate vous permet ainsi d’abstraire le besoin de provisionnement et la gestion des serveurs sur lesquels sont exécutées les tâches des conteneurs. Fargate permet une mise en œuvre plus rapide et une gestion simplifiée des tâches de conteneur. De plus, avec Fargate vous ne payez que les ressources nécessaires à l’exécution de vos conteneurs.
En résumé, avec le mode EC2, vous gagnez en contrôle sur votre infrastructure tandis qu’avec Fargate, vous simplifiez la gestion de celui-ci.
Néanmoins, l'utilisation de Fargate a un prix. Voici un exemple de comparaison entre une instance EC2 T3 medium qui par défaut reste "on" et son équivalent avec Fargate pour une tâche qui s'exécuterait en continu.
https://calculator.aws/#/estimate?id=8ba814ade5423eb39299d684f8b19679ba956c5c
Fargate et EC2 répondent à des besoins différents, mais vous n'êtes pas obligé de choisir l'un ou l'autre. Vous pouvez tout à fait avoir une flotte mixte et combiner les modes EC2 et Fargate. Ainsi, par exemple, vous pouvez avoir une base avec du compute EC2 et Fargate interviendrait en tant qu' "add-on" à votre stratégie de scaling.
En outre, nous recommandons l'utilisation de Fargate dans les cas suivants :
- Pour de courtes taches et périodiques (comme les crons)
- Pour réaliser certains jobs pour lesquels Lambda ne serait pas adéquat.
- Si vous souhaitez utiliser uniquement des services managés.