2022-09-13 04:11 Temps de lecture : 12 min

Un guide d'introduction à AWS Fargate

AWS Fargate représente une solution technologique compatible avec Amazon ECS et Amazon EKS, permettant d'exécuter des conteneurs sans se préoccuper de la gestion des serveurs ou des clusters d'instances Amazon EC2.

Fargate simplifie considérablement le déploiement de conteneurs en éliminant la nécessité de configurer, dimensionner ou provisionner des ensembles de machines virtuelles. Il devient inutile de choisir des types de serveurs spécifiques, de planifier la mise à l'échelle du cluster, ou encore d'optimiser l'allocation des ressources.

Pour lancer vos tâches et services Amazon ECS, vous avez le choix entre le type de lancement Fargate et un fournisseur de capacité Fargate. L'utilisation de Fargate implique d'encapsuler votre application dans des conteneurs, de définir les besoins en système d'exploitation, processeur et mémoire, de paramétrer le réseau et les règles IAM, puis de procéder au lancement.

Il n'est plus nécessaire de maintenir une capacité minimale en CPU et RAM pour héberger les conteneurs. Vous communiquez simplement à AWS les ressources requises par une tâche, et le reste est pris en charge par AWS. Chaque tâche Fargate bénéficie d'une isolation stricte, évitant tout partage du noyau sous-jacent, du processeur, de la mémoire ou de l'interface réseau élastique avec d'autres tâches.

Fonctionnement de Fargate

Fargate opère en vous donnant la possibilité de déployer des conteneurs sans que vous ayez à mettre en place ou administrer l'infrastructure d'hébergement. Vous indiquez à Fargate les images de conteneurs à exécuter et les ressources CPU et mémoire à allouer. Fargate se charge alors du provisionnement automatique des serveurs hôtes. Vous êtes facturé uniquement pour les ressources utilisées lorsque vos conteneurs sont actifs.

