Services et architectures découplés
Prérequis et objectifs
1. Prérequis
Pour tirer le meilleur parti de ce chapitre, il est recommandé de disposer :
D’un compte AWS.
Des connaissances en lignes de commandes pour le cas pratique.
2. Objectifs
L’objectif de ce chapitre est de fournir une compréhension approfondie des services serverless et événementiels afin de découpler les composants des architectures cloud et d’améliorer la scalabilité, la tolérance aux pannes et l’optimisation des coûts.
Ce chapitre explore les concepts du serverless computing, l’orchestration des workflows, la gestion des files de messages et la diffusion d’événements, tout en mettant en pratique des services comme AWS Lambda, SQS, SNS, Step Functions, API Gateway, Kinesis et Amazon MSK pour bâtir des solutions cloud modernes et découplées.
3. Positionnement dans la certification AWS
Ce chapitre est aligné avec plusieurs objectifs de la certification AWS Certified Solutions Architect - Associate (SAA-C03) :
-
Domaine 2 : Conception d’architectures résilientes (26 %)
-
Utilisation de services serverless pour améliorer la résilience et la scalabilité.
-
Mise en place d’architectures événementielles via SNS, SQS, Kinesis et Step Functions.
-
Découplage des microservices avec SQS et Amazon MQ.
-
Domaine 3 : Conception...
Rappel de la définition du serverless
1. Rappel des principes du serverless
Pour rappel, le serverless, littéralement « sans serveur », est un modèle d’architecture dans lequel les développeurs utilisent des services entièrement gérés par un fournisseur cloud, comme AWS, pour construire et exécuter des applications sans avoir à gérer directement l’infrastructure sous-jacente. Bien que des serveurs physiques existent toujours en arrière-plan, le terme « serverless » signifie que leur gestion, leur mise à l’échelle, ainsi que leur maintenance sont complètement prises en charge par le fournisseur cloud.
Dans une architecture serverless, les développeurs n’ont pas à se soucier du provisionnement des serveurs, de leur configuration ou des mises à jour de sécurité. Ils interagissent avec des services cloud via des API et se concentrent uniquement sur la logique métier et la gestion des données. Par exemple, avec AWS Lambda, les développeurs écrivent des fonctions qui sont automatiquement exécutées en réponse à des événements, tandis qu’avec Amazon S3, ils peuvent stocker et récupérer des fichiers sans s’occuper de l’espace disque ou des capacités de stockage.
En résumé...
AWS Lambda
1. Présentation d’AWS Lambda
![]() |
AWS Lambda est un service de calcul serverless entièrement managé proposé par AWS. Il permet d’exécuter du code sans avoir à provisionner ou gérer de serveurs. Avec AWS Lambda, les développeurs peuvent se concentrer uniquement sur l’écriture de leurs fonctions, tandis qu’AWS prend en charge l’infrastructure, y compris la gestion des serveurs, la mise à l’échelle automatique et la haute disponibilité. |
Le fonctionnement de Lambda repose sur un modèle event-driven (piloté par des événements) : une fonction Lambda s’exécute automatiquement en réponse à des événements provenant de différents services AWS tels que S3, DynamoDB, SNS, SQS ou encore API Gateway. Chaque fois qu’un événement se produit, Lambda exécute la fonction correspondante et renvoie le résultat. Ce modèle simplifie considérablement le développement d’applications cloud-native et permet de créer des architectures découplées et hautement scalables.
Lambda prend en charge plusieurs langages de programmation, notamment :
-
Java
-
Go
-
PowerShell
-
Node.js
-
C#
-
Python
-
Ruby
-
Runtimes personnalisés : AWS Lambda permet également d’utiliser des runtimes personnalisés via un mécanisme de Lambda Layers, élargissant ainsi encore plus les possibilités de prise en charge des langages.
AWS Lambda est particulièrement adapté aux cas d’usage nécessitant une exécution rapide et ponctuelle de code tels que le traitement d’images ou de vidéos uploadées dans un bucket S3, l’automatisation des tâches de maintenance ou bien d’une mise en place d’API serverless avec API Gateway.
2. Pourquoi utiliser AWS Lambda ?
AWS Lambda est une solution incontournable pour les entreprises et les développeurs cherchant à simplifier la gestion de l’infrastructure tout en bénéficiant d’une grande flexibilité dans la création d’applications modernes. Contrairement aux approches traditionnelles nécessitant la gestion explicite des serveurs, Lambda repose sur un modèle entièrement managé où...
Introduction aux architectures découplées
1. Définition des architectures découplées
Les architectures découplées constituent un pilier fondamental des systèmes modernes et évolutifs. Elles permettent de réduire les dépendances directes entre les composants d’une application, favorisant ainsi la résilience, la scalabilité et la flexibilité. Dans une architecture découplée, les composants communiquent de manière asynchrone via des mécanismes de messagerie, tels que des files d’attente ou des systèmes de publication/souscription, plutôt que d’établir des connexions directes et synchrones.
Une communication est dite asynchrone lorsque les composants d’un système peuvent continuer à fonctionner sans attendre immédiatement une réponse. Contrairement à une communication synchrone où un service A doit attendre que le service B réponde avant de poursuivre son traitement, l’asynchrone permet au service A d’envoyer un message au service B, puis de continuer son exécution indépendamment de la réponse. Le service B traitera la demande lorsqu’il sera disponible, et si nécessaire, enverra un accusé de réception ou une réponse.
Ce modèle présente plusieurs avantages majeurs : il évite les blocages causés par l’attente de réponses, améliore la tolérance aux pannes et permet une meilleure gestion des pics de charge.
Dans le secteur bancaire, un exemple typique de traitement asynchrone concerne la gestion des virements bancaires entre différentes institutions financières. Lorsqu’un client effectue un virement vers une autre banque, le processus ne se termine pas immédiatement. Voici comment une architecture découplée basée sur une communication asynchrone peut être utilisée :
-
Initiation du virement : le client demande un virement via l’application bancaire. Une fois la demande soumise, l’application ne contacte pas directement le système de la banque...
AWS Simple Queue Service
1. Généralités
a. Présentation d’AWS SQS
![]() |
Amazon Simple Queue Service (SQS) est l’un des premiers services proposés par AWS, lancé en 2004. Il s’agit d’un service de gestion de files d’attente entièrement managé, conçu pour permettre la communication asynchrone entre les composants d’une application distribuée. Grâce à SQS, les messages peuvent être envoyés, stockés et récupérés sans que les producteurs et les consommateurs de ces messages aient besoin d’être directement connectés ou synchronisés. |
SQS est particulièrement utile dans le contexte des architectures découplées, où il est crucial de séparer les différentes parties d’un système pour améliorer la résilience, la scalabilité et la flexibilité. Il agit comme un tampon entre les composants, en garantissant que les messages sont délivrés même si certains services ne sont temporairement pas disponibles.
De plus, l’un des points forts d’AWS SQS réside dans sa gestion entièrement automatisée. AWS prend en charge la maintenance, la mise à l’échelle et la redondance des messages, garantissant ainsi une haute disponibilité et une durabilité élevée. Concernant la tarification, SQS prend en charge un modèle économique « pay-per-use », où les utilisateurs paient uniquement pour les requêtes effectuées et le volume de données échangé, ce qui en fait une solution rentable pour les applications évolutives.
SQS s’intègre parfaitement avec d’autres services AWS, notamment Amazon SNS et AWS Lambda, permettant ainsi de concevoir des flux de données complexes. Par exemple, une application peut publier des messages sur un sujet SNS, qui les transfère ensuite à une file d’attente SQS. Une fonction Lambda peut être configurée pour récupérer ces messages et les traiter automatiquement.
En outre, la taille maximale d’un message dans AWS SQS est de 256 KB. Si une application nécessite de transférer des données dépassant cette...
AWS Simple Notification Service
1. Généralités
a. Présentation d’AWS SNS
![]() |
Amazon Simple Notification Service (SNS) est un service de messagerie entièrement managé, conçu pour envoyer des notifications à plusieurs destinataires via un modèle de communication publication/souscription (pub/sub). Ce modèle permet à un système producteur d’envoyer un message sur un topic (sujet), et à tous les abonnés inscrits à ce topic de recevoir automatiquement le message, quelle que soit leur nature ou leur localisation. Ces abonnés peuvent être des files d’attente SQS, des fonctions Lambda, des points de terminaison HTTP(S), des adresses e-mail ou encore des numéros de téléphone pour des notifications par SMS. |
Amazon SNS est particulièrement utile dans les architectures distribuées nécessitant une diffusion rapide et fiable des messages vers plusieurs systèmes consommateurs, qu’il s’agisse d’applications web, de services métiers ou de notifications utilisateurs.
b. Modèles de distribution des messages
Le modèle publication/souscription (pub/sub) est un concept de communication largement utilisé dans les architectures distribuées. Il repose sur trois concepts fondamentaux : le producteur, le topic et les abonnés.
-
Producteur (Publisher) : le producteur est le système ou l’application qui génère un message à envoyer. Dans Amazon SNS, le producteur publie ce message sur un topic, sans avoir besoin de connaître directement les abonnés finaux.
-
Topic : le topic agit comme un point de distribution central pour les messages. Un topic est un canal de communication sur lequel plusieurs producteurs peuvent publier des messages et auquel plusieurs abonnés peuvent s’inscrire. Lorsqu’un message est publié sur un topic, il est automatiquement diffusé à tous les abonnés inscrits.
-
Abonnés (Subscribers) : les abonnés sont les systèmes ou les services qui reçoivent les messages publiés sur un topic. Ils peuvent être de différents types (files d’attente SQS, fonctions Lambda, points de terminaison HTTP(S), e-mails ou SMS). Chaque abonné reçoit une copie...
Amazon MQ
1. Généralités
a. Présentation d’Amazon MQ
![]() |
Amazon MQ est également un service de message broker conçu pour simplifier la gestion de la communication entre différentes applications dans des environnements distribués. Contrairement aux services de messagerie cloud-native comme Amazon SQS et SNS, Amazon MQ est compatible avec les brokers traditionnels tels qu’ActiveMQ et RabbitMQ. Cette compatibilité permet aux entreprises de migrer leurs systèmes de messagerie existants vers le cloud AWS sans devoir modifier en profondeur les applications dépendantes. |
Amazon MQ gère automatiquement l’infrastructure du broker, y compris les tâches de maintenance, les mises à jour, la gestion des pannes et la sauvegarde des messages. De plus, il offre des options de haute disponibilité avec un déploiement multi-AZ, garantissant une continuité de service même en cas de panne d’une zone de disponibilité. Toutefois, cette haute disponibilité repose sur une architecture active/passive, nécessitant la configuration explicite d’un cluster multi-AZ par l’utilisateur. En comparaison, des services comme SNS et SQS offrent une haute disponibilité native grâce à leur conception entièrement distribuée et leur réplication automatique des messages sur plusieurs zones de disponibilité, sans intervention manuelle.
b. Support des protocoles standards
L’une des principales forces d’Amazon MQ réside dans sa compatibilité avec les standards de l’industrie en matière...
AWS Step Functions
1. Généralités
a. Présentation d’AWS Step Functions
![]() |
AWS Step Functions est un service d’orchestration qui permet de coordonner plusieurs services AWS en utilisant des workflows visuels. Il est conçu pour automatiser l’exécution des processus en enchaînant des étapes logiques et en gérant les transitions entre elles. Step Functions permet de définir des machines à états qui exécutent des tâches sous forme de workflows robustes et tolérants aux erreurs. |
Ce service facilite la gestion et l’exécution des workflows découpés en plusieurs étapes. Il intègre de manière native des services comme AWS Lambda, Amazon ECS, AWS Batch, Amazon SNS et SQS, permettant de concevoir des applications découplées et scalables.
Step Functions repose sur le langage Amazon States Language (ASL), un format JSON qui permet de définir les états et les transitions des workflows. Chaque étape du workflow peut être un appel à une fonction Lambda, une tâche ECS ou une autre action d’AWS.
Parmi ses fonctionnalités, AWS Step Functions offre :
-
une visualisation graphique des workflows pour faciliter le debugging et la surveillance ;
-
la gestion automatique des erreurs avec des mécanismes de retries et d’attentes conditionnelles ;
-
une exécution parallèle des étapes pour optimiser la performance des applications ;
-
une intégration native avec d’autres services AWS.

