Fragmenter une application monolithique en micro services avec AWS Copilot, Amazon ECS, Docker et AWS Fargate
DIDACTICIEL
Introduction
Présentation
Dans ce didacticiel, vous allez déployer une application monolithique Node.js sur un conteneur Docker, puis vous découplerez cette application en micro services sans aucune interruption. L'application Node.js héberge un simple forum de discussion avec des threads et des messages entre utilisateurs.
Pourquoi est-ce important
Les architectures monolithiques classiques sont difficiles à mettre à l'échelle. A mesure de la croissance de la base de code d'une application, elle devient complexe à mettre à jour et à maintenir. L'introduction de nouvelles fonctionnalités, langues, d'infrastructures et technologies devient très difficile, ce qui limite l'innovation et les nouvelles idées.
Dans une architecture à micro services, chaque composant d'application s'exécute comme son propre service et communique avec les autres services via une API bien définie. Les micro services sont développés autour des capacités métier, et chaque service exécute une seule fonction. Les micro services peuvent être écrits à l'aide d'infrastructures et de langages de programmation différents, et vous pouvez les déployer indépendamment, comme un seul service ou comme un groupe de services.
Ce que vous allez accomplir
Au cours de ce didacticiel, nous allons vous montrer comment exécuter une simple application monolithique dans un conteneur Docker, puis comment déployer la même application sous la forme de micro services, et basculer le trafic vers les micro services sans aucune interruption. Lorsque vous aurez terminé, vous pourrez utiliser ce didacticiel et son code comme modèle pour créer et déployer vos propres micro services conteneurisés sur AWS.
Architecture monolithique
Toute l'application Node.js s'exécute dans un conteneur sous la forme d'un service unique et chaque conteneur a les mêmes fonctionnalités que tous les autres. Si une fonctionnalité de l'application enregistre un pic de demande, toute l'architecture devra être mise à l'échelle.
Architecture de micro services
Chaque fonctionnalité de l'application Node.js s'exécute sous la forme d'un service séparé dans son propre conteneur. Il est possible de mettre à l'échelle et à jour les services indépendamment les uns des autres.
Conditions préalables
- Un compte AWS : si vous n'en avez pas encore, suivez le didacticiel Configuration de votre environnement AWS pour une présentation rapide.
- Installez et configurez AWS CLI
- Installez et configurez AWS Copilot
- Installez et configurez Docker
- Un éditeur de texte. Pour ce tutoriel, nous utiliserons VS Code, mais vous pouvez utiliser votre IDE préféré.
Expérience AWS
Intermédiaire
Délai minimum d'exécution
110 minutes
Coût de réalisation
Admissible à l'offre gratuite
Éléments requis
- Un compte AWS : si vous n'en avez pas encore, suivez le didacticiel Configuration de votre environnement AWS pour une présentation rapide.
- Installez et configurez AWS CLI.
- Installez et configurez AWS Copilot.
- Installez et configurez Docker.
- Un éditeur de texte. Pour ce tutoriel, nous utiliserons VS Code, mais vous pouvez utiliser votre IDE préféré.
Services utilisés
Code
Dernière mise à jour
Modules
Ce didacticiel est divisé en plusieurs modules. Vous devez terminer chacun des modules avant de pouvoir passer au suivant.
- Configuration (20 minutes) : dans ce module, vous allez installer et configurer AWS CLI, installer AWS Copilot et installer Docker.
- Conteneuriser et déployer le monolithe (30 minutes) : dans ce module, vous allez conteneuriser l'application, utiliser AWS Copilot pour instancier un cluster géré d'instances de calcul EC2 et déployer votre image en tant que conteneur s'exécutant sur le cluster.
- Fragmenter le monolithe (20 minutes) : dans ce module, vous allez apprendre à fragmenter votre application Node.js en plusieurs services interconnectés, puis à transférer l'image de chaque service dans un référentiel Amazon Elastic Container Registry (Amazon ECR).
- Déployer des micro services (30 minutes) : dans ce module, vous allez déployer votre application Node.js sous forme de services interconnectés derrière un Application Load Balancer (ALB). Vous serez ensuite en mesure d'employer cet ALB pour rediriger de manière transparente le trafic du monolithe vers les micro services.
- Nettoyer (10 minutes) : dans ce module, vous allez mettre fin aux ressources que vous avez créées au cours de ce didacticiel. Vous allez arrêter les services fonctionnant sur Amazon ECS, supprimer l'ALB et la pile AWS CloudFormation pour mettre fin au cluster Amazon ECS, incluant toutes les instances EC2 sous-jacentes.