Fargate est considéré comme un moteur informatique sans serveur car il libère l'utilisateur final de la gestion des serveurs hébergeant les conteneurs. Il est important de noter que les serveurs sont toujours présents, mais leur gestion est assurée par AWS. Il ne faut pas confondre Fargate avec AWS Lambda, un autre service informatique sans serveur qui n'était pas initialement conçu pour les conteneurs (bien que Lambda prenne désormais en charge le déploiement d'images conteneurisées).

L'utilité de Fargate

AWS Fargate calcule précisément la quantité de puissance de calcul, de mémoire et d'autres ressources nécessaires pour vos tâches, vous évitant ainsi de choisir les types d'instances ou de vous préoccuper de la capacité du cluster.

Fargate vous permet de payer uniquement les ressources consommées par vos conteneurs lors de leur exécution, évitant ainsi le sur-provisionnement et les coûts liés à des serveurs non utilisés.

Les tâches Fargate (pods) fonctionnent dans leurs propres noyaux, assurant ainsi un environnement de calcul sécurisé et isolé avec des charges de travail distinctes et une sécurité renforcée.

Fargate permet aux équipes de concevoir et d'exécuter des applications en utilisant des conteneurs ECS ou EKS sans avoir à gérer des tâches d'administration d'infrastructure chronophages telles que la mise à l'échelle, la sécurisation des serveurs ou l'application de correctifs aux systèmes d'exploitation.

Grâce à des intégrations avec d'autres services AWS tels qu'Amazon CloudWatch Container Insights, AWS Fargate offre une grande visibilité. Vous pouvez également utiliser différentes solutions tierces pour la collecte de journaux et de métriques.

De plus, l'utilisation de conteneurs avec Fargate permet de tirer parti de l'ensemble des services AWS.

Fargate s'occupe du lancement et du dimensionnement des ressources informatiques pour répondre aux besoins des conteneurs, évitant le sur-provisionnement et vous assurant de ne payer que pour ce que vous utilisez. Il existe également une option pour optimiser les coûts : Fargate Spot peut vous permettre d'économiser jusqu'à 70 % sur les tarifs habituels, mais est idéalement adapté aux applications pouvant être interrompues.

Les Composants de Fargate

Clusters

Un cluster Amazon ECS est un regroupement logique de tâches ou de services. Ces clusters peuvent être utilisés pour isoler vos applications. Quand vous utilisez Fargate pour exécuter vos tâches, ce dernier s'occupe de la gestion des ressources de votre cluster.

Définitions de tâches

Une définition de tâche est un fichier texte, de type JSON, qui décrit au moins un des conteneurs de votre application. Il peut contenir jusqu'à dix conteneurs différents. La définition de tâche constitue un modèle pour votre application et spécifie plusieurs paramètres, notamment les paramètres du système d'exploitation, les conteneurs à utiliser, les ports à ouvrir et les volumes de données à associer aux conteneurs. Les exigences de votre application déterminent les paramètres spécifiques disponibles dans la définition de tâche.

Tâches

Une tâche est une instance d'une définition de tâche en cours d'exécution au sein d'un cluster. Après avoir créé la définition de tâche pour votre application dans Amazon ECS, vous pouvez sélectionner le nombre de tâches que vous souhaitez exécuter sur votre cluster. Il est possible d'exécuter une tâche dans le cadre d'un service ou de manière isolée.

Services

Dans un cluster Amazon ECS, un service Amazon ECS permet d'exécuter et de gérer simultanément un nombre défini de tâches. Si une tâche échoue ou s'arrête, le planificateur de service Amazon ECS en démarre une autre selon la définition de la tâche pour maintenir le nombre de tâches au niveau souhaité.

Système d'exploitation et architecture du processeur

Fargate prend en charge les systèmes d'exploitation suivants : Amazon Linux 2, Windows Server 2019 Full et Windows Server 2019 Core.

Les définitions de tâches Amazon ECS sont compatibles avec deux architectures : ARM et X86_64. Si vous utilisez des conteneurs Windows, l'architecture CPU X86_64 est nécessaire. Pour les conteneurs Linux, vous avez la possibilité d'utiliser l'architecture ARM64 pour les applications basées sur ARM et l'architecture CPU X86_64.

Comparaison : ECS avec instances EC2 vs. ECS avec AWS Fargate

Dans le modèle avec instances EC2, les conteneurs sont déployés directement sur des instances EC2 (machines virtuelles) au sein du cluster. ECS gère ces instances en parallèle des tâches faisant partie de la définition de tâche.

Avantages 👍

  • Vous avez un contrôle total sur le type d'instance EC2 utilisé.
  • L'utilisation d'instances ponctuelles permet de réduire les coûts jusqu'à 90 %.

Inconvénients 👎

  • Vous devez vous charger de la sécurité, des correctifs et de la mise à l'échelle des instances au sein du cluster.

Avec le modèle Fargate, vous n'avez plus à vous préoccuper des instances ou des serveurs EC2. Vous sélectionnez simplement la configuration CPU et mémoire nécessaire, et Fargate se charge du déploiement de vos conteneurs.

Avantages 👍

  • Vous n'avez pas à gérer de serveurs.
  • AWS assure la disponibilité et la mise à l'échelle, mais il est toujours important de choisir les ressources CPU et mémoire adaptées afin d'éviter une indisponibilité de votre application.
  • L'option Fargate Spot peut vous faire économiser jusqu'à 70 % sur le prix standard de Fargate.

Inconvénients 👎

  • ECS avec AWS Fargate prend en charge un seul mode de mise en réseau : awsvpc. Cela limite votre contrôle sur la couche réseau.

Comparaison : EKS sans Fargate vs. EKS avec Fargate

Dans un environnement EKS sans Fargate, vous devez définir la taille du cluster à l'avance. Il est possible de modifier manuellement les nœuds ultérieurement, mais cela est moins pratique qu'une spécification idéale dès le départ.

Avantages 👍

  • Ce modèle vous donne plus de contrôle notamment sur des paramètres de configuration comme HostNetwork et HostPort.
  • Fargate n'est pas disponible dans toutes les régions. Il est donc préférable d'utiliser EKS sans Fargate si vous souhaitez que votre conteneur soit disponible dans plus de régions.

Inconvénients 👎

  • EKS sans Fargate peut être plus complexe à mettre en œuvre.

Dans un environnement EKS avec Fargate, il n'est pas nécessaire de définir la taille des clusters au préalable.

Avantages 👍

  • EKS avec Fargate est plus sécurisé car il fonctionne sur des machines virtuelles dédiées. L'absence du mode privilégié est également un élément de sécurité.
  • Cela peut être plus économique à long terme.

Inconvénients 👎

  • Ce modèle offre moins de contrôle sur certains paramètres.

Conclusion

Fargate est un outil performant et abouti. Il vous permet d'économiser du temps, de l'argent et des efforts en prenant en charge l'ensemble de la gestion de l'infrastructure. Fargate est particulièrement intéressant si vous débutez avec les conteneurs et que vous souhaitez vous concentrer sur la création de votre application plutôt que sur la gestion de son infrastructure.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.