• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 09/03/2023

Explorez les alternatives aux instances EC2

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)

Capture d’écran “Créer un cluster” détaillant l’étape 1 de sélection du modèle de cluster
Création d'un cluster
Capture d’écran de la page d’accueil d’Amazon Elastic Container Registry
Service Amazon Elastic Container Registry

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. 

Screenshot de l'étape 1: selectionner la compatibilité du type de lancement
Création du definition de tâche

Ci-dessous le fonctionnement pour chaque type de lancement :

Schéma de fonctionnement d’un cluster ECS avec un type de lancement EC2 avec 3 étapes
Fonctionnement d’un cluster ECS avec un type de lancement EC2

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.

Schéma du fonctionnement d’un cluster ECS avec un type de lancement FARGATE avec 3 étapes
Fonctionnement d’un cluster ECS avec un type de lancement FARGATE

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.

Schéma montrant le principe des rôles de tâche et d’instance
Principe des rôles de tâche et d’instance. * - Le rôle d’instance est assumé par l’agent ECS qui peut récupérer l’image Docker depuis ECR, interagir avec les API d’ECR pour lancer un conteneur, envoyer les logs vers CloudWatch Logs

Amazon Elastic Kubernetes Service (EKS)

deux logos
Logos des services Kubernetes et 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.

Screenshot du démarrage d'une application dans le service Elastic Beanstalk
Création d'une application web dans AWS Elastic Beanstalk

AWS App Runner

Les 4 étapes Ajouter une source, Paramétrer, Déployer et Visualiser sont représentées, les unes à côté des autres, de gauche à droite.  Elles sont reliées par des flèches.
Principe du service 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

tableau detaillant la tarification AWS Lambda. Les colonnes sons: architecture, durée, demanders
Tarification AWS Lambda

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.

Screenshot sur AWS Step Functions
Screenshot sur AWS Step Functions

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 !

Exemple de certificat de réussite
Exemple de certificat de réussite