Créez une architecture faiblement couplée avec des microservices en utilisant DevOps Practices et AWS Cloud9 - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Créez une architecture faiblement couplée avec des microservices en utilisant DevOps Practices et AWS Cloud9

Créée par Alexandre Nardi (AWS)

Récapitulatif

Remarque : n' AWS Cloud9 est plus disponible pour les nouveaux clients. Les clients existants de AWS Cloud9 peuvent continuer à utiliser le service normalement. En savoir plus

Remarque : n' AWS CodeCommit est plus disponible pour les nouveaux clients. Les clients existants de AWS CodeCommit peuvent continuer à utiliser le service normalement. En savoir plus

Ce modèle montre comment développer une application Web typique dans une architecture sans serveur, pour les développeurs et les responsables du développement qui commencent à tester DevOps des pratiques sur Amazon Web Services (AWS). Il crée un exemple d'application qui crée une vitrine et un backend pour parcourir et acheter des livres, et fournit un microservice qui peut être développé indépendamment. Le modèle utilise AWS Cloud9 comme environnement de développement, une base de données Amazon DynamoDB comme magasin de données et des services AWS tels qu'AWS et CodeBuild AWS pour les fonctionnalités d'intégration CodePipeline et de déploiement continus (CI/CD).

Le modèle vous guide à travers les activités de développement suivantes : 

  • Création d'un environnement de développement AWS Cloud9 standard

  • Utilisation de CloudFormation modèles AWS pour créer une application Web et un microservice pour les livres

  • Utilisation d'AWS Cloud9 pour modifier le front-end, valider les modifications et tester les modifications

  • Création et test d'un pipeline CI/CD vers le microservice

  • Automatisation des tests unitaires

Le code de ce modèle est fourni dans GitHub le référentiel AWS DevOps End-to-End Workshop.

Conditions préalables et limitations

Prérequis

Important

La création de cette application de démonstration dans votre compte AWS crée et consomme des ressources AWS. Vous êtes responsable du coût des services et des ressources AWS utilisés pour créer et exécuter l'application. Une fois votre travail terminé, veillez à supprimer toutes les ressources afin d'éviter des frais récurrents. Pour les instructions de nettoyage, consultez la section Epics. 

Limites

Cette procédure pas à pas est uniquement destinée à des fins de démonstration et de développement. Pour l'utiliser dans un environnement de production, consultez les meilleures pratiques en matière de sécurité dans la documentation AWS Identity and Access Management (IAM) et apportez les modifications nécessaires aux rôles IAM, à Amazon DynamoDB et aux autres services utilisés. L'application Web est dérivée de l'application de démonstration AWS Bookstore ; pour plus d'informations, consultez la section Limitations connues du fichier README.

Architecture

L'architecture de l'application de librairie est illustrée dans la section Architecture du fichier README de l'application de démonstration AWS Bookstore

Du point de vue du déploiement, l'application de démonstration Bookstore utilise un CloudFormation modèle unique pour déployer tous les services et objets dans une seule pile. Ce modèle apporte quelques modifications pour montrer comment un développeur ou une équipe en particulier pourrait travailler sur un produit spécifique (Books) et le mettre à jour indépendamment du reste de l'application. C'est pourquoi le code de ce modèle sépare les fonctions AWS Lambda et les objets associés pour le microservice Books dans un second CloudFormation modèle, qui crée une pile Books. Cela permet de voir le microservice mis à jour en utilisant les pratiques CI/CD. Dans le schéma suivant, la bordure en pointillés identifie le microservice Books.

Un microservice de livres dans une architecture faiblement couplée qui utilise des DevOps pratiques.

Outils

Outils

  • Framework Jest pour les tests JavaScript

  • Python 3.9

Code

Le code source et les modèles de ce modèle sont disponibles sur GitHub le référentiel AWS DevOps End-to-End Workshop. Avant de suivre les étapes de la section Epics, téléchargez tous les fichiers du référentiel sur votre ordinateur.

Note

La section Epics fournit les étapes de haut niveau de cette procédure pas à pas, afin de vous donner des informations générales sur le processus. Pour terminer chaque étape, consultez le fichier README dans le référentiel AWS DevOps End-to-End Workshop pour obtenir des instructions détaillées.

Le référentiel AWS DevOps End-to-End Workshop étend le référentiel des applications de démonstration AWS Bookstore et utilise une version modifiée du code d'amorçage AWS Cloud9 pour créer l'IDE AWS Cloud9.

Bonnes pratiques

L'utilisation de l'application Bookstore est simple. Voici quelques bonnes pratiques recommandées :

  • Lorsque vous installez l'application, vous pouvez utiliser le nom du projet de votre choix ou utiliser le nom par défaut (demobookstore) pour plus de commodité.

  • Une fois que l'application est opérationnelle, il est recommandé d'arrêter la base de données Amazon Neptune si vous souhaitez poursuivre les tests pendant un jour de plus, car l'instance de base de données peut entraîner des frais supplémentaires. Sachez toutefois que la base de données sera automatiquement démarrée au bout de sept jours.

  • Pour plus de détails sur le code, consultez la documentation du référentiel d'applications de démonstration AWS Bookstore. Il décrit chaque microservice et chaque table.

  • Pour d'autres bonnes pratiques, consultez la section Quelques défis si vous avez le temps... section du fichier README dans le référentiel AWS DevOps End-to-End Workshop. Nous vous recommandons de consulter les informations pour approfondir les fonctionnalités supplémentaires de sécurité et pour pratiquer le découplage des services.

Épopées

TâcheDescriptionCompétences requises

Téléchargez le code source depuis GitHub.

Le code source et les modèles de ce modèle sont disponibles dans GitHub le référentiel AWS DevOps End-to-End Workshop. Avant de suivre les étapes suivantes de la section Epics, téléchargez tous les fichiers du référentiel sur votre ordinateur.

Note

La section Epics fournit les étapes de haut niveau de cette procédure pas à pas, afin de vous donner des informations générales sur le processus. Pour terminer chaque étape, consultez le fichier README dans le référentiel AWS DevOps End-to-End Workshop pour obtenir des instructions détaillées.

Le référentiel AWS DevOps End-to-End Workshop étend le référentiel des applications de démonstration AWS Bookstore et utilise une version modifiée du code d'amorçage AWS Cloud9 pour créer l'IDE AWS Cloud9.

Développeur d’applications
TâcheDescriptionCompétences requises

Créez les fonctions frontales et Lambda pour l'application Bookstore.

  1. Connectez-vous à la CloudFormation console et déployez le DemoBookstoreMainTemplate.yml modèle pour créer la DemoBookStoreStack pile. Cela crée les fonctions frontales et Lambda qui ne font pas partie du microservice Books.

  2. Dans l'onglet Sorties de la pile, notez l'URL du site Web sous l'WebApplicationétiquette.

Developer

Créez le microservice Books.

Sur la CloudFormation console, déployez le DemoBookstoreBooksServiceTemplate.yml modèle pour créer la DemoBooksServiceStack pile.

Developer

Testez votre application.

Utilisez l'URL du site Web figurant dans la DemoBookStoreStack pile pour accéder à l'application Bookstore.

Developer
TâcheDescriptionCompétences requises

Créez un IDE AWS Cloud9.

Sur la CloudFormation console, déployez le C9EnvironmentTemplate.yml modèle pour créer un environnement AWS Cloud9.

Développeur, responsable du développement

Créez des CodeCommit référentiels.

  1. Connectez-vous à la CodeCommit console AWS et vérifiez que vous disposez d'un demobookstore-WebAssets référentiel contenant le code de l'application frontale.

  2. Créez un référentiel pour le microservice Books appelédemobookstore-BooksService.

  3. Clonez les deux référentiels dans AWS Cloud9 demobookstore-WebAssets (demobookstore-BooksServiceet) à l'aide git clone de la commande.

Developer

Modifiez le code dans le frontend et vérifiez le pipeline.

  1. Utilisez AWS Cloud9 pour apporter des modifications au code d'une page Web. Cela mettra à jour le demobookstore-WebAssets référentiel.

  2. Sur la CodePipeline console AWS, vérifiez que DemoBookStore-Assets-Pipeline est en cours d'exécution. 

  3. Testez votre application Web en l'actualisant depuis le navigateur (Ctrl+F5 sur Firefox).

Developer
TâcheDescriptionCompétences requises