Ce schéma représente un workflow orchestré par AWS Step Functions permettant la validation et l’enregistrement de données de compte. Le processus démarre avec l’invocation d’une fonction AWS Lambda qui valide les informations du compte. Ensuite, un état de choix (Choice State) évalue si le compte est valide. Si la validation est réussie (règle #1), les données sont stockées...
Amazon API Gateway
1. Généralités
a. Présentation d’Amazon API Gateway
![]() |
Amazon API Gateway est un service entièrement géré qui permet de créer, publier, surveiller et sécuriser des API à n’importe quelle échelle. Il joue un rôle central dans les architectures modernes en servant de passerelle entre les clients (applications web, mobiles, IoT) et les services backend. En plus de fournir un point d’entrée unique pour toutes les requêtes API, API Gateway prend en charge différents types d’API, notamment REST, WebSocket et HTTP, offrant ainsi une flexibilité adaptée aux besoins des développeurs et des entreprises. |
L’avantage d’API Gateway réside dans sa capacité à gérer automatiquement des fonctionnalités critiques comme l’authentification, la limitation de débit (throttling), la journalisation et la mise en cache, garantissant ainsi une haute disponibilité et une gestion efficace du trafic. Il facilite également l’intégration avec d’autres services AWS tels que AWS Lambda, DynamoDB, S3 et Step Functions, permettant ainsi la mise en place d’architectures serverless et découplées.
b. Cas d’utilisation courants
API Gateway est utilisé dans divers contextes pour répondre à des besoins spécifiques en matière d’exposition et de gestion des API.
-
Orchestration de microservices : dans les architectures basées sur des microservices, API Gateway agit comme un point d’entrée unique pour regrouper plusieurs services backend et les exposer via une API unifiée. Cela simplifie la gestion des interactions entre les services et offre une abstraction aux clients finaux.
-
Exposition d’API serverless avec AWS Lambda : API Gateway est souvent utilisé en conjonction avec AWS Lambda pour créer des applications sans serveur (serverless). Dans ce modèle, API Gateway reçoit les requêtes HTTP, les transmet aux fonctions Lambda, qui exécutent le traitement et retournent une réponse, sans qu’aucune infrastructure ne soit nécessaire côté backend.
-
Gestion d’API publiques et privées : API Gateway permet de déployer des API accessibles...
AWS Kinesis
1. Introduction à AWS Kinesis
![]() |
Amazon Kinesis est un service entièrement managé d’ingestion, de traitement et d’analyse des flux de données en temps réel. Elle permet aux entreprises de collecter et de traiter de grandes quantités de données provenant de sources variées, telles que les journaux d’application, les événements de clics, les capteurs IoT, ou encore les flux d’activités des réseaux sociaux. |
L’un des principaux avantages d’AWS Kinesis est sa capacité à traiter les données en continu. Contrairement aux systèmes traditionnels de traitement par lot, où les données sont collectées puis analysées périodiquement, Kinesis permet de traiter les données dès qu’elles sont reçues, offrant ainsi un aperçu en temps réel. Cette fonctionnalité est particulièrement utile pour des applications critiques nécessitant une prise de décision rapide, comme la détection de fraudes, la surveillance des systèmes ou l’analyse de comportements utilisateur.
AWS Kinesis se décline en trois services principaux, chacun étant conçu pour répondre à des besoins spécifiques :
-
Kinesis Data Streams : ce service collecte et ingère des flux de données en continu, avec une haute durabilité et une faible latence. Les données collectées peuvent être consommées et traitées en temps réel par des applications ou des services tels que AWS Lambda.
-
Kinesis Data Firehose : ce service simplifie la livraison de flux de données en continu vers des destinations telles qu’Amazon S3, Amazon Redshift, Amazon OpenSearch Service (anciennement Elasticsearch) ou des points de terminaison HTTP. Il gère automatiquement la mise en lot, la compression et la transformation des données avant leur livraison.
-
Kinesis Data Analytics : ce service analyse les flux de données en temps réel à l’aide de requêtes SQL ou d’applications de streaming avancées. Il facilite l’analyse des données directement depuis Kinesis Data Streams ou Kinesis Data Firehose, sans avoir besoin de les stocker préalablement.
-
Kinesis Video...
Amazon MSK
1. Généralités
![]() |
Amazon MSK (Managed Streaming for Apache Kafka) est un service entièrement managé par AWS qui permet de créer et gérer facilement des clusters Apache Kafka. Kafka est une plateforme populaire de streaming de données distribuée, conçue pour traiter en temps réel des flux massifs de données provenant de diverses sources. |
Avec MSK, AWS prend en charge l’infrastructure sous-jacente, y compris le provisionnement des serveurs, la maintenance et la gestion des mises à jour, permettant ainsi aux utilisateurs de se concentrer sur la création et l’exploitation d’applications de streaming.
En plus des clusters managés traditionnels, AWS propose également MSK Serverless, une version sans gestion d’infrastructure. Avec MSK Serverless, il n’est plus nécessaire de configurer ou de dimensionner les clusters : AWS ajuste automatiquement la capacité en fonction de la charge de travail. Cette option convient particulièrement aux cas d’usage où la charge est variable ou imprévisible.
MSK peut être considéré comme une alternative à Amazon Kinesis pour les entreprises qui souhaitent bénéficier de la compatibilité native avec Apache Kafka, tout en profitant de la gestion simplifiée et des capacités de mise à l’échelle automatique fournies par AWS.
2. Fonctionnalités principales d’Amazon MSK
a. Gestion entièrement managée
Amazon MSK prend en charge l’ensemble des opérations nécessaires pour gérer des clusters Apache Kafka, ce qui élimine la complexité liée au provisionnement et à la gestion des serveurs. AWS s’occupe automatiquement de la création et de la gestion des nœuds Kafka (brokers) ainsi que des nœuds Zookeeper, qui sont des composants essentiels pour la coordination et la gestion des clusters Kafka.
En termes de haute disponibilité, MSK propose un déploiement multi-AZ (zones de disponibilité). Cette architecture garantit que même en cas de panne d’une zone de disponibilité, les données resteront accessibles et le service continuera de fonctionner sans interruption.
De plus, Amazon MSK assure une récupération automatique...
Validation des acquis : questions/réponses
Si l’état de vos connaissances sur ce chapitre vous semble suffisant, répondez aux questions ci-après.
1. Questions
1 Une entreprise veut moderniser son architecture en adoptant une approche serverless. Quels sont les principes fondamentaux du serverless et comment AWS Lambda s’intègre dans cette approche ?
2 Une entreprise observe que certaines parties de son application subissent des ralentissements en raison de pics de trafic soudains. Certaines opérations, comme le traitement des commandes ou la génération de rapports, prennent plus de temps et ralentissent l’expérience utilisateur. L’entreprise cherche une solution pour découpler les services et assurer un traitement fluide des tâches sans impacter les performances du frontend. Quelle approche pourrait-elle mettre en place pour gérer efficacement ces charges de travail tout en améliorant la résilience de son architecture ?
3 Un développeur souhaite exécuter une fonction Lambda à la réception d’un événement S3, tout en garantissant une exécution sécurisée et performante. Quelles sont les meilleures pratiques pour configurer le déclenchement et la gestion des permissions IAM ?
4 Une entreprise observe un temps de latence élevé lors du premier appel à une fonction Lambda. Quelle fonctionnalité AWS pourrait être utilisée pour optimiser les temps de réponse et réduire la latence du cold start ?
5 Un développeur souhaite exposer une API REST avec Amazon API Gateway et Lambda. Comment assurer une authentification sécurisée sans stocker de credentials dans l’application ?
6 Une entreprise veut collecter et traiter en temps réel des logs provenant de milliers de capteurs IoT. Entre Kinesis Data Streams et Kinesis Firehose, quel service est le plus adapté et pourquoi ?
7 Une entreprise souhaite exécuter automatiquement du code en réponse à des événements sans gérer d’infrastructure. Elle recherche une solution qui s’adapte dynamiquement à la charge et qui optimise les coûts en facturant uniquement l’exécution réelle du code. Quelle architecture pourrait-elle...







