AWS Fargate est une technologie qui peut être utilisée avec Amazon ECS et Amazon EKS. Elle vous permet d’exécuter des conteneurs sans avoir à gérer des serveurs ou des grappes d’instances Amazon EC2.
Fargate élimine le besoin de configurer, de dimensionner ou de provisionner des clusters de machines virtuelles pour exécuter des conteneurs. Il n’est pas nécessaire de sélectionner des types de serveurs, de planifier la mise à l’échelle des clusters ou d’optimiser l’empaquetage des clusters.
Vous pouvez utiliser le type de lancement Fargate ou un fournisseur de capacité Fargate pour exécuter vos tâches et services Amazon ECS. Pour utiliser Fargate, vous pouvez conditionner votre application dans des conteneurs, spécifier le système d’exploitation, l’unité centrale et la mémoire nécessaires, configurer le réseau et les politiques IAM, puis lancer l’application.
Il n’est pas nécessaire de maintenir une capacité de base en matière de CPU et de RAM pour héberger des conteneurs. Nous pouvons indiquer à AWS la quantité de ressources dont une tâche a besoin et laisser AWS s’occuper du reste de la tâche. Chaque tâche Fargate possède sa propre barrière d’isolation, de sorte qu’elle ne partage pas le noyau sous-jacent, l’unité centrale, la mémoire ou l’interface réseau élastique avec d’autres tâches.
Comment fonctionne Fargate ?
Fargate fonctionne en vous permettant de déployer des conteneurs sans avoir à mettre en place ou à gérer l’infrastructure qui les hébergera. Vous indiquez à Fargate les images de conteneurs que vous souhaitez exécuter et le nombre de ressources CPU et mémoire que vous souhaitez leur attribuer. Les serveurs hôtes sont alors automatiquement provisionnés par Fargate. Lorsque vos conteneurs fonctionnent, vous ne payez que pour les ressources utilisées.
Fargate est un moteur informatique sans serveur, car il élimine la nécessité pour les utilisateurs finaux de gérer les serveurs qui hébergent les conteneurs. Pour être clair, les serveurs sont toujours là ; AWS se contente de les gérer. Il ne faut pas confondre Fargate avec AWS Lambda, un autre service d’informatique sans serveur qui n’a pas été créé avec des conteneurs à l’esprit (bien que Lamba prenne désormais en charge le déploiement d’images de conteneurs).
Comment Fargate vous aide-t-il ?
AWS Fargate calcule la quantité exacte de calcul, de mémoire et d’autres ressources nécessaires à vos tâches, de sorte que vous n’avez pas à vous soucier de choisir des types d’instance ou de mettre à l’échelle la capacité du cluster.
Il vous permet de payer les ressources dont vous avez besoin pour faire fonctionner vos conteneurs au fur et à mesure de leur utilisation, évitant ainsi de surprovisionner et de payer pour des serveurs dont vous n’avez pas besoin.
Les tâches de Fargate (pods) s’exécutent dans leurs propres noyaux, ce qui permet de créer un environnement informatique sûr et isolé avec des charges de travail isolées et une sécurité accrue.
Il permet aux équipes de concevoir et d’exécuter des applications à l’aide de conteneurs ECS ou EKS sans avoir à s’occuper d’activités de gestion d’infrastructure fastidieuses telles que la mise à l’échelle et la sécurisation des serveurs ou l’application de correctifs aux systèmes d’exploitation.
Grâce à des connexions intégrées avec d’autres services AWS comme Amazon CloudWatch Container Insights, AWS Fargate offre un haut niveau d’observabilité. Vous pouvez également utiliser des technologies tierces multiples pour collecter des journaux et des mesures.
Nous pouvons également utiliser efficacement la vaste gamme de services AWS lorsque nous utilisons des conteneurs avec Fargate.
Fargate lancera et mettra à l’échelle en permanence les ressources informatiques pour répondre aux besoins du conteneur, évitant ainsi le surapprovisionnement et garantissant que vous ne payez pas pour des ressources que vous n’utilisez pas. Vous pouvez également calculer une stratégie d’économie, l’option Fargate Spot peut vous faire économiser jusqu’à 70% des coûts ordinaires, mais elle n’est optimale que pour les applications interruptibles.
Composants de Fargate
Clusters
Un regroupement logique de tâches ou de services est un cluster Amazon ECS. Les clusters peuvent être utilisés pour isoler vos applications. Lorsque vous utilisez Fargate pour effectuer vos tâches, il gère les ressources de votre cluster.
Définitions de tâches
Une définition de tâche est un fichier texte qui décrit au moins un des conteneurs de votre application. C’est un fichier JSON. Il peut être utilisé pour décrire jusqu’à dix conteneurs à la fois. La définition de tâche de votre application sert de plan directeur. Elle spécifie les nombreux paramètres de votre application.
Par exemple, vous pouvez l’utiliser pour définir les paramètres du système d’exploitation, les conteneurs à utiliser, les ports à ouvrir pour votre application et les volumes de données à utiliser avec les conteneurs dans la tâche. Les exigences de votre application déterminent les paramètres particuliers disponibles pour la définition des tâches.
Tâches
Une tâche est une instanciation au niveau du cluster d’une définition de tâche. Une fois que vous avez créé une définition de tâche pour votre application dans Amazon ECS, vous pouvez choisir le nombre de tâches qui s’exécuteront sur votre cluster. Une tâche peut être exécutée dans le cadre d’un service ou d’un processus distinct.
Services
Dans un cluster Amazon ECS, vous pouvez utiliser un service Amazon ECS pour exécuter et maintenir simultanément le nombre de tâches que vous souhaitez. Le planificateur du service Amazon ECS exécute une autre instance basée sur votre définition de tâche si l’une de vos tâches échoue ou s’arrête pour une raison quelconque. Il le fait pour le remplacer et maintenir le nombre de tâches dans le service à un niveau correct.
Système d’exploitation et architecture du processeur
Les systèmes d’exploitation pris en charge par Fargate sont Amazon Linux 2, Windows server 2019 Full et Windows server 2019 core.
ARM et X86_64 sont les deux architectures disponibles pour la définition des tâches Amazon ECS. Si vous utilisez des conteneurs Windows, vous devez disposer d’une architecture de CPU X86_64. En revanche, si vous utilisez des conteneurs Linux, vous pouvez utiliser l’architecture ARM64 pour vos applications basées sur ARM et l’architecture CPU X86_64.
ECS avec instances EC2 vs ECS avec AWS Fargate
Dans le modèle des instances EC2, les conteneurs sont déployés sur les instances EC2 (VM) du cluster. ECS les gère conjointement avec les tâches qui font partie de la définition des tâches.
Avantages 👍
- Le type d’instance EC2 utilisé ici est entièrement sous votre contrôle.
- Vous pouvez utiliser des instances ponctuelles qui réduisent les coûts jusqu’à 90 %.
Inconvénients 👎
- Vous devez vous occuper des correctifs de sécurité et de la sécurité du réseau des instances ; vous êtes également responsable de leur évolutivité dans le cluster.
Dans le modèle Fargate, vous n’avez plus à vous préoccuper des instances EC2 ou des serveurs. Sélectionnez la configuration de CPU et de mémoire requise, et Fargate déploiera vos conteneurs.
Avantages 👍
- Vous n’avez pas à gérer de serveurs.
- AWS est responsable de la disponibilité et de l’évolutivité, mais c’est tout de même une bonne pratique de sélectionner la mémoire et le CPU adéquats ; sinon, notre application risque de devenir indisponible.
- Si vous décidez d’utiliser Fargate Spot, vous pouvez obtenir jusqu’à 70 % de réduction sur le prix de Fargate.
Inconvénients 👎
- ECS avec AWS Fargate ne prend en charge qu’un seul mode de mise en réseau -awsvpc-. Par conséquent, cela limite votre contrôle sur la couche de mise en réseau.
EKS sans Fargate Vs. EKS avec Fargate
Dans le modèle EKS sans Fargate, vous devez décider à l’avance de la taille du cluster. Vous pouvez toujours modifier les nœuds manuellement par la suite, mais c’est plus compliqué que de spécifier la taille idéale dès le départ.
Pour 👍
- Ce modèle vous donne plus de contrôle à divers égards, car vous pouvez spécifier des variables de configuration telles que HostNetwork et HostPort.
- Fargate n’est pas pris en charge dans toutes les régions, il est donc préférable d’utiliser EKS sans Fargate si vous voulez que votre conteneur soit disponible dans plus de régions.
Inconvénients 👎
- L’EKS sans Fargate est un peu difficile à utiliser.
Dans EKS avec le modèle Fargate, vous n’avez pas besoin de spécifier la taille des clusters à l’avance.
Pour 👍
- L’EKS avec Fargate est plus sûr car il s’exécute à l’intérieur de machines virtuelles dédiées. Le fait qu’il ne prenne pas en charge le mode privilégié est en quelque sorte une caractéristique de sécurité.
- Il est moins cher à long terme.
Inconvénients 👎
- Il vous donne moins de contrôle à divers égards
Conclusion
Fargate est un outil extrêmement puissant et mature. Il vous permet d’économiser des coûts, du temps et beaucoup d’efforts en effectuant toute la gestion de l’infrastructure à votre place. Fargate est particulièrement bénéfique si vous êtes novice en matière de conteneurs et que vous souhaitez simplement vous concentrer sur la construction de votre application plutôt que sur sa maintenance.