Comment l’architecture événementielle révolutionne la communication dans le SI @Meetic

Preview:

DESCRIPTION

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

Citation preview

@MeeticTech

Comment l’architecture événementielle

révolutionne la communication dans le SI

Euh… Vous êtes qui, d’abord ?

Vincent LEPOT

Architecte logiciel, R&D

@neozibok

Olivier DUFOUR

Ingénieur, IT CRM

➔ 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

Comment l’architecture événementielle révolutionne la communication dans le SI

(ou pourquoi vouloir passer plein de temps pour changer d’architecture

événementielle ?)

Un peu de contexte fonctionnel

Contexte fonctionnel - Les événements chez Meetic : flashs, visites et compagnie

Et puis un jour...

Contexte fonctionnel - Les événements chez Meetic : flashs, visites et compagnie

Et sinon, on pourrait avoir une

interaction avec une publication d’un

membre ?

Genre “liker” sa photo, son

annonce, ses hobbies,... ?

Et puis un autre jour...

Contexte fonctionnel - Les événements chez Meetic : flashs, visites et compagnie

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 ?...

“Ça me fait penser un peu à un vieux jeu : The Incredible Machine” - V.Lepot

L’architecture historique

L'architecture historique

Site web

WS

Fetch

Decide

Execute

Opt-ins

Onlines

Mobiles

...

Event type

ID sender

ID receiver

Date/time

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

L'architecture historique

Notre cible

Notre cible

Visites FlashsMises en

favoriMessages

Connexions InscriptionsModifs de

profilGéoloc’

...

...

...

...

......

...

...

...

...

...

...

...

......

...

...

...

...

Notre cible

Bus d’événements d’entreprise

Sites web

Tracking

Apps mobile

Notifications

Moteurs de

recherche

Graphes

Détection de

fraudeScoring et

algorithmie

Notre cible - Notre choix

Apache Kafka

High throughput Distributed Durable

Notre cible - Comment ça marche, Kafka ?

Topic

Partition Partition Partition

Producteur

Consommateur

groupe A

Consommateur

groupe A

Consommateur

groupe AConsommateur

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

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

Les points d’attention

Data center 1 Data center 2

Intégration avec PHP

=> Interface REST pour les producteurs

=> Scala/Akka pour les consommateurs

Les points d’attention

Stabilité ? (protocole, plateforme,...)

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é”

Les points d’attention

Les next steps

SI CRM

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

Architecture actuel: l'évènement déclenche un envoi sur l’ensemble des canaux

Intégration SI CRM

Email

CRM MTA EmailSites web

&

Service client

&

Paiement

filtrer les optouts

A/B testing

Capping

BAL

CRM MTA BAL

MTA pushPush

Faisons tomber

les murs

architecture cible:

Intégration SI CRM

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

=> 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

Scoring et algorithmie

Indexation du moteur de recherche (ex:elasticsearch, splunk,...)

Mise à jour de la base graphe (ex: neo4j)

Détection de scam

Tracking

...

Plein d’autres applications possibles...

!

Merci !

Recommended