diff --git a/images/eda.png b/images/eda.png new file mode 100644 index 0000000000000000000000000000000000000000..e7c9468037fa047ffc4ec3744d0d24275de6c79e Binary files /dev/null and b/images/eda.png differ diff --git a/index.html b/index.html index 6600c90e712b750fd22fe02601274fc67c5bfc1a..fbbdaee4f5923c148acd2d4a39581709181f650f 100644 --- a/index.html +++ b/index.html @@ -333,7 +333,7 @@ <div class="card h-100"> <img class="card-img-top" - src="images/placeholder.png" + src="images/eda.png" alt="EDA & Event-Sourcing" /> <div class="card-body"> @@ -341,7 +341,17 @@ EDA & Event-Sourcing <small class="text-muted">wed. 4 dec.</small> </h5> - <p class="card-text">Tout est un évènement.</p> + <p class="card-text">Un non-évènement.</p> + </div> + <div class="card-footer"> + <div class="btn-group" role="group"> + <a href="w11-eda/11-eda.html" class="btn btn-primary">Cours</a> + <a href="w11-eda/11-eda.pdf" class="btn btn-secondary"><i class="bi bi-file-earmark-pdf-fill"></i></a> + </div> + <div class="btn-group" role="group"> + <a href="w11-eda/11-tp-eda.html" class="btn btn-primary">TP</a> + <a href="w11-eda/11-tp-eda.pdf" class="btn btn-secondary"><i class="bi bi-file-earmark-pdf-fill"></i></a> + </div> </div> </div> </div> diff --git a/w11-eda/11-eda.html b/w11-eda/11-eda.html new file mode 100644 index 0000000000000000000000000000000000000000..8ff6fdf0b8c29b27b2b89ff4048eef1db1dd83d1 --- /dev/null +++ b/w11-eda/11-eda.html @@ -0,0 +1,160 @@ +<!doctype html> +<html lang="fr"> + +<head> + <meta charset="utf-8"> + + <title>ALOM - EDA - Architectures orientées évènement</title> + + <meta name="description" content="ALOM - EDA - Architectures orientées évènement"> + <meta name="author" content="Julien WITTOUCK <julien@codeka.io>"> + + <meta name="apple-mobile-web-app-capable" content="yes"/> + <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/> + + <meta name="viewport" + content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui"> + + <link rel="stylesheet" href="../reveal/dist/reveal.css"> + <link rel="stylesheet" href="../reveal/dist/theme/white.css" id="theme"> + + <link rel="stylesheet" href="../css/miage-lille.css"/> + + <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" + integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous"> + + <style> + p img.logo { + width: 30%; + vertical-align: middle; + } + </style> +</head> + +<body> + +<div class="reveal"> + + <div class="slides"> + <section> + <h1>ALOM</h1> + <h2>📬 EDA</h2> + <em>Architectures orientées évènement</em> + </section> + + + <section data-markdown> + <textarea data-template> + ## Architectures orientées évènement + Communications asynchrones via des échanges de message (évènements) + + 🎯 Créer des architectures flexibles, évolutives, réactives + +  + + --- + ## ✉️ Un évènement + + Représente un changement d'état, une occurence dans un système + + _Commande passée_, _Paiement effectué_, _Capteur de passage déclenché_, _Combat terminé_ + + Données souvent structurées : + + * un en-tête (métadonnées, date d'émission, publisher) + * un payload (contenu de l'évènement) + + --- + + ## Éléments de l'architecture + + * 📤 publisher / producer : émet les évènements + * 📥 subscriber / consumer : reçoit et traite les évènements + * 🚚 broker / canaux : transportent les évènements + +  + + --- + + ## 📬 Brokers de message + +  <!-- .element: class="logo" --> +  <!-- .element: class="logo" --> +  <!-- .element: class="logo" --> + + --- + + ## 💣 Résilience et Tolérance aux Pannes + + * 💾 Persistence des messages + * ↔️ Scalabilité horizontale + +  + + --- + + ### 🎉 Avantages + + * découplage + * scalabilité + * flexibilité + * réactivité et temps réel + * résilience + + --- + + ### 😈 Inconvénients + + * complexité de l'orchestration des évènements + * debugging + * cohérence des données + + --- + + ### 🧭 patterns et cas d'usage courants + + * 🛒 e-commerce : gestion des commandes, mises à jour de stock + * 🌡️ IoT : traitement de données de capteurs + * 💸 Finance : trading, détection de fraude + * 🍡 Micro-services : communication asynchrones + * 🗄️ CDC : Change-Data-Capture : capture des changement d'une base de données + + </textarea> + </section> + + + <section> + <h2>TP</h2> + <img src="../images/leonidas.png"/> + <p> + <a href="../w11-eda/11-tp-eda.html">EDA avec Pulsar</a> + </p> + </section> + + </div> + +</div> + +<script src="../reveal/dist/reveal.js"></script> +<script src="../reveal/plugin/markdown/markdown.js"></script> +<link rel="stylesheet" href="../reveal/plugin/highlight/zenburn.css"> +<script src="../reveal/plugin/highlight/highlight.js"></script> +<script> + // More info about initialization & config: + // - https://revealjs.com/initialization/ + // - https://revealjs.com/config/ + Reveal.initialize({ + hash: true, + + // Learn about plugins: https://revealjs.com/plugins/ + plugins: [RevealMarkdown, RevealHighlight], + markdown: { + smartypants: true + } + }); +</script> + +<aside class="miage_aside_logo"></aside> + +</body> +</html> diff --git a/w11-eda/PULSAR.md b/w11-eda/PULSAR.md new file mode 100644 index 0000000000000000000000000000000000000000..1612abaeb52fce931175dac7d221ecdc833e4157 --- /dev/null +++ b/w11-eda/PULSAR.md @@ -0,0 +1,27 @@ +## pulsarctl + +Install : https://github.com/streamnative/pulsarctl/releases/tag/v4.0.0.7 + +export clever cloud envs with following : + +```bash +terraform output -raw dot_envrc_pulsar > .pulsar_envrc +``` + +### List topics + +```bash +pulsarctl --admin-service-url $ADDON_PULSAR_HTTP_URL \ + --auth-params $ADDON_PULSAR_TOKEN \ + --auth-plugin org.apache.pulsar.client.impl.auth.AuthenticationToken \ + topics list $ADDON_PULSAR_TENANT/$ADDON_PULSAR_NAMESPACE +``` + +### Delete topic + +```bash +pulsarctl --admin-service-url $ADDON_PULSAR_HTTP_URL \ + --auth-params $ADDON_PULSAR_TOKEN \ + --auth-plugin org.apache.pulsar.client.impl.auth.AuthenticationToken \ + topics delete +``` \ No newline at end of file diff --git a/w11-eda/images/kafka-architecture.png b/w11-eda/images/kafka-architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6f1577b7a25c28fbc396963dc3567c366105e7 Binary files /dev/null and b/w11-eda/images/kafka-architecture.png differ diff --git a/w11-eda/images/kafka.png b/w11-eda/images/kafka.png new file mode 100644 index 0000000000000000000000000000000000000000..072d8193dc00b2d0bd17693a8848a242c4377e25 Binary files /dev/null and b/w11-eda/images/kafka.png differ diff --git a/w11-eda/images/pub-sub.png b/w11-eda/images/pub-sub.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1b9ded91fc115e226b568183961db0884ca816 Binary files /dev/null and b/w11-eda/images/pub-sub.png differ diff --git a/w11-eda/images/pulsar.png b/w11-eda/images/pulsar.png new file mode 100644 index 0000000000000000000000000000000000000000..7c04349434f9de61d2bb5f58ce1a2785a62eb168 Binary files /dev/null and b/w11-eda/images/pulsar.png differ diff --git a/w11-eda/images/rabbitmq.png b/w11-eda/images/rabbitmq.png new file mode 100644 index 0000000000000000000000000000000000000000..1213ba950613fa8469b00643f10c883e24d39827 Binary files /dev/null and b/w11-eda/images/rabbitmq.png differ diff --git a/w11-eda/images/sync-async.png b/w11-eda/images/sync-async.png new file mode 100644 index 0000000000000000000000000000000000000000..c3aee5458cb765d5abed6273ce4647c4079c6100 Binary files /dev/null and b/w11-eda/images/sync-async.png differ