Construction d’une application serveless en utilisant Step Functions, API Gateway, Lambda et S3 dans AWS
Architecture de solution
Contexte et Objectifs
Objectifs
L’article vise à :
- Step Functions : orchestration du workflow.
- API Gateway :point d’entrée pour exposer des API REST ou HTTP.
- Lambda : exécution de la logique métier à la demande.
- S3 : stockage de fichiers statiques ou objets nécessaires à l’application.
- Pas de gestion de serveurs : AWS gère le provisionnement et la maintenance.
- Facturation à l’usage : vous ne payez que lorsque votre code est exécuté.
- Évolutivité automatique : les services s’adaptent dynamiquement à la charge.
- Déploiement rapide : en utilisant des composants prédéfinis (API, workflows, stockage, etc.).
- Cas d’usage : Traitement d’un fichier en plusieurs étapes, validation de données, ou envoi d’e-mails à plusieurs services.
- Avantage : Simplifie l’orchestration de tâches complexes et leur état, sans qu’il soit nécessaire d’écrire un code manuel d’enchaînement des fonctions.
- La tarification:regardez la tarification ici AWS Step functions pricing
- Cas d’usage : Une application front-end qui interagit avec des fonctions Lambda via des appels API.
- Avantage : Il offre des fonctionnalités de sécurité (authentification, autorisation), de gestion de quota et de journalisation des requêtes.
- La tarification: regardez la tarification ici API Gateway pricing
- Cas d’usage : Traitement d’une image ou exécution d’une logique métier spécifique.
- Avantage :Évolutif et facturé à la milliseconde, ce qui optimise les coûts.
- La tarification: regardez la tarification ici AWS Lambda pricing 4. S3 : Stockage d’objets Amazon S3 est un service de stockage d’objets utilisé pour héberger des fichiers statiques (comme des images ou du contenu HTML) ou stocker des résultats intermédiaires (par exemple, des fichiers transformés par Lambda).
- Cas d’usage : Stockage de fichiers d’entrée et sortie dans un workflow Step Functions.
- Avantage :Fiabilité élevée et capacité d’évoluer à l’infini, avec un coût compétitif.
- La tarification:regardez la tarification ici Amazon S3 pricing
- 1. Expliquer les concepts clés du serverless en illustrant la synergie entre Step Functions, API Gateway, Lambda et S3.
- 2. Montrer comment construire une application serverless capable d’orchestrer différents services AWS sans provisionner d’infrastructure permanente pour démontrer l’utilisation coordonnée des services :
- ● Avoir un compte AWS, si vous en avez pas vous pouvez créer en cliquant sur ce lien
- ● Avoir VScode ou tout autres éditeurs de code installés sur votre PC. Vous pouvez télécharger
- Temps estimé de réalisation: 2h
- Présentation des services et de leur rôle dans la solution serverless
- ○ Compression de l’image via Lambda.
- ○ Envoi d’une notification de succès.
- ○ Stockage de l’image compressée dans un autre bucket S3.
- ● Ouvrez Simple Email Service dans un nouvel onglet en tapant Simple Email Service dans la barre de recherche en haut de l’écran.
-
● Vous devriez voir une page « Félicitations ! » qui confirme que vous avez vérifié votre adresse e-mail avec succès.
● Revenez à l’onglet de la console AWS SES.
● Vous devriez maintenant voir Verified (Vérifié) sous Identity status (État de l’identité). (Remarque : il se peut que vous deviez actualiser la page).
Etape 2 : Créer la fonction Lambda Email
- ● Dans le repo GitHub, téléchargez les fichiers au format .zip et décompressez-les sur votre machine. En utilisant un éditeur de texte tel que VSCode, ouvrez le fichier email_reminder.py.
- ● Revenez à votre premier onglet, et dans la console de gestion AWS, naviguez jusqu’à Lambda en tapant Lambda dans la barre de recherche en haut de l’écran. Sélectionnez Lambda dans le menu déroulant.
-
○ Nom de la fonction : email
- ○ Runtime : Python 3.12
-
● Votre machine d’état devrait maintenant être créée.
● Sur la page MyStateMachine, sous Détails, copiez l’ARN dans votre presse-papiers ou dans un fichier texte. (Si vous êtes toujours dans la page de configuration de l’automate à états, cliquez sur quitter en haut de la page).
Objectif 4 : Créer la fonction Lambda api_handler
● Faites défiler la page jusqu’à la ligne de navigation en haut de la page, cliquez sur Lambda pour revenir à la console Lambda principale.
● Cliquez sur Create function (Créer une fonction).
-
○ Nom de la fonction : api_handler
○ Runtime : Python 3.12
-
○ Nom de l’API : reminders
-
○ Type d’intégration : Lambda Function
- ○ Activez l’intégration Lambda Proxy en cliquant sur la case à cocher.
○ Région Lambda : us-east-1
○ Fonction Lambda : Commencez à taper, puis sélectionnez api_handler.
- ● Cliquez sur Create method en bas de la page.
- ● De retour à la page Ressources, cliquez sur Déployer l’API en haut de la page.
- ● Dans la fenêtre contextuelle Deploy API, définissez les valeurs suivantes :
-
○ Étape de déploiement : [Nouvelle étape]
○ Nom de l’étape : prod
○ Cliquez sur Déployer.
-
○ cat.png
○ error.html
○ formlogic.js
○ IMG_0991.jpg
○ index.html
○ main.css
-
○ Définissez les valeurs suivantes :
○ Document d’index : index.html
○ Document d’erreur : error.html
-
○ Secondes d’attente : 1
○ Message : Bonjour !
○ someone@something.com : Votre adresse électronique personnelle (il doit s’agir de la même que celle que vous avez vérifiée précédemment avec Simple Email Service).
○ Sous Type de rappel, sélectionnez e-mail.
-
● Vous devriez voir « Looks ok ». Mais vérifiez le résultat ci-dessous ! au-dessus des sections Required, et vous devriez voir« Status » : « Success »en bas de la page.
-
○ Secondes d’attente : 1
○ Message : Bonjour !
○ someone@something.com : Votre adresse électronique personnelle (il doit s’agir de la même que celle que vous avez vérifiée précédemment avec Simple Email Service).
○ Sous Type de rappel, sélectionnez e-mail.
-
● Vous devriez voir « Looks ok ». Mais vérifiez le résultat ci-dessous ! au-dessus des sections Required, et vous devriez voir« Status » : « Success »en bas de la page.
- Accédez à l’onglet de la console AWS Step Functions.
- Dans la section Executions, cliquez sur l’icône d’actualisation.
- Vous devriez voir au moins une exécution
- Cliquez sur l’une des exécutions.
- Faites défiler vers le bas jusqu’à l’affichage du graphique pour visualiser le flux de travail de l’événement.
- Dans un nouvel onglet du navigateur ou dans un nouveau client de messagerie, accédez à votre courrier électronique. Vous devriez maintenant voir un courriel de rappel de la part du service.
Pour vous aider à comprendre et optimiser vos coûts sur la plateforme AWS, je vous invite à lire l’article l’optimisation des coûts.
III. Démonstration des avantages du AWS Serverless
Le modèle serverless apporte de nombreux avantages pour les entreprises modernes, en particulier dans le cloud. Voici une démonstration claire de ses atouts à travers une explication détaillée avec des scénarios d’utilisation.
1. Réduction des Coûts Opérationnels
Dans le modèle serverless, vous ne payez que pour l’exécution de votre code ou l’utilisation de vos services (mode pay-per-use). Il n’y a pas de frais pour les serveurs inactifs.
Exemple :
Un site de e-commerce enregistre une forte affluence pendant les fêtes mais beaucoup moins de trafic le reste de l’année. Avec une infrastructure classique, les serveurs devraient tourner constamment. En serverless, les fonctions ne s’exécutent que lors des transactions ou consultations, ce qui optimise les coûts en période creuse.
➡ Avantage : aucune nécessité de surprovisionner ou payer pour des ressources inutilisées.
2. Évolutivité Automatique (Auto-scaling)
Le serverless permet de s’adapter automatiquement aux fluctuations du trafic. Le cloud alloue les ressources nécessaires pour exécuter le code en fonction de la demande sans intervention manuelle.
Exemple :
Lors du lancement d’une application mobile virale, un pic inattendu de millions d’utilisateurs survient. Grâce au serverless, la charge est automatiquement absorbée sans que les utilisateurs rencontrent des problèmes de disponibilité.
➡ Avantage : aucune gestion complexe du dimensionnement des serveurs.
3. Gain de Temps dans le Développement
Les développeurs peuvent se concentrer sur la logique métier sans gérer l’infrastructure sous-jacente (serveurs, systèmes d’exploitation, mises à jour, etc.).
Exemple :
Une startup SaaS choisit d’utiliser AWS Lambda avec Amazon DynamoDB et API Gateway. En éliminant la gestion des serveurs, elle se concentre sur les fonctionnalités du produit et livre plus rapidement.
➡ Avantage : réduction du time-to-market.
4. Maintenance et Mises à Jour Simplifiées
Le fournisseur cloud gère les aspects liés à la maintenance (mises à jour de sécurité, patchs, etc.), ce qui réduit les efforts de maintenance.
Exemple :
Une plateforme IoT utilise des fonctions serverless pour traiter des millions d’événements en temps réel. L’équipe ne s’inquiète pas des correctifs de sécurité ou des montées de version du système, car tout cela est pris en charge par AWS.
➡ Avantage : moins de stress lié à la maintenance de l’infrastructure.
5. Meilleure Résilience et Haute Disponibilité
Les services serverless sont répartis sur plusieurs régions et zones de disponibilité, garantissant une résilience intégrée.
Exemple :
Un service de streaming utilise AWS Lambda et Amazon S3 pour livrer du contenu. Même si une région AWS rencontre un problème, le service continue de fonctionner grâce à l’architecture distribuée du cloud.
➡ Avantage : tolérance aux pannes intégrées.
6. Modèle Idéal pour les Charges de Travail Événementielles
Le serverless est particulièrement efficace pour des charges de travail ponctuelles ou événementielles. Les fonctions ne s’exécutent qu’en réponse à des événements (HTTP, base de données, IoT, etc.).
Exemple :
Un système de facturation cloud est déclenché chaque fois qu’un client effectue un achat, générant la facture via une fonction Lambda.
➡ Avantage : consommation optimale des ressources en fonction des besoins réels.
7. Architecture Modulaire et Facilement Extensible
Le modèle serverless facilite le découpage d’une application en plusieurs fonctions indépendantes (microservices), facilitant ainsi l’évolution de l’application.
Exemple :
Une entreprise de logistique divise son application en plusieurs microservices (gestion des commandes, calcul des livraisons, notifications clients). Chaque microservice est une fonction Lambda autonome pouvant évoluer indépendamment.
➡ Avantage : meilleure flexibilité et agilité de l’application.
IV. Limites et Scénarios où Serverless est Moins Adapté
Bien que puissant, le modèle serverless présente quelques limites :
- Cold starts : Le démarrage à froid des fonctions peut engendrer des latences.
- Pas adapté aux charges constantes : Pour des workloads longs ou constants, une solution comme EC2 ou EKS pourrait être plus économique.
- Limites d’exécution : AWS Lambda limite l’exécution d’une fonction à 15 minutes. Et pour connaître et mieux comprendre la limite des services AWS, veuillez consulter AWS Service quotas.
Conclusion
Le modèle serverless révolutionne la gestion des applications en permettant aux entreprises de se concentrer sur l’innovation sans se soucier de l’infrastructure sous-jacente. Il offre des avantages indéniables : réduction des coûts, évolutivité automatique, simplification de la maintenance, et accélération du développement. Idéal pour les charges événementielles et les applications modulaires, il garantit également une meilleure résilience grâce à une architecture distribuée. Cependant, il peut être moins adapté aux workloads constants ou critiques nécessitant une exécution prolongée. En somme, le serverless s’impose comme une solution puissante pour les entreprises modernes cherchant agilité, flexibilité, et optimisation des ressources dans leur transformation numérique.Pour plus d’articles et d’approfondissement n’hésitez pas à consulter notre blog et notre formation cloud devenez AWS Certified Associate et SysOps ou tout simplement vous inscrire au BootCamp BootCamp AWS Cloud Engineer.
Références
Tags et Catégories
#Serverless #AWSLambda #CloudComputing #Évolutivité #RéductionDesCoûts #ArchitectureModulaire #Resilience #GestionDInsfrastructure #TimetoMarket #MaintenanceSimplifiée #HauteDisponibilité #ApplicationSÉvénementielles #ToléranceAuxPannes #OptimisationDesRessources
Auteur: Lahda Biassou Alphonsine, Ingénieur Cloud
LinkedIn: Alphonsine Lahda