Skip to content
Snippets Groups Projects
Verified Commit 90ddf831 authored by Julien Wittouck's avatar Julien Wittouck
Browse files

:sparkles: : add EDA course

parent f20ede1e
No related branches found
No related tags found
No related merge requests found
images/eda.png

53.4 KiB

...@@ -333,7 +333,7 @@ ...@@ -333,7 +333,7 @@
<div class="card h-100"> <div class="card h-100">
<img <img
class="card-img-top" class="card-img-top"
src="images/placeholder.png" src="images/eda.png"
alt="EDA & Event-Sourcing" alt="EDA & Event-Sourcing"
/> />
<div class="card-body"> <div class="card-body">
...@@ -341,7 +341,17 @@ ...@@ -341,7 +341,17 @@
EDA & Event-Sourcing EDA & Event-Sourcing
<small class="text-muted">wed. 4 dec.</small> <small class="text-muted">wed. 4 dec.</small>
</h5> </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> </div>
</div> </div>
......
<!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
![](./images/sync-async.png)
---
## ✉️ 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
![](./images/pub-sub.png)
---
## 📬 Brokers de message
![](./images/kafka.png) <!-- .element: class="logo" -->
![](./images/rabbitmq.png) <!-- .element: class="logo" -->
![](./images/pulsar.png) <!-- .element: class="logo" -->
---
## 💣 Résilience et Tolérance aux Pannes
* 💾 Persistence des messages
* ↔️ Scalabilité horizontale
![](./images/kafka-architecture.png)
---
### 🎉 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>
## 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
w11-eda/images/kafka-architecture.png

162 KiB

w11-eda/images/kafka.png

88.3 KiB

w11-eda/images/pub-sub.png

148 KiB

w11-eda/images/pulsar.png

8.69 KiB

w11-eda/images/rabbitmq.png

3.71 KiB

w11-eda/images/sync-async.png

151 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment