Comment l’architecture événementielle révolutionne la communication dans le SI @Meetic
6 Nov 2014•0 j'aime
5 j'aime
Soyez le premier à aimer ceci
afficher plus
•4,010 vues
vues
Nombre de vues
0
Sur Slideshare
0
À partir des intégrations
0
Nombre d'intégrations
0
Télécharger pour lire hors ligne
Signaler
Internet
Les slides de notre talk au Meetup "Les Frenchies du web #1" présentation l'archictecture événementielle mise en place chez Meetic autour d'Apache Kafka
Euh… Vous êtes qui, d’abord ?
Vincent LEPOT
Architecte logiciel, R&D
@neozibok
Olivier DUFOUR
Ingénieur, IT CRM
Comment l’architecture événementielle révolutionne la communication dans le SI
➔ Contexte fonctionnel - Les événements chez Meetic : flashs, visites et compagnie
➔ Notre architecture historique
➔ Notre cible: tout est événement !
➔ Les points d’attention
➔ Les next steps
Un peu de contexte fonctionnel
(ou pourquoi vouloir passer plein de temps pour changer d’architecture
événementielle ?)
Contexte fonctionnel - Les événements chez Meetic : flashs, visites et compagnie
Et puis un jour...
Et sinon, on pourrait avoir une
interaction avec une publication d’un
membre ?
Genre “liker” sa photo, son
annonce, ses hobbies,... ?
Contexte fonctionnel - Les événements chez Meetic : flashs, visites et compagnie
Et puis un autre jour...
Et moi, j’aimerais bien pouvoir
améliorer les algorithmes de
recommandation entre les profils en
utilisant les interactions, les
affichages, le sens du vent… en
temps quasi réel, ce serait top !
Contexte fonctionnel - Les événements chez Meetic : flashs, visites et compagnie
Et si on en
profiter pour aller
même encore
plus loin ?...
L'architecture historique
Site web
Fetch
Decide
Execute
WS
Opt-ins
Onlines
Mobiles
...
Event type
ID sender
ID receiver
Date/time
L'architecture historique
Néanmoins, ça fonctionne très bien comme ça depuis des années !
Problèmes liés à cette solution
➔ Home made et peu maintenue : les compétences techniques ont été perdues
➔ Une souplesse… hum... limitée
➔ Ne peut traiter que des interactions entre membres
Notre cible
Bus d’événements d’entreprise
Sites web
Tracking
Apps mobile
Notifications
Moteurs de
recherche
Graphes
Détection de
Scoring et fraude
algorithmie
Notre cible - Comment ça marche, Kafka ?
Producteur
Topic
Partition Partition Partition
Consommateur
Consommateur
Consommateur
groupe A
groupe A
groupe A
Consommateur
groupe B
Consommateur
groupe B
Consommateur
groupe B
Les points d’attention
✔
✘
Zookeeper fonctionne sur un principe de quorum, nécessitant un nombre
impair de votants.
Les points d’attention
Data center 1 Data center 2
Zookeeper s’inscrit mal dans une configuration à 2 Datacenters Actif/Actif
=> On a un risque en cas de perte d’un DC ou d’un split brain
Intégration avec PHP
=> Interface REST pour les producteurs
=> Scala/Akka pour les consommateurs
Les points d’attention
Stabilité ? (protocole, plateforme,...)
Les points d’attention
Néanmoins:
➔ pas de plantage depuis la mise en service
➔ le cluster est toujours resté cohérent (pas de perte de données) même après avoir été “brusqué”
SPAM = envoi en masse d’offres sur tous les canaux
CRM = envoi de la meilleur offre au meilleur moment sur le(s) meilleur(s) canal(aux)
SI CRM
Intégration SI CRM
Architecture actuel: l'évènement déclenche un envoi sur l’ensemble des canaux
Email
CRM MTA Email
Sites web
&
Service client
&
Paiement
filtrer les optouts
A/B testing
Capping
BAL
CRM MTA BAL
MTA push
Push
Intégration SI CRM
architecture cible:
Bus
d’événements
(kafka)
Sites web
Paiement
Service client
event
event
event
CRM
Choix du canal de
communication
filtrer les optouts
A/B testing
Capping
MTA
Personnalisation
envoi du
message
Existant
A construire
Scoring et algorithmie
=> Calcul distribué temps réel (ex: Spark) ou par traitement (ex: hadoop)
➢ Segmentation & scoring (offres, packs, remises, appétence par canal)
➢ Personnalisation et amélioration des résultats de recherche et des sélections de profils
Plein d’autres applications possibles...
Indexation du moteur de recherche (ex:elasticsearch, splunk,...)
Mise à jour de la base graphe (ex: neo4j)
Détection de scam
Tracking
...
!