SlideShare une entreprise Scribd logo
1  sur  41
z
Migration d’une Architecture
Microservice vers une
Architecture Event-Driven
Microservice avec
Kafka
1
Daniel FOUOMENE
daniel.fouomene@afrinnov.xyz
https://github.com/fouomene/poc-jcdecaux-spring-kafka-websocket
https://github.com/fouomene/poc-microservice-edge-spring-cloud
https://github.com/fouomene/poc-event-driven-microservice-edge-kafka-spring-cloud
z
Plan
I. Event-Driven Architecture
1. Introduction
2. Event Broker : Apache Kafka
3. Mise en œuvre : POC App JCDecaux Station avec Spring Kafka, Spring Websocket
II. Microservice Architecture
1. Introduction
2. Edge Microservice : Spring Cloud
3. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud
III. Event-Driven Microservice Architecture
1. Introduction
2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka
IV. Références
2
z
I. Event-Driven Architecture
1. Introduction
3
z
I. Event-Driven Architecture
1. Introduction
 Event-Driven Architecture : Architecture Orientée Evénements
 Un modèle d'architecture logicielle utilisé pour la conception d'applications.
 La structure centrale de la solution repose
 sur la capture, la communication,
 le traitement et la persistance des événements (Events).
 Souvent appelée communication « Asynchrone »
 Cela signifie que le producteur (Producer) et le consommateur (Consumer) de
l’événement n'ont pas besoin d'attendre l'autre pour passer à la tâche suivante.
 Lorsqu'un événement a été détecté, il est transmis du producteur d'événements au consommateur via
des canaux d'événement ou Bus d’événement (Event Broker).
4
z
I. Event-Driven Architecture
1. Introduction
 Faiblement couplée
 Les producteurs d'événements ignorent quels consommateurs d'événements écoutent un
événement et que chaque événement ignore les conséquences de son apparition.
 Très scalable
 Facilité à multiplier indépendamment les instances des producteurs et consommateurs,
en fonction de leur charge de travail.
 L’exposition des événements en temps réel
 Facilité d’abonner de nouveaux consommateurs aux événements produits sans impact sur
les services en place, en particulier le service producteur de l’événement.
 Une Approche et non un langage
 Les applications orientées événements peuvent être créées à l'aide de n'importe quel
langage de programmation.
5
z
I. Event-Driven Architecture
1. Introduction
 Les challenges principaux à relever dans la mise en place d’une architecture event-
driven sont les suivants :
 La cohérence entre les services n’est pas immédiate, on parle de
cohérence à terme.
 Il faudra intégrer cet aspect dans la conception des traitements et veiller à ce que le délai de
synchronisation ne soit pas trop important, en s’assurant par exemple que la consommation
des événements soit plus rapide que leur production.
 S’assurer que tous les événements soient acheminés et traités,
 sans quoi deux services pourraient se trouver définitivement désynchronisés pour certaines
entités
 Être vigilant sur le paramétrage du bus d’événements ainsi que
des applicatifs producteurs et consommateurs d’événements.
6
z
I. Event-Driven Architecture
2. Event Broker : Apache Kafka
7
CONNECTOR
STREAMS
z
I. Event-Driven Architecture
2. Event Broker : Apache Kafka
 Kafka comme bus d’événement (Event Broker)
 Une plateforme distribuée de diffusion (Streaming) de données
en continu, capable de publier, stocker, traiter et souscrire à
des flux d'enregistrement en temps réel.
 Initialement développée par LinkedIn comme système interne
pour la gestion de ses 1 400 milliards de messages
quotidiens, c'est aujourd'hui une solution Open Source
Apache.
8
z
I. Event-Driven Architecture
2. Event Broker : Apache Kafka
9
 Kafka permet :
 Garantit le découplage entre producteurs de données et
consommateurs
 Supporte des consommateurs multiples
 Permet une forte scalabilité horizontale via une Architecture
distribuée
 Met en œuvre la persistance des données
 Les événements qui sont publiés dans Kafka ne sont pas
supprimés dès leur consommation, comme dans les solutions
orientées messaging (ex : RabbitMQ).
z
I. Event-Driven Architecture
2. Event Broker : Apache Kafka
10
z
I. Event-Driven Architecture
2. Event Broker : Apache Kafka
11
Config Kafka
“default.replication.factor=2” // nombre de
réplications des partitions dans les brokers
“min.insync.replicas=1” // le nombre minimal de
réplicas à maintenir en synchronisation à 2 tout
juste après écriture sur la partition leader
config Producer
“request.required.acks=all” pour que le broker
qui contient la partition leader n’acquitte (ack)
l’écriture qu’après avoir procédé à la réplication.
Pour que la réplication soit effective à tout moment
et éviter la perte de message.
Config Consumer
“enable.auto.commit=false”//
désactiver l’autocommit et réaliser un
commit explicite en fin de traitement
pour garantir que chaque événement qui
a fait l’objet d’un commit a bien été pris
en compte par le consommateur.
z
I. Event-Driven Architecture
2. Event Broker : Apache Kafka
12
z
 Data Streaming, le terrain de prédilection de Kafka
13
I. Event-Driven Architecture
2. Event Broker : Apache Kafka
 Dans cette étude(2017), si 50% des interrogés mentionnent « le messaging »