Ajoutez les fichiers YAML pour la compilation et la mise à jour du service.

  1. Dans AWS Cloud9, chargez les fichiers buildspec.yml etDemoBookstoreBooksServiceUpdateTemplate.yml .

    • buildspec.ymlcontient des instructions de montage et inclut également des instructions de test pour les tests automatisés. Ils sont commentés à ce stade et seront utilisés ultérieurement.

    • DemoBookstoreBooksServiceUpdateTemplate.ymlest une version mise à jour deDemoBookstoreBooksServiceTemplate.yml, à utiliser lors de la phase de déploiement du pipeline.

  2. Validez et publiez les fichiers.

Developer

Créez un compartiment S3 pour le pipeline de construction.

Pour créer un compartiment S3, suivez les instructions de la documentation Amazon S3.

  • Le nom du compartiment doit être unique au monde ; par exemple,demobookstore-books-service-pipeline-bucket-<YYYYMMDDHHMM>

  • Décochez la case Bloquer tout accès public, puis cochez la case J'accuse réception...

Developer

Utilisez IAM pour créer un rôle à CloudFormation déployer.

Créez un demobookstore-CloudFormation-role rôle et associez la AdministratorAccess politique. Dans la prochaine épopée, vous pourrez reconfigurer ce rôle pour obtenir des autorisations minimales.

Developer

Créez un nouveau pipeline pour automatiser la création et le déploiement du microservice Books.

Créez un pipeline (par exemple, demobookstore- BooksService -Pipeline) avec les étapes Commit, Build et Deploy, comme décrit dans le fichier README.

Developer

Testez votre microservice dans AWS Cloud9.

Modifiez la ListBooksfonction et observez le pipeline fonctionner.

Developer

Automatisez le test unitaire pour la fonction ListBooks Lambda.

Dans l'IDE AWS Cloud9, activez la version pour exécuter des tests unitaires et vérifiez les résultats des tests. Pour obtenir des instructions, consultez le fichier README.

Developer
TâcheDescriptionCompétences requises

Sécurisez votre solution.

Configurez demobookstore-CloudFormation-role pour disposer d'autorisations minimales et vérifiez également les autres rôles utilisés.

Developer

Éliminez les dépendances dans les CloudFormation modèles.

La méthode d'échange d'informations entre le DemoBookstoreMainTemplate.yml modèle et le DemoBookstoreBooksServiceTemplate.yml modèle est basée sur les sorties et les importations. Le transfert de valeurs entre ces deux modèles ajoute des dépendances. Pour éliminer les dépendances, pensez à utiliser AWS Systems Manager Parameter Store.

Developer

Créez un microservice Cart.

Utilisez le microservice Books comme exemple pour supprimer les fonctions liées au panier d'achat du DemoBookstoreMainTemplate.yml modèle et créer un microservice Cart.

Developer
TâcheDescriptionCompétences requises

Supprimez les compartiments S3.

Sur la console Amazon S3, supprimez les compartiments suivants associés à l'exemple d'application Web :

  • Deux compartiments créés pour l'application de démonstration AWS Bookstore. Les noms des compartiments commencent par le nom de pile que vous avez fourni à AWS CloudFormation lorsque vous avez créé le frontend ; par exemple,. DemoBookStoreStack

  • <YYYYMMDDHHMM>Un compartiment pour le pipeline de construction ; par exemple, demobookstore-books-service-pipeline-bucket-.

Developer

Supprimez les piles.

Sur la CloudFormation console, supprimez les piles associées à l'exemple d'application Web :

  • DemoBooksServiceStack

  • DemoBookStoreStack

Le retrait peut prendre plus de 90 minutes. Si la suppression échoue, supprimez-les à nouveau et supprimez également toutes les ressources manuelles (par exemple, le VPC ou les interfaces réseau) en fonction des notifications.

Developer

Supprimez les rôles IAM.

Sur la console IAM, supprimez les rôles suivants :

  • demobookstore-Cloudformation-role

  • demobookstore-BooksService-BuildProject-service-role

Pour step-by-step obtenir des instructions, consultez la documentation IAM

Developer

Ressources connexes

Informations supplémentaires

Pour obtenir des step-by-step instructions détaillées, consultez le fichier README dans le GitHub référentiel AWS DevOps End-to-End Workshop.

À propos de la mise à jour de mai 2023 : ce modèle a été mis à jour pour utiliser les nouvelles versions de Node et Python. Nous avons mis à jour de nombreux packages du code source et supprimé Glyphicon car il n'est plus gratuit. Nous avons également supprimé toutes les dépendances du référentiel de l'application de démonstration AWS Bookstore, de sorte que les deux référentiels peuvent désormais évoluer indépendamment.