Slide 1

Slide 1 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. P A R I S , 3 A V R I L 2 0 2 4

Slide 2

Slide 2 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Modernisez votre architecture grâce au serverless et l'orienté événement Jerome Van Der Linden D O P 3 0 4 - F R Sr Solutions Architect Builder AWS Nicolas Benoist CTO Sézane

Slide 3

Slide 3 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Agenda • Que sont les architectures orientées événements ? • Patterns d’architectures orientées événements • Retour d’expérience Sézane • Architecture orientée événements avec des applications tierces • Personnalisation et transformation des événements • Conclusion

Slide 4

Slide 4 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Que sont les architectures orientées événements ?

Slide 5

Slide 5 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. L’architecture orienté événements (EDA) est un concept qui utilise des événements pour communiquer entre des applications découplées de manière asynchrone. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.

Slide 6

Slide 6 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Les éléments d’une architecture orienté événements Service Compte client Service Facturation Service clients Bus de messages compte créé compte créé compte créé • Producteur d’événements • Consommateur d’événements • Bus de messages • Evénements compte supprimé compte supprimé

Slide 7

Slide 7 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Événements • Un événement correspond à une action passée • Différent d’une « commande » ou « requête » (futur) • Il existe différentes catégories d’événements • Métier • Opérationnel • AWS • Les événements sont au format JSON et contiennent • Des metadatas (date, source, …) • La donnée elle-même { "version": "0", "id": "6a7e8feb-b491-4cf7", "detail-type": "order-submission", "source": "checkout", "account": "123456789012", "time": "2023-10-29T12:10:21Z", "region": "eu-central-1", "resources": ["arn:your-event-bus"], "detail": { "order_number": "123-456x", "total": 29.99, "currency": "EUR", "customer_id": "cu-101", "items": [] } }

Slide 8

Slide 8 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Producteur d’événements Service Compte client Service Facturation Service clients Bus de messages compte créé compte créé compte créé • Agnostique des consommateurs • Ajoute l’identité du producteur • Respecte un schéma/contrat • Identifiant de l’événement unique • Ajoute seulement les données requises compte supprimé compte supprimé

Slide 9

Slide 9 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Consommateur d’événements Service Compte client Service Facturation Service clients Bus de messages compte créé compte créé compte créé • Idempotence • Ordre non garanti • Stocke les événements et les traite compte supprimé compte supprimé

Slide 10

Slide 10 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Bus de messages Service Compte client Service Facturation Service clients Bus de messages compte créé compte créé compte créé • Prend en charge plusieurs producteurs et consommateurs • Dirige les événements vers différentes cibles • Transformation des événements • Référentiel et recherche de schémas compte supprimé compte supprimé

Slide 11

Slide 11 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Patterns d’architectures orientées événements

Slide 12

Slide 12 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Service traitement commandes B C A Traitement au même débit Que se passe-t-il si le service échoue ? Le service en sait trop sur le consommateur ? Cas d’usage – Intégration entre des services

Slide 13

Slide 13 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Service traitement commandes B C A File Traitement à un débit désiré Défaillances isolées Service decouplé Pattern – Intégration en utilisant une file d’attente

Slide 14

Slide 14 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Communication asynchrone avec SQS Producteur Consommateur M1 Consommateur M2 M1 Ack M2 Ack Ack • File de messages • Couplage faible • Persistence des messages • Le consommateur pull les messages • Le consommateur contrôle la vitesse de consommation • Possibilité d’augmenter le nombre de consommateurs File Amazon SQS

Slide 15

Slide 15 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Service facturation Service traitement commandes Service de livraison Le service en sait trop sur le consommateur ? Echecs ? Duplication d’effort Cas d’usage – Notification entre services

Slide 16

Slide 16 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Service facturation Service traitement commandes Service de livraison Bus d’événements CommandeCréée Pattern – Notification d’événements

Slide 17

Slide 17 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Producteur Consommateur M1 Consommateur M2 Bleu Violet Bus M1 M2 Ack Bleu Violet Bleu? Violet? • Bus d’événements • Niveau élevé de découplage • Filtrage / Routage des événements • Publication à des nombreux consommateurs (« fan-out ») • Diffuser des événements (même sans consommateur) Publish/subscribe N O T I F I E R L E S C O N S O M M A T E U R S E N A V A L Amazon EventBridge

Slide 18

Slide 18 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Chorégraphie Produits Fidélité Promotions Produit enregistré App Garantie produit Client Amazon EventBridge Produit enregistré Produit enregistré Produit enregistré Produit enregistré Promotion accordée Code réduction généré Amazon SES Application tierce Entrepot Enregistrement EventBridge rule Appel API

Slide 19

Slide 19 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Retour d’expérience Sézane

Slide 20

Slide 20 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Présentation de Sézane Fondée en 2013 Octobre-Editions pour les hommes Nombreux partenaires logistiques Livre dans 70 pays Programme solidaire DEMAIN Equipe Technology intégrée

Slide 21

Slide 21 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Organisation Sézane Équipe de 30 personnes Architecture Macro-services Développement custom E-commerce 5 Millions de visiteurs / mois Bascule sur AWS en 2020

Slide 22

Slide 22 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Cas d’usage 100 000 fichiers échangés / jour Envoi toutes les minutes par Batch 20 partenaires 5 protocoles différents Exemple : 1 commande passée = 1 ligne d’un CSV Partenaires logistiques (FTP, sFTP, imap)

Slide 23

Slide 23 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Problématiques rencontrées Equipe Sézane • Recherche fastidieuse dans les FTP des partenaires • Analyse impossible Infra Sézane • Aucune notification d’un nouveau fichier • Complexité à marquer un fichier comme traité • Gestion par l’équipe de devs des protocoles et des accès Partenaires • Complexité dans les échanges de fichier • Echange asynchrone • Sécurité non maitrisée

Slide 24

Slide 24 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Solution retenue Amazon ECS Amazon S3 Amazon Athena “FTP Factory“ Amazon lambda Services métiers Amazon Redshift Data Partenaires logistiques (FTP, sFTP, imap) Amazon Redshift Clients Aucun changement côté partenaires

Slide 25

Slide 25 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Zoom sur la FTP Factory Serveur FTP/SFTP/FTPS Amazon S3 Out Amazon EventBridge Scheduler Amazon S3 In AWS Lambda AWS Lambda FTP In AWS Lambda FTP Out Amazon SQS Amazon SQS Amazon DynamoDB Sézane Backend Partenaire Flux Entrée Flux Sortie Amazon Athena 1 3 2 1 2 3

Slide 26

Slide 26 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Gains apportés Equipe Sézane • Recherche instantanée sur > 50To de fichiers • Traçabilité des commandes Infra Sézane • Passage au serverless • Création d’évenements à chaque nouveau fichier • Utilisation de DynamoDB • Sauvegarde dans Secret Manager des credentials Partenaires • Aucun changement chez les partenaires • Accès contrôlés et limités

Slide 27

Slide 27 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Architecture orientée événements avec des applications tierces

Slide 28

Slide 28 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Communication avec des applications tierces AWS Cloud SaaS … Applications Applications ? Webhook Autres On Premise

Slide 29

Slide 29 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Communication asynchrone avec SQS AWS Cloud On Premise SaaS … Applications Applications Webhook Autres File SQS + SDK AWS Amazon Simple Queue Service (Amazon SQS) // Create SQS Client String queueUrl = "QUEUE_URL"; SqsClient sqsClient = SqsClient.builder() .region(Region.EU_WEST_3) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .build(); // Receive messages ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder() .queueUrl(queueUrl) .waitTimeSeconds(10) .maxNumberOfMessages(10) .visibilityTimeout(10) .attributeNames(QueueAttributeName.ALL) .build(); List messages = sqsClient.receiveMessage(receiveMessageRequest) .messages(); // Delete messages after receipt for (Message message : messages) { DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder() .queueUrl(queueUrl) .receiptHandle(message.receiptHandle()) .build(); sqsClient.deleteMessage(deleteMessageRequest); } messages

Slide 30

Slide 30 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Notifications avec EventBridge & API Destinations AWS Cloud SaaS … Applications Webhook Autres Amazon EventBridge Event Bus Règle Règle On Premise Applications Règle API events events events API Destinations • Points de terminaison HTTP configurable en tant que cible d’une règle EventBridge • Intégration simplifiée entre AWS et des applications tierces grâce à des API REST (GET/PUT/POST/DELETE) • Intégration native entre AWS et des applications SaaS partenaires cibles

Slide 31

Slide 31 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. EventBridge – API Destinations Événement Filtre Connexion Règle Cible (API Destination)

Slide 32

Slide 32 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. EventBridge – API Destinations Événement Filtre Connexion Règle Cible (API Destination) ****** Basic Auth Utilisateur / mot de pass Oauth Client ID Client secret Auth endpoint API Key Clé / valeur

Slide 33

Slide 33 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. EventBridge – API Destinations Événement Filtre Connexion Point de terminaison HTTP Règle Cible (API Destination) Destination personnalisée URL Méthode HTTP Limite d’appels Destination partenaire Intégration native avec 12 partenaires

Slide 34

Slide 34 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. EventBridge – API Destinations Événement Filtre Connexion Point de terminaison HTTP Règle Cible (API Destination) Entêtes HTTP + paramètres de requêtes Rejeu des événements (24h / 185 tentatives) + DLQ

Slide 35

Slide 35 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Personnalisation et transformation des événements

Slide 36

Slide 36 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Personnalisation / transformation des événements { "version": "0", "id": "6a7e8feb-b491-4cf7", "detail-type": "order-submission", "source": "checkout", "account": "123456789012", "time": "2023-10-29T12:10:21Z", "region": "eu-central-1", "resources": ["arn:your-event-bus"], "detail": { "metadata": { "version": "1", "domain": "retail", "subdomain": "checkout", "service": "order-submission", "category": "domain-event", "type": "data" }, "data": { "order_number": "123-456x", "total": 29.99, "currency": "EUR", "customer_id": "cu-101", "items": [] } } } Événement EventBridge { "datetime": "2023-10-29T12:10:21Z", "source": "retail/checkout/order-submission", "orderId": "123-456x", "amount": 29.99, "currency": "EUR", "customerId": "cu-101", ”products": [] } ? Données requises par le service tiers

Slide 37

Slide 37 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. EventBridge – Transformateur d’entrée Événement Filtre Connexion Point de terminaison HTTP Règle Cible (API Destination) Transformateur Modèle + Chemin d’entrée

Slide 38

Slide 38 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. EventBridge – Transformateur d’entrée { "datetime": "$.time", "domain": "$.detail.metadata.domain", "subdomain": "$.detail.metadata.subdomain", "service": "$.detail.metadata.service", "orderId": "$.detail.data.order_number", "amount": "$.detail.data.total", "currency": "$.detail.data.currency", "customerId": "$.detail.data.customer_id", "products": "$.detail.data.items" } Chemin d'entrée { "version": "0", "id": "6a7e8feb-b491-4cf7", "detail-type": "order-submission", "source": "checkout", "account": "123456789012", "time": "2023-10-29T12:10:21Z", "region": "eu-central-1", "resources": ["arn:your-event-bus"], "detail": { "metadata": { "version": "1", "domain": "retail", "subdomain": "checkout", "service": "order-submission", "category": "domain-event", "type": "data" }, "data": { "order_number": "123-456x", "total": 29.99, "currency": "EUR", "customer_id": "cu-101", "items": [] } } }

Slide 39

Slide 39 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. EventBridge – Transformateur d’entrée { "datetime": "$.time", "domain": "$.detail.metadata.domain", "subdomain": "$.detail.metadata.subdomain", "service": "$.detail.metadata.service", "orderId": "$.detail.data.order_number", "amount": "$.detail.data.total", "currency": "$.detail.data.currency", "customerId": "$.detail.data.customer_id", "products": "$.detail.data.items" } Chemin d'entrée { "datetime": "", "source": "//", "orderId": "", "amount": , "currency": "", "customerId": "", "products": } Modèle

Slide 40

Slide 40 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. EventBridge – Transformateur d’entrée { "datetime": "2023-10-29T12:10:21Z", "source": "retail/checkout/order-submission", "orderId": "123-456x", "amount": 29.99, "currency": "EUR", "customerId": "cu-101", ”products": [] } { "datetime": "$.time", "domain": "$.detail.metadata.domain", "subdomain": "$.detail.metadata.subdomain", "service": "$.detail.metadata.service", "orderId": "$.detail.data.order_number", "amount": "$.detail.data.total", "currency": "$.detail.data.currency", "customerId": "$.detail.data.customer_id", "products": "$.detail.data.items" } Chemin d'entrée { "datetime": "", "source": "//", "orderId": "", "amount": , "currency": "", "customerId": "", "products": } Modèle

Slide 41

Slide 41 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Enrichissement des événements { "datetime": "2023-10-29T12:10:21Z", "source": "retail/checkout/order-submission", "orderId": "123-456x", "amount": 29.99, "currency": "EUR", "customerId": "cu-101", ”products": [ { "productid": "pr-324", "price": 29.99, ”quantity": 1 } ] } { "datetime": "2023-10-29T12:10:21Z", "source": "retail/checkout/order-submission", "orderId": "123-456x", "amount": 29.99, "currency": "EUR", "customer": { "customerId": "cu-101”, "firstName": "Bob", ”lastName": "Marley", "billingAddress": { ... }, "shippingAddress": { ... } }, ”products": [ { "productid": "pr-324", "price": 29.99, "quantity": 1, "referenceCode": "px43-4567-xdej", "name": "Waterproof Bluetooth speaker" } ] } ?

Slide 42

Slide 42 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Enrichissement des événements - EventBridge Pipes Amazon SQS Amazon Kinesis Data Streams Amazon DynamoDB Amazon MSK Amazon MQ Source Événements provenant d’un service AWS supporté Amazon EventBridge Pipes Filtre, enrichi, et transforme les événements Filter Enrichissement et transformation Restructure, modifie ou ajoute des données à l’événement entrant Cible Envoi de l’événement à un des 15 services AWS supportés Amazon EventBridge + API Destination Amazon Kinesis Data Streams AWS Step Functions Amazon API Gateway Amazon SQS Amazon API Gateway AWS Step Functions AWS Lambda Amazon EventBridge API destinations

Slide 43

Slide 43 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Conclusion

Slide 44

Slide 44 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Ressources s12d.com/eda Serverlessland

Slide 45

Slide 45 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Repousser les limites de la création skillbuilder.aws Profitez de votre essai gratuit de 7 jours d’AWS Skill Builder

Slide 46

Slide 46 text

© 2024, Amazon Web Services, Inc. or its affiliates. All rights reserved. Merci ! Merci de répondre à l’enquête sur la session dans l’application mobile Jerome Van Der Linden linkedin.com/in/jeromevdl Nicolas Benoist