Le serveur d’API, de l'infrastructure du site web de The Green Earth Post, est installé dans un instance EC2, mais AWS fournit d’autres alternatives qu’il faut connaître en tant qu’architecte de solutions.
Découvrez les solutions de conteneurisation
La conteneurisation est une technologie qui permet de créer des environnements d’exécution légers (des conteneurs) en partageant les ressources du système d’exploitation. C’est une alternative aux méthodes de virtualisation traditionnelles basées sur les machines virtuelles comme les instances EC2. Docker en est l’implémentation la plus célèbre.
Amazon Elastic Compute Cloud (ECS)
Pour déployer un conteneur, il faut créer une définition de tâche (task definition) qui définit le nombre de conteneurs, l’adresse de leur image Docker et le type de lancement (launch type) : EC2 ou Fargate.
Ci-dessous le fonctionnement pour chaque type de lancement :
1 - Créer un cluster ECS en approvisionnant les instances EC2 nécessaires (nombre, type d’instance, tarification, groupes de sécurité...)
2 - Soumettre une tâche de définition :
nombre de conteneurs et leur image Docker
ressources à allouer à chaque conteneur
type de lancement: EC2
3 - Le cluster ECS crée des tâches contenant les conteneurs souhaités en les distribuant sur les instances EC2 en fonction des disponibilités.
1 - Créer un cluster ECS de type FARGATE.
2 - Soumettre une tâche de définition :
nombre de conteneurs et leur image Docker
ressources à allouer à chaque conteneur
type de lancement: FARGATE
3 - Le cluster ECS crée des tâches contenant les conteneurs souhaités.
Amazon Elastic Kubernetes Service (EKS)
ECS gère des tâches de conteneurs, EKS gère des pods.
Un cluster EKS supporte deux modes de déploiement EC2 et FARGATE avec trois types de noeuds (nodes) :
Nœuds autogérés (self-managed) : vous créez et déployez les nœuds (instances EC2) dans EKS.
Groupes de nœuds gérés (managed node groups) : créés par vous, ils permettent de créer et gérer des instances Amazon EC2 automatiquement pour vous.
AWS Fargate : AWS s’occupe du déploiement et de la maintenance.
Enfin, le pilote Amazon EFS Container Storage Interface (CSI) permet à EKS de gérer le cycle de vie de volumes de stockage. À la création du cluster, précisez la classe de stockage (storage class) :
EBS ;
EFS (fonctionne avec FARGATE contrairement aux autres stockages) ;
FSx for Lustre ;
FSx for NetApp ONTAP.
Regardez ici le fonctionnement de ECS et EKS:
AWS Elastic Beanstalk
Elastic Beanstalk s’appuie sur CloudFormation pour déployer toutes les ressources et services (que vous payez) nécessaires à votre application. Chaque environnement exécute une seule version d'application à la fois.
AWS App Runner
Regardez ici le fonctionnement de Elastic Beanstalk et App Runner :
Testez les solutions sans serveurs
Avec Fargate, nous avons eu un aperçu d’un service sans serveurs (serverless). Il s’agit d’un modèle où vous n’avez plus qu’à déployer votre code et vous n’avez plus besoin d'approvisionner et gérer les serveurs sous-jacents.
AWS Lambda
Ce service a été le premier créé par AWS, basé sur ce modèle, et qui exécute votre code comme une fonction.
Vous pouvez trouver plus d'informations sur la tarification sur la page dédiée.
Quelques chiffres sur les quotas Lambda, à connaître quand vous serez testé pour la certification, pour choisir entre Lambda et ECS :
Ressources | Quotas |
Allocation de mémoire des fonctions | 128 Mo à 10 240 Mo, par incréments de 1 Mo |
Délai d’expiration des fonctions | 900 secondes (15 minutes) |
Variables d’environnement des fonctions | 4 Ko, pour toutes les variables d’environnement associées à la fonction, au total |
Stratégie de fonction basée sur les ressources | 20 Ko |
Simultanéité en rafale des fonctions (concurrency executions) | 500 – 3 000 (varie selon la région) |
Taille du package de déploiement (archive de fichiers .zip) | 50 Mo (compressé, en chargement direct) 250 Mo (décompressé) Ce quota s’applique à tous les fichiers que vous chargez, y compris les couches et les environnements d’exécution personnalisés. |
Taille du package du code de l’image de conteneur | 10 Go |
/tmp Stockage temporaire dans le répertoire | Entre 512 Mo et 10 240 Mo par incréments de 1 Mo |
Regardez ici le fonctionnement de AWS Lambda :
Orchestrez vos tâches
Lambda est très populaire parce qu’il vous aide à construire facilement, avec d’autres services AWS, des tâches sous forme de flux de travail.
En résumé :
Les solutions d’orchestration de conteneurs ECS et EKS fournissent des alternatives aux instances EC2.
Pour ne pas vous soucier de la gestion de l’infrastructure, utilisez les solutions sans serveur Lambda ou Fargate.
Elastic Beanstalk et App Runner sont des solutions spécialement dédiées aux sites web.
Pour la suite, voyons quelles sont les solutions pour traiter par lots des données, par exemple les commentaires des lecteurs !