parmi les tâches confiées à Kafka, 66% évoquent le « streaming process ». Parmi
les cas d’usages, se détachent les data pipelines (81% de mentions), les
Microservices (50%), ou encore la supervision temps réel (43%).
z
I. Event-Driven Architecture
3. Mise en œuvre : POC App JCDecaux Station avec
Spring Kafka, Spring Websocket
14
JCDecaux Producer
DASHBOARD
Client Websocket UI
@MessageMapping
(/jcdecaux)
StompBroker
Send destination
/app/jcdecaux
Send destination
/topic/stations
Recieve
Message
/topic/stations
Request
Channel
Response
Channel
Broker
Channel
JCDecaux Consumer
DASHBOARD
Client Websocket UI
@MessageMapping
(/jcdecaux)
StompBroker
Send destination
/app/jcdecaux
Send destination
/topic/stations
Recieve
Message
/topic/stations
Request
Channel
Response
Channel
Broker
Channel
Request
Channel
station station
Observation en temps réel des locations des vélos à chaque station JCDecaux
dans le monde.
https://github.com/fouomene/poc-jcdecaux-spring-kafka-websocket
Broker
Channel
API
z
I. Event-Driven Architecture
3. Mise en œuvre : POC App JCDecaux Station avec
Spring Kafka, Spring Websocket
15
https://github.com/fouomene/poc-jcdecaux-spring-kafka-websocket
z
I. Event-Driven Architecture
3. Mise en œuvre : POC App JCDecaux Station avec
Spring Kafka, Spring Websocket
16
Kafka Manager https://github.com/yahoo/CMAK
z
II. Microservice Architecture
1. Introduction
17
 Architecture Microservice
 « Le style architectural des microservices est une approche permettant de
développer une application unique sous la forme d’une suite logicielle
intégrant plusieurs services. Ces services sont construits autour des
capacités de l’entreprise et peuvent être déployés de façon indépendante »
Martin Fowler
 Microservices sont une méthode développement logiciel utilisée pour
concevoir une application comme un ensemble de services modulaires.
Chaque module répond à un objectif métier spécifique et communique avec
les autres modules.
z
II. Microservice Architecture
1. Introduction
18
microservice C
code App
< / >
API
microservice B
code App
< / >
API
microservice A
code App
< / >
API microservice D
code App
< / >
API
Client
Communication
client to service
service to service
Database
Database
Database
Database
z
II. Microservice Architecture
1. Introduction
19
 Réduction du temps de développement
 Grâce à un développement distribué, plusieurs microservices peuvent être travaillés et
développés simultanément.
 Évolutivité accrue
 Avec les microservices et leur indépendance en termes de développement et de déploiement.
Cela permet de faire évoluer l’application sereinement pour répondre à de nouveaux besoins
et de nouvelles demandes sans entraver le fonctionnement du système.
 Réduction des pannes
 Les microservices étant indépendants, lorsqu’un élément tombe en panne ou rencontre un
problème, l’ensemble de l’application ne cesse pas de fonctionner contrairement aux applications
monolithiques. Il est également plus facile d’identifier et de résoudre une panne dans ce type
d’eco-système.
z
II. Microservice Architecture
1. Introduction
20
 L’adaptabilité de chaque microservice aux outils de travail
 L’indépendance des composants offre la possibilité de paramétrer les microservices avec
différents langages de programmation. Ainsi, les outils opérationnels utilisés par l’entreprise
peuvent être rendus compatibles avec la solution globale.
 La flexibilité par rapport au cloud
 Une entreprise qui utilise l’architecture en microservices peut réduire ou augmenter son usage
du cloud en fonction de la charge de l’application. L’organisation est ainsi beaucoup plus flexible.
 Le plus important dans l’implémentation des microservices, c’est de faire simple.
 Il faut déléguer le maximum d’exigences non fonctionnelles à l’infrastructure logicielle
(conteneurs, Services Mesh, etc…) pour réduire les risques futurs de dettes techniques, et
garantir un fonctionnement homogène des services.
 Pour cela, on se doit de respecter les règles des 12 factors (https://12factor.net/fr/ ).
z
II. Microservice Architecture
2. Edge Microservice : Spring Cloud
21
 Spring Cloud fournit des fonctionnalités pour les cas d'utilisation typiques
tels que l'enregistrement et la découverte de services, le routage, l'équilibrage
de charge et les circuit-breakers.
z
II. Microservice Architecture
2. Edge Microservice : Spring Cloud
22
 Spring Cloud Bootstrap (e.g. Bootstrap context and @RefreshScope)
 Spring Cloud Config : Se positionne comme serveur de distribution des fichiers de
configuration.
 Config Server
 Config Client
 Spring Cloud Netflix
 Discovery : Permet de découvrir les Microservice sur notre serveur. C’est aussi un outil clé
pour la gestion des Microservices.
 Eureka Server
 Eureka Client
 Load Balancer
 Ribbon (config et dépendance commenté) : Équilibrer les requêtes entre plusieurs
instances pour éviter une surcharge d’un serveur
 Circuit Breaker : Définit un ensemble de seuils qui, une fois dépassés, arrêteront
l'exécution d'un bloc de code.
 Hystrix : Une API pour la résilience d’applications.
z
II. Microservice Architecture
2. Edge Microservice : Spring Cloud
23
 Spring Cloud Routing
 Gateway : Le point d’entrée unique pour les API et Microservices.
 OpenFeign : Faire communiquer (synchrone) les microservices grâce à Feign.
 Spring Cloud Load Balancer : Équilibrer les requêtes entre plusieurs instances pour éviter
une surcharge d’un serveur
 Spring Cloud Observability
 Sleuth : Permet de donner des ID uniques à chaque requête, c'est
 Zipkin Client : permet exposer les traces vers Zipkin Server.
 Spring Boot Actuator : expose une API qui donne des informations sur le microservice
concerné, mais ne propose pas d'interface graphique.
 Zipkin Server : permet de tracer les requêtes de service en service uniquement si ces
services intègrent ses dépendances.
z
II. Microservice Architecture
3. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud
24
z
II. Microservice Architecture
3. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud
25
microservice
client UI
Instance
Port : 8080
API
microservice
produits
Instance
Port : 8001
API
microservice
produits
Instance
Port : 8011
API
microservice
commandes
Instance
Port : 8002
API
microservice
paiement
Instance
Port : 8003
API
Distributed tracing
Zipkin-Server
Instance
Port : 9411
Service Registry
Eureka-Server
Instance
Port : 8102
Service Routing
Gateway-Server
Instance
Port : 8004
Service Config
Config-Server
Instance
Port : 8101
Service Routing
Spring Load
Balancing
Communication
service to service
https://github.com/fouomene/poc-microservice-edge-spring-cloud
z
II. Microservice Architecture
3. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud
26
https://github.com/fouomene/poc-microservice-edge-spring-cloud
z
II. Microservice Architecture
3. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud
27
https://github.com/fouomene/poc-microservice-edge-spring-cloud
z
28
III. Event-Driven Microservice Architecture
1. Introduction
 De nombreux facteurs avantageux et déterminants caractéristiques de
l’architecture microservices se retrouvent dans une architecture orientée
événements, qui permettent toutes les deux de relever des défis similaires.
 Cependant, prenez une architecture microservices adoptant une approche
d’intégration demande/réponse synchrone traditionnelle ; ce type d’architecture
active un service atomique indépendant doté d’un cycle de vie indépendant et,
par conséquent et de manière générale, une équipe indépendante qui en est
responsable. Si ce service reposait une un flux d’intégration demande/réponse
avec un autre microservice (sans raison spécifique), alors le service ne serait pas
couplé de manière lâche et n’en serait pas véritablement indépendant. Vous ne
pourriez pas mettre à niveau/faire évoluer le service sans vous préoccuper du
service couplé.
z
29
III. Event-Driven Microservice Architecture
1. Introduction
 Il n’est pas indispensable de disposer d’une architecture orientée événements
pour surmonter ce problème, car un modèle asynchrone alternatif, comme une
file d’attente de messages, constituerait une solution efficace dans cette situation.
Cependant, cela démontre dans quelle mesure les caractéristiques d’une
architecture orientée événements et la diffusion d’événements peuvent interagir
de manière positive avec les microservices.
z
30
III. Event-Driven Microservice Architecture
1. Introduction
z
31
III. Event-Driven Microservice Architecture
1. Introduction
z
32
III. Event-Driven Microservice Architecture
1. Introduction
z
33
III. Event-Driven Microservice Architecture
1. Introduction
microservice C
code App
< / >
API
microservice B
code App
< / >
API
microservice A
code App
< / >
API microservice D
code App
< / >
API
Client
Communication
client to service
service to service
Database
Database
Database
Database
z
34
III. Event-Driven Microservice Architecture
1. Introduction
microservice C
code App
< / >
microservice B
code App
< / >
microservice A
code App
< / >
API
microservice D
code App
< / >
Client
Communication
client to service
service to broker
Database
Database
Database
Database
EVENT
API
EVENT
API
EVENT
API
EVENT
EVENT BROKER
z
35
microservice
client UI
Instance
Port : 8080
API
microservice
produits
Instance
Port : 8001
API
microservice
produits
Instance
Port : 8011
API
microservice
commandes
Instance
Port : 8002
API
microservice
paiement
Instance
Port : 8003
API
Distributed tracing
Zipkin-Server
Instance
Port : 9411
Service Registry
Eureka-Server
Instance
Port : 8102
Service Routing
Gateway-Server
Instance
Port : 8004
Service Config
Config-Server
Instance
Port : 8101
Service Routing
Spring Load
Balancing
Communication
service to service
https://github.com/fouomene/poc-microservice-edge-spring-cloud
III. Event-Driven Microservice Architecture
2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka
z
III. Event-Driven Microservice Architecture
2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka
36
microservice
client UI
Instance
Port : 8080
API
microservice
produits
Instance
Port : 8001
API
microservice
produits
Instance
Port : 8011
API
microservice
commandes
consumer
Instance
Port : 8002
microservice
paiement
producer
Instance
Port : 8003
Distributed tracing
Zipkin-Server
Instance
Port : 9411
Service Registry
Eureka-Server
Instance
Port : 8102
Service Routing
Gateway-Server
Instance
Port : 8004
Service Config
Config-Server
Instance
Port : 8101
Service Routing
Spring Load
Balancing
Communication
service to broker
API
EVENT
API
EVENT
https://github.com/fouomene/poc-event-driven-microservice-edge-kafka-spring-cloud
z
37
microservice
paiement
Instance
Port : 8003
API
database
Table : paiement
id idcommande montant
1 2 500
2 8 10000
3 5 20000
si le paiement est accepté
enregistrer paiement avec
idcommande = 5
return idpaiement = 3
requête pour paiement
de la commande
idcommande = 5
microservice
commandes
Instance
Port : 8003
API
database
Table : commande
id commandePaye quantite
2 false 2
5 true 10
8 false 30
9 false 1
mettre à jour le statut idcommande = 5
à commandePaye = true
2
enregistrer la commande
return idcommande = 5
requête création
commande
reponse commande crée
idcommande = 5
Client
1
3
4
5
6
7
requête pour mettre à jour
le statut de la commande
idcommande = 5
III. Event-Driven Microservice Architecture
2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka
z
38
microservice
paiement
Producer
Instance
Port : 8003
API
EVENT
database
Table : paiement
id idcommande montant
1 2 500
2 8 10000
3 5 20000
si le paiement est accepté
enregistrer paiement avec
idcommande = 5
return idpaiement = 3
requête pour paiement
de la commande
idcommande = 5
microservice
commandes
Consumer
Instance
Port : 8003
API
EVENT
database
Table : commande
id commandePaye quantite
2 false 2
5 true 10
8 false 30
9 false 1
mettre à jour le statut idcommande = 5
commandePaye = true
CommandeEvent
idcommande = 5
CommandeEvent
idcommande = 8
CommandeEvent
idcommande = 2
send
receive
topic : paiement
2
enregistrer la commande
return idcommande = 5
requête création
commande
reponse commande crée
idcommande = 5
Client
1
3
4
5
6
7
8
III. Event-Driven Microservice Architecture
2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka
z
II. Event-Driven Microservice Architecture
2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka
39
https://github.com/fouomene/poc-event-driven-microservice-edge-kafka-spring-cloud
z
II. Event-Driven Microservice Architecture
2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka
40
https://github.com/fouomene/poc-event-driven-microservice-edge-kafka-spring-cloud
z IV. Références
41
 https://github.com/fouomene/poc-jcdecaux-spring-kafka-websocket
 https://github.com/fouomene/poc-microservice-edge-spring-cloud
 https://github.com/fouomene/poc-event-driven-microservice-edge-kafka-spring-cloud
 https://kafka.apache.org
 https://spring.io/projects/spring-kafka#overview
 https://spring.io/guides/gs/messaging-stomp-websocket
 https://www.redhat.com/en/topics/integration/what-is-event-driven-architecture
 https://blog.ippon.fr/2021/06/29/comment-se-lancer-avec-kafka-partie-1
 https://nexworld.fr/kafka-et-architectures-fast-data
 https://www.confluent.io/2017-apache-kafka-report
 https://www.tibco.com/fr/reference-center/what-is-event-driven-architecture
 https://www.leanix.net/fr/wiki/vsm/architecture-microservices
 https://nexworld.fr/les-microservices-cest-quoi
 https://blog.octo.com/une-vision-sur-le-service-mesh-service-mesh-versus-librairies-
applicatives-lexemple-de-spring-cloud
 https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh
 https://12factor.net/fr/
 https://www.chakray.com/fr/architectures-orientees-evenements-panacee-autre-tendance-
consommateurs

Contenu connexe

Tendances

Event-Driven Microservices With NATS Streaming
Event-Driven Microservices With NATS StreamingEvent-Driven Microservices With NATS Streaming
Event-Driven Microservices With NATS StreamingShiju Varghese
 
Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Claus Ibsen
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services ArchitectureAraf Karsh Hamid
 
Building Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringBuilding Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringKenny Bastani
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioAraf Karsh Hamid
 
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and Linkerd
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and LinkerdService Mesh with Apache Kafka, Kubernetes, Envoy, Istio and Linkerd
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and LinkerdKai Wähner
 
Service Mesh - Observability
Service Mesh - ObservabilityService Mesh - Observability
Service Mesh - ObservabilityAraf Karsh Hamid
 
Kubernetes design principles, patterns and ecosystem
Kubernetes design principles, patterns and ecosystemKubernetes design principles, patterns and ecosystem
Kubernetes design principles, patterns and ecosystemSreenivas Makam
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaGuido Schmutz
 
Spring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformSpring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformVMware Tanzu
 
Microservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka EcosystemMicroservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka Ecosystemconfluent
 
Container orchestration overview
Container orchestration overviewContainer orchestration overview
Container orchestration overviewWyn B. Van Devanter
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache KafkaJeff Holoman
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesStéphane Di Cioccio
 
Quarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesQuarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesRed Hat Developers
 

Tendances (20)

Event-Driven Microservices With NATS Streaming
Event-Driven Microservices With NATS StreamingEvent-Driven Microservices With NATS Streaming
Event-Driven Microservices With NATS Streaming
 
Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...Best Practices for Middleware and Integration Architecture Modernization with...
Best Practices for Middleware and Integration Architecture Modernization with...
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
 
Building Cloud Native Architectures with Spring
Building Cloud Native Architectures with SpringBuilding Cloud Native Architectures with Spring
Building Cloud Native Architectures with Spring
 
Helm 3
Helm 3Helm 3
Helm 3
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Containers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes IstioContainers Docker Kind Kubernetes Istio
Containers Docker Kind Kubernetes Istio
 
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and Linkerd
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and LinkerdService Mesh with Apache Kafka, Kubernetes, Envoy, Istio and Linkerd
Service Mesh with Apache Kafka, Kubernetes, Envoy, Istio and Linkerd
 
Service Mesh - Observability
Service Mesh - ObservabilityService Mesh - Observability
Service Mesh - Observability
 
Kubernetes design principles, patterns and ecosystem
Kubernetes design principles, patterns and ecosystemKubernetes design principles, patterns and ecosystem
Kubernetes design principles, patterns and ecosystem
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 
Spring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise PlatformSpring Boot+Kafka: the New Enterprise Platform
Spring Boot+Kafka: the New Enterprise Platform
 
Microservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka EcosystemMicroservices in the Apache Kafka Ecosystem
Microservices in the Apache Kafka Ecosystem
 
Container orchestration overview
Container orchestration overviewContainer orchestration overview
Container orchestration overview
 
RabbitMQ & Kafka
RabbitMQ & KafkaRabbitMQ & Kafka
RabbitMQ & Kafka
 
Introduction to Apache Kafka
Introduction to Apache KafkaIntroduction to Apache Kafka
Introduction to Apache Kafka
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
 
Quarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesQuarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniques
 
Apache kafka
Apache kafkaApache kafka
Apache kafka
 

Similaire à Migration d'une Architecture Microservice vers une Architecture Event-Driven Microservice avec Kafka

Ppt 2 a jeanpierre-yle-cleach-hec-05022015_sent2hec
Ppt 2   a jeanpierre-yle-cleach-hec-05022015_sent2hecPpt 2   a jeanpierre-yle-cleach-hec-05022015_sent2hec
Ppt 2 a jeanpierre-yle-cleach-hec-05022015_sent2hecYves LE CLEACH
 
Réseau de capteurs sans fil
Réseau de capteurs sans fil  Réseau de capteurs sans fil
Réseau de capteurs sans fil Ghassen Chaieb
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetiteGab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetiteAZUG FR
 
Cloud computing
Cloud computingCloud computing
Cloud computingmourad50
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec dockergcatt
 
Microsoft dynamics crm online, intégration avec windows azure
Microsoft dynamics crm online, intégration avec windows azureMicrosoft dynamics crm online, intégration avec windows azure
Microsoft dynamics crm online, intégration avec windows azureMicrosoft Décideurs IT
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerThe Incredible Automation Day
 
WygDay 2010 - Applications Virtuelles
WygDay 2010 - Applications VirtuellesWygDay 2010 - Applications Virtuelles
WygDay 2010 - Applications VirtuellesWygwam
 
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...OCTO Technology
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Afterworks MS Noumea - Développer des applications pour le Cloud avec le Clou...
Afterworks MS Noumea - Développer des applications pour le Cloud avec le Clou...Afterworks MS Noumea - Développer des applications pour le Cloud avec le Clou...
Afterworks MS Noumea - Développer des applications pour le Cloud avec le Clou...Julien Chable
 
Integration Summit 16 - Hybrid Integration
Integration Summit 16 - Hybrid IntegrationIntegration Summit 16 - Hybrid Integration
Integration Summit 16 - Hybrid IntegrationCellenza
 
Plateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallPlateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallCloudOps2005
 
IBM Bluemix Paris Meetup #14 - Le Village by CA - 20160413 - Introduction Meetup
IBM Bluemix Paris Meetup #14 - Le Village by CA - 20160413 - Introduction MeetupIBM Bluemix Paris Meetup #14 - Le Village by CA - 20160413 - Introduction Meetup
IBM Bluemix Paris Meetup #14 - Le Village by CA - 20160413 - Introduction MeetupIBM France Lab
 

Similaire à Migration d'une Architecture Microservice vers une Architecture Event-Driven Microservice avec Kafka (20)

Ppt 2 a jeanpierre-yle-cleach-hec-05022015_sent2hec
Ppt 2   a jeanpierre-yle-cleach-hec-05022015_sent2hecPpt 2   a jeanpierre-yle-cleach-hec-05022015_sent2hec
Ppt 2 a jeanpierre-yle-cleach-hec-05022015_sent2hec
 
Réseau de capteurs sans fil
Réseau de capteurs sans fil  Réseau de capteurs sans fil
Réseau de capteurs sans fil
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetiteGab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
Gab17 lyon-rex build dev ops sur une infra iaas-paas multisite-by-matthieupetite
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
Microsoft dynamics crm online, intégration avec windows azure
Microsoft dynamics crm online, intégration avec windows azureMicrosoft dynamics crm online, intégration avec windows azure
Microsoft dynamics crm online, intégration avec windows azure
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
 
WygDay 2010 - Applications Virtuelles
WygDay 2010 - Applications VirtuellesWygDay 2010 - Applications Virtuelles
WygDay 2010 - Applications Virtuelles
 
livre-blanc-microservices.pdf
livre-blanc-microservices.pdflivre-blanc-microservices.pdf
livre-blanc-microservices.pdf
 
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...
La Duck Conf - "Microservices & Servicemesh : le retour des frameworks d'entr...
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Overview bluemix fr
Overview bluemix frOverview bluemix fr
Overview bluemix fr
 
Afterworks MS Noumea - Développer des applications pour le Cloud avec le Clou...
Afterworks MS Noumea - Développer des applications pour le Cloud avec le Clou...Afterworks MS Noumea - Développer des applications pour le Cloud avec le Clou...
Afterworks MS Noumea - Développer des applications pour le Cloud avec le Clou...
 
Integration Summit 16 - Hybrid Integration
Integration Summit 16 - Hybrid IntegrationIntegration Summit 16 - Hybrid Integration
Integration Summit 16 - Hybrid Integration
 
Plateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de MontréallPlateformes et infrastructure infonuagique natif de ville de Montréall
Plateformes et infrastructure infonuagique natif de ville de Montréall
 
HLayer / DevOps REX
HLayer / DevOps REXHLayer / DevOps REX
HLayer / DevOps REX
 
IBM Bluemix Paris Meetup #14 - Le Village by CA - 20160413 - Introduction Meetup
IBM Bluemix Paris Meetup #14 - Le Village by CA - 20160413 - Introduction MeetupIBM Bluemix Paris Meetup #14 - Le Village by CA - 20160413 - Introduction Meetup
IBM Bluemix Paris Meetup #14 - Le Village by CA - 20160413 - Introduction Meetup
 
Cloud computing
Cloud computingCloud computing
Cloud computing
 

Migration d'une Architecture Microservice vers une Architecture Event-Driven Microservice avec Kafka

  • 1. z Migration d’une Architecture Microservice vers une Architecture Event-Driven Microservice avec Kafka 1 Daniel FOUOMENE daniel.fouomene@afrinnov.xyz https://github.com/fouomene/poc-jcdecaux-spring-kafka-websocket https://github.com/fouomene/poc-microservice-edge-spring-cloud https://github.com/fouomene/poc-event-driven-microservice-edge-kafka-spring-cloud
  • 2. z Plan I. Event-Driven Architecture 1. Introduction 2. Event Broker : Apache Kafka 3. Mise en œuvre : POC App JCDecaux Station avec Spring Kafka, Spring Websocket II. Microservice Architecture 1. Introduction 2. Edge Microservice : Spring Cloud 3. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud III. Event-Driven Microservice Architecture 1. Introduction 2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka IV. Références 2
  • 4. z I. Event-Driven Architecture 1. Introduction  Event-Driven Architecture : Architecture Orientée Evénements  Un modèle d'architecture logicielle utilisé pour la conception d'applications.  La structure centrale de la solution repose  sur la capture, la communication,  le traitement et la persistance des événements (Events).  Souvent appelée communication « Asynchrone »  Cela signifie que le producteur (Producer) et le consommateur (Consumer) de l’événement n'ont pas besoin d'attendre l'autre pour passer à la tâche suivante.  Lorsqu'un événement a été détecté, il est transmis du producteur d'événements au consommateur via des canaux d'événement ou Bus d’événement (Event Broker). 4
  • 5. z I. Event-Driven Architecture 1. Introduction  Faiblement couplée  Les producteurs d'événements ignorent quels consommateurs d'événements écoutent un événement et que chaque événement ignore les conséquences de son apparition.  Très scalable  Facilité à multiplier indépendamment les instances des producteurs et consommateurs, en fonction de leur charge de travail.  L’exposition des événements en temps réel  Facilité d’abonner de nouveaux consommateurs aux événements produits sans impact sur les services en place, en particulier le service producteur de l’événement.  Une Approche et non un langage  Les applications orientées événements peuvent être créées à l'aide de n'importe quel langage de programmation. 5
  • 6. z I. Event-Driven Architecture 1. Introduction  Les challenges principaux à relever dans la mise en place d’une architecture event- driven sont les suivants :  La cohérence entre les services n’est pas immédiate, on parle de cohérence à terme.  Il faudra intégrer cet aspect dans la conception des traitements et veiller à ce que le délai de synchronisation ne soit pas trop important, en s’assurant par exemple que la consommation des événements soit plus rapide que leur production.  S’assurer que tous les événements soient acheminés et traités,  sans quoi deux services pourraient se trouver définitivement désynchronisés pour certaines entités  Être vigilant sur le paramétrage du bus d’événements ainsi que des applicatifs producteurs et consommateurs d’événements. 6
  • 7. z I. Event-Driven Architecture 2. Event Broker : Apache Kafka 7 CONNECTOR STREAMS
  • 8. z I. Event-Driven Architecture 2. Event Broker : Apache Kafka  Kafka comme bus d’événement (Event Broker)  Une plateforme distribuée de diffusion (Streaming) de données en continu, capable de publier, stocker, traiter et souscrire à des flux d'enregistrement en temps réel.  Initialement développée par LinkedIn comme système interne pour la gestion de ses 1 400 milliards de messages quotidiens, c'est aujourd'hui une solution Open Source Apache. 8
  • 9. z I. Event-Driven Architecture 2. Event Broker : Apache Kafka 9  Kafka permet :  Garantit le découplage entre producteurs de données et consommateurs  Supporte des consommateurs multiples  Permet une forte scalabilité horizontale via une Architecture distribuée  Met en œuvre la persistance des données  Les événements qui sont publiés dans Kafka ne sont pas supprimés dès leur consommation, comme dans les solutions orientées messaging (ex : RabbitMQ).
  • 10. z I. Event-Driven Architecture 2. Event Broker : Apache Kafka 10
  • 11. z I. Event-Driven Architecture 2. Event Broker : Apache Kafka 11 Config Kafka “default.replication.factor=2” // nombre de réplications des partitions dans les brokers “min.insync.replicas=1” // le nombre minimal de réplicas à maintenir en synchronisation à 2 tout juste après écriture sur la partition leader config Producer “request.required.acks=all” pour que le broker qui contient la partition leader n’acquitte (ack) l’écriture qu’après avoir procédé à la réplication. Pour que la réplication soit effective à tout moment et éviter la perte de message. Config Consumer “enable.auto.commit=false”// désactiver l’autocommit et réaliser un commit explicite en fin de traitement pour garantir que chaque événement qui a fait l’objet d’un commit a bien été pris en compte par le consommateur.
  • 12. z I. Event-Driven Architecture 2. Event Broker : Apache Kafka 12
  • 13. z  Data Streaming, le terrain de prédilection de Kafka 13 I. Event-Driven Architecture 2. Event Broker : Apache Kafka  Dans cette étude(2017), si 50% des interrogés mentionnent « le messaging » parmi les tâches confiées à Kafka, 66% évoquent le « streaming process ». Parmi les cas d’usages, se détachent les data pipelines (81% de mentions), les Microservices (50%), ou encore la supervision temps réel (43%).
  • 14. z I. Event-Driven Architecture 3. Mise en œuvre : POC App JCDecaux Station avec Spring Kafka, Spring Websocket 14 JCDecaux Producer DASHBOARD Client Websocket UI @MessageMapping (/jcdecaux) StompBroker Send destination /app/jcdecaux Send destination /topic/stations Recieve Message /topic/stations Request Channel Response Channel Broker Channel JCDecaux Consumer DASHBOARD Client Websocket UI @MessageMapping (/jcdecaux) StompBroker Send destination /app/jcdecaux Send destination /topic/stations Recieve Message /topic/stations Request Channel Response Channel Broker Channel Request Channel station station Observation en temps réel des locations des vélos à chaque station JCDecaux dans le monde. https://github.com/fouomene/poc-jcdecaux-spring-kafka-websocket Broker Channel API
  • 15. z I. Event-Driven Architecture 3. Mise en œuvre : POC App JCDecaux Station avec Spring Kafka, Spring Websocket 15 https://github.com/fouomene/poc-jcdecaux-spring-kafka-websocket
  • 16. z I. Event-Driven Architecture 3. Mise en œuvre : POC App JCDecaux Station avec Spring Kafka, Spring Websocket 16 Kafka Manager https://github.com/yahoo/CMAK
  • 17. z II. Microservice Architecture 1. Introduction 17  Architecture Microservice  « Le style architectural des microservices est une approche permettant de développer une application unique sous la forme d’une suite logicielle intégrant plusieurs services. Ces services sont construits autour des capacités de l’entreprise et peuvent être déployés de façon indépendante » Martin Fowler  Microservices sont une méthode développement logiciel utilisée pour concevoir une application comme un ensemble de services modulaires. Chaque module répond à un objectif métier spécifique et communique avec les autres modules.
  • 18. z II. Microservice Architecture 1. Introduction 18 microservice C code App < / > API microservice B code App < / > API microservice A code App < / > API microservice D code App < / > API Client Communication client to service service to service Database Database Database Database
  • 19. z II. Microservice Architecture 1. Introduction 19  Réduction du temps de développement  Grâce à un développement distribué, plusieurs microservices peuvent être travaillés et développés simultanément.  Évolutivité accrue  Avec les microservices et leur indépendance en termes de développement et de déploiement. Cela permet de faire évoluer l’application sereinement pour répondre à de nouveaux besoins et de nouvelles demandes sans entraver le fonctionnement du système.  Réduction des pannes  Les microservices étant indépendants, lorsqu’un élément tombe en panne ou rencontre un problème, l’ensemble de l’application ne cesse pas de fonctionner contrairement aux applications monolithiques. Il est également plus facile d’identifier et de résoudre une panne dans ce type d’eco-système.
  • 20. z II. Microservice Architecture 1. Introduction 20  L’adaptabilité de chaque microservice aux outils de travail  L’indépendance des composants offre la possibilité de paramétrer les microservices avec différents langages de programmation. Ainsi, les outils opérationnels utilisés par l’entreprise peuvent être rendus compatibles avec la solution globale.  La flexibilité par rapport au cloud  Une entreprise qui utilise l’architecture en microservices peut réduire ou augmenter son usage du cloud en fonction de la charge de l’application. L’organisation est ainsi beaucoup plus flexible.  Le plus important dans l’implémentation des microservices, c’est de faire simple.  Il faut déléguer le maximum d’exigences non fonctionnelles à l’infrastructure logicielle (conteneurs, Services Mesh, etc…) pour réduire les risques futurs de dettes techniques, et garantir un fonctionnement homogène des services.  Pour cela, on se doit de respecter les règles des 12 factors (https://12factor.net/fr/ ).
  • 21. z II. Microservice Architecture 2. Edge Microservice : Spring Cloud 21  Spring Cloud fournit des fonctionnalités pour les cas d'utilisation typiques tels que l'enregistrement et la découverte de services, le routage, l'équilibrage de charge et les circuit-breakers.
  • 22. z II. Microservice Architecture 2. Edge Microservice : Spring Cloud 22  Spring Cloud Bootstrap (e.g. Bootstrap context and @RefreshScope)  Spring Cloud Config : Se positionne comme serveur de distribution des fichiers de configuration.  Config Server  Config Client  Spring Cloud Netflix  Discovery : Permet de découvrir les Microservice sur notre serveur. C’est aussi un outil clé pour la gestion des Microservices.  Eureka Server  Eureka Client  Load Balancer  Ribbon (config et dépendance commenté) : Équilibrer les requêtes entre plusieurs instances pour éviter une surcharge d’un serveur  Circuit Breaker : Définit un ensemble de seuils qui, une fois dépassés, arrêteront l'exécution d'un bloc de code.  Hystrix : Une API pour la résilience d’applications.
  • 23. z II. Microservice Architecture 2. Edge Microservice : Spring Cloud 23  Spring Cloud Routing  Gateway : Le point d’entrée unique pour les API et Microservices.  OpenFeign : Faire communiquer (synchrone) les microservices grâce à Feign.  Spring Cloud Load Balancer : Équilibrer les requêtes entre plusieurs instances pour éviter une surcharge d’un serveur  Spring Cloud Observability  Sleuth : Permet de donner des ID uniques à chaque requête, c'est  Zipkin Client : permet exposer les traces vers Zipkin Server.  Spring Boot Actuator : expose une API qui donne des informations sur le microservice concerné, mais ne propose pas d'interface graphique.  Zipkin Server : permet de tracer les requêtes de service en service uniquement si ces services intègrent ses dépendances.
  • 24. z II. Microservice Architecture 3. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud 24
  • 25. z II. Microservice Architecture 3. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud 25 microservice client UI Instance Port : 8080 API microservice produits Instance Port : 8001 API microservice produits Instance Port : 8011 API microservice commandes Instance Port : 8002 API microservice paiement Instance Port : 8003 API Distributed tracing Zipkin-Server Instance Port : 9411 Service Registry Eureka-Server Instance Port : 8102 Service Routing Gateway-Server Instance Port : 8004 Service Config Config-Server Instance Port : 8101 Service Routing Spring Load Balancing Communication service to service https://github.com/fouomene/poc-microservice-edge-spring-cloud
  • 26. z II. Microservice Architecture 3. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud 26 https://github.com/fouomene/poc-microservice-edge-spring-cloud
  • 27. z II. Microservice Architecture 3. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud 27 https://github.com/fouomene/poc-microservice-edge-spring-cloud
  • 28. z 28 III. Event-Driven Microservice Architecture 1. Introduction  De nombreux facteurs avantageux et déterminants caractéristiques de l’architecture microservices se retrouvent dans une architecture orientée événements, qui permettent toutes les deux de relever des défis similaires.  Cependant, prenez une architecture microservices adoptant une approche d’intégration demande/réponse synchrone traditionnelle ; ce type d’architecture active un service atomique indépendant doté d’un cycle de vie indépendant et, par conséquent et de manière générale, une équipe indépendante qui en est responsable. Si ce service reposait une un flux d’intégration demande/réponse avec un autre microservice (sans raison spécifique), alors le service ne serait pas couplé de manière lâche et n’en serait pas véritablement indépendant. Vous ne pourriez pas mettre à niveau/faire évoluer le service sans vous préoccuper du service couplé.
  • 29. z 29 III. Event-Driven Microservice Architecture 1. Introduction  Il n’est pas indispensable de disposer d’une architecture orientée événements pour surmonter ce problème, car un modèle asynchrone alternatif, comme une file d’attente de messages, constituerait une solution efficace dans cette situation. Cependant, cela démontre dans quelle mesure les caractéristiques d’une architecture orientée événements et la diffusion d’événements peuvent interagir de manière positive avec les microservices.
  • 30. z 30 III. Event-Driven Microservice Architecture 1. Introduction
  • 31. z 31 III. Event-Driven Microservice Architecture 1. Introduction
  • 32. z 32 III. Event-Driven Microservice Architecture 1. Introduction
  • 33. z 33 III. Event-Driven Microservice Architecture 1. Introduction microservice C code App < / > API microservice B code App < / > API microservice A code App < / > API microservice D code App < / > API Client Communication client to service service to service Database Database Database Database
  • 34. z 34 III. Event-Driven Microservice Architecture 1. Introduction microservice C code App < / > microservice B code App < / > microservice A code App < / > API microservice D code App < / > Client Communication client to service service to broker Database Database Database Database EVENT API EVENT API EVENT API EVENT EVENT BROKER
  • 35. z 35 microservice client UI Instance Port : 8080 API microservice produits Instance Port : 8001 API microservice produits Instance Port : 8011 API microservice commandes Instance Port : 8002 API microservice paiement Instance Port : 8003 API Distributed tracing Zipkin-Server Instance Port : 9411 Service Registry Eureka-Server Instance Port : 8102 Service Routing Gateway-Server Instance Port : 8004 Service Config Config-Server Instance Port : 8101 Service Routing Spring Load Balancing Communication service to service https://github.com/fouomene/poc-microservice-edge-spring-cloud III. Event-Driven Microservice Architecture 2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka
  • 36. z III. Event-Driven Microservice Architecture 2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka 36 microservice client UI Instance Port : 8080 API microservice produits Instance Port : 8001 API microservice produits Instance Port : 8011 API microservice commandes consumer Instance Port : 8002 microservice paiement producer Instance Port : 8003 Distributed tracing Zipkin-Server Instance Port : 9411 Service Registry Eureka-Server Instance Port : 8102 Service Routing Gateway-Server Instance Port : 8004 Service Config Config-Server Instance Port : 8101 Service Routing Spring Load Balancing Communication service to broker API EVENT API EVENT https://github.com/fouomene/poc-event-driven-microservice-edge-kafka-spring-cloud
  • 37. z 37 microservice paiement Instance Port : 8003 API database Table : paiement id idcommande montant 1 2 500 2 8 10000 3 5 20000 si le paiement est accepté enregistrer paiement avec idcommande = 5 return idpaiement = 3 requête pour paiement de la commande idcommande = 5 microservice commandes Instance Port : 8003 API database Table : commande id commandePaye quantite 2 false 2 5 true 10 8 false 30 9 false 1 mettre à jour le statut idcommande = 5 à commandePaye = true 2 enregistrer la commande return idcommande = 5 requête création commande reponse commande crée idcommande = 5 Client 1 3 4 5 6 7 requête pour mettre à jour le statut de la commande idcommande = 5 III. Event-Driven Microservice Architecture 2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka
  • 38. z 38 microservice paiement Producer Instance Port : 8003 API EVENT database Table : paiement id idcommande montant 1 2 500 2 8 10000 3 5 20000 si le paiement est accepté enregistrer paiement avec idcommande = 5 return idpaiement = 3 requête pour paiement de la commande idcommande = 5 microservice commandes Consumer Instance Port : 8003 API EVENT database Table : commande id commandePaye quantite 2 false 2 5 true 10 8 false 30 9 false 1 mettre à jour le statut idcommande = 5 commandePaye = true CommandeEvent idcommande = 5 CommandeEvent idcommande = 8 CommandeEvent idcommande = 2 send receive topic : paiement 2 enregistrer la commande return idcommande = 5 requête création commande reponse commande crée idcommande = 5 Client 1 3 4 5 6 7 8 III. Event-Driven Microservice Architecture 2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka
  • 39. z II. Event-Driven Microservice Architecture 2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka 39 https://github.com/fouomene/poc-event-driven-microservice-edge-kafka-spring-cloud
  • 40. z II. Event-Driven Microservice Architecture 2. Mise en œuvre : POC App Mini-Ecommerce avec Spring Cloud, Spring Kafka 40 https://github.com/fouomene/poc-event-driven-microservice-edge-kafka-spring-cloud
  • 41. z IV. Références 41  https://github.com/fouomene/poc-jcdecaux-spring-kafka-websocket  https://github.com/fouomene/poc-microservice-edge-spring-cloud  https://github.com/fouomene/poc-event-driven-microservice-edge-kafka-spring-cloud  https://kafka.apache.org  https://spring.io/projects/spring-kafka#overview  https://spring.io/guides/gs/messaging-stomp-websocket  https://www.redhat.com/en/topics/integration/what-is-event-driven-architecture  https://blog.ippon.fr/2021/06/29/comment-se-lancer-avec-kafka-partie-1  https://nexworld.fr/kafka-et-architectures-fast-data  https://www.confluent.io/2017-apache-kafka-report  https://www.tibco.com/fr/reference-center/what-is-event-driven-architecture  https://www.leanix.net/fr/wiki/vsm/architecture-microservices  https://nexworld.fr/les-microservices-cest-quoi  https://blog.octo.com/une-vision-sur-le-service-mesh-service-mesh-versus-librairies- applicatives-lexemple-de-spring-cloud  https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh  https://12factor.net/fr/  https://www.chakray.com/fr/architectures-orientees-evenements-panacee-autre-tendance- consommateurs

Notes de l'éditeur

  1. Premier béné