VT2015 Complex Event Processing2

Présentation
Enseignants : DONSEZ Didier, BONNEAU Georges-Pierre

Sujet : Complex Event Processing

Démonstration :
 * Apache Storm et Spark Streaming sur le cloud d'Azure
 * Saas IFTTT

Auteur : KLIPFFEL Tararaina

Date : 23/10/15

Mots clés :

Résumé
De nos jour, le concept de Big-Data fait partie intégrante de notre quotidien. Nous faisons face à une véritable explosion du nombres de sources d'informations et par conséquent de l’augmentation exponentielle de l’information. En effet, les données générées deviennent tellement volumineuses qu'il devient difficile de les traiter avec des outils classiques de gestion de base de données ou de gestion de l'information en temps réel. Toutes ces données et événements peuvent être cruciaux pour analyser ou prendre des décisions stratégiques. D’où l'apparition des technologies de style "Complex Event Processing" qui permettent de traiter ces informations sous contrainte de temps, et d’en explorer les relations sémantiques et temporelles afin de générer des solutions.

CEP


Le Complex Event Processing (en francais, Traitement des événements complexes) est un concept d'analyse d'événements permettant de traiter un flots continus de données (mesures, événements) en temps réel dans un nuage d'événements. Cela consiste à un traitement des événements (lecture, création, transformation, l’abstraction des données) puis à l'emploie de techniques de détection de schémas complexes (corrélation, abstraction, et hiérarchies entre événements, causalité, l'adhésion, la chronologie). La fonction principal du CEP est de trier les informations contenues dans les événements et ensuite d'analyser son impact au niveau macro comme "événement complexe" pour décider d'un plan d'action en temps réel.

Architecture EDA


Les systèmes basé sur le concept CEP se repose sur une architecture de type EDA (Event-Driven Architecture). L'Event-Driven Architecture est un pattern d'architecture développé autour des actions suivantes : Produire, détecter, consommer et réagir à des évènements. C'est à dire sur un modèle d'interaction applicatif qui met en oeuvre des services répondant aux demandes. La particularité de cette architecture et de ne pas avoir de langage ou plat-forme particuliers avec des communications asynchrone. C'est une architecture qui s'articule autour d'un bus disposant de fonctionnalités d'abonnement et de publication (Publish/Subscribe) et des services. Les services seront producteurs et/ou consommateurs d'événements qu'ils transmettront au bus pour avertir les services abonnées. Le Bus Publish & Subscribe a donc un rôle de médiateur (middleware) entre émetteurs et consommateurs.

Domaine d'application
Complex Event Processing, en tant que concept, répond à tout besoin exigeant en termes de traçabilité, réactivité, disponibilité et prise de décision. La complexité de mise en œuvre réside dans la définition d’algorithmes de calcul et de corrélation performants ainsi que de processus et règles métiers optimisés.

Les domaines d’application sont divers et variés. Ci-dessous quelques exemples:


 * Traçabilité par le biais de puces RFID
 * Réseaux de capteurs (IoT)
 * Exemple : Fiabilisation de la traçabilité d’objets dans une chaîne logistique


 * Fiabilité
 * Journaux système (détection de fraudes, ...)
 * Problématiques financières et boursières (quotations boursières, ...)
 * Exemple : Détection des « Microcap stock fraud »
 * Sécurité des systèmes d’information par corrélation d’événements


 * Réactivité
 * Réseaux sociaux (post)
 * Optimisation en temps réel de tournées de flotte par corrélation de positions GPS et état du trafic


 * Prise de décision
 * Supervision technique des plateformes
 * Exemple : Traitement des alertes SNMP remontées par les composants logiciels et les serveurs
 * Business Activity Monitoring (BAM)

Solutions
Les solutions CEP peuvent être intégrées soit dans un périmètre applicatif (utilisation de frameworks comme Esper ou NEsper) ou positionnées comme un module transverse recueillant l’ensemble des événements provenant d’applications diverses du SI (par exemple, intégrées à une plateforme d’échanges transverse entreprise à base d’ESB). Par rapport aux solutions existantes, de type BPM, BI ou autres, les solutions CEP se caractérisent par :


 * Un traitement continu d’une masse considérable (plusieurs centaines de milliers par seconde) d’événements provenant de sources d’information différentes
 * D’un besoin de prise de décision en temps réel par rapport à un ensemble d’événements quelconque surgissant dans une fenêtre temporelle définie. (de quelques secondes, à quelques heures, voire quelques jours)

Apache Spark
Apache Spark est un framework de traitements Big Data open source développé par AMPLab, de l’Université UC Berkeley, en 2009 et passé open source sous forme de projet Apache en 2010. Apache Spark permet d'effectuer des analyses sophistiquées. C'est principaux avantages et sa rapidité et sa facilité d’utilisation. Spark présente plusieurs avantages par rapport aux autres technologies big data et MapReduce comme Hadoop et Storm. D’abord, Spark propose un framework complet et unifié pour répondre aux besoins de traitements Big Data pour divers jeux de données, divers par leur nature (texte, graphe, etc.) aussi bien que par le type de source (batch ou flux temps-réel).

À côté des API principales de Spark, l’écosystème contient des librairies additionnelles qui permettent de travailler dans le domaine des analyses big data et du machine learning : dont Spark Streaming

Spark Streaming
Spark Streaming peut être utilisé pour traitement temps-réel des données en flux. En vérité Spart Streaming ne fait pas de l'analyse de données en temps réel mais utilise plutôt un mode de traitement "micro-batch". C'est à dire que Spark ne traite pas les données d’un flux en continue (contrairement à Apache Storm) mais les accumule pendant un laps de temps fixé avant d’être traitées. Deplus Spark stream utilise pour les données temps-réel DStream, c’est-à-dire une série de RDD (Resilient Distributed Dataset).

Storm Apache
Apache Storm est un système de calcul distribué, open source et tolérant aux pannes qui permet de traiter les données en temps réel avec Hadoop. Les solutions Storm peuvent également permettre un traitement garanti des données, ainsi que la possibilité de relire les données dont le traitement a échoué une première fois.

Conclusion
On peut dire aujourd’hui que les solutions existantes sont au stade de la « croissance » et dépassent largement l’écosystème «trading» financier, historiquement connues pour l’évolution et l’adaptation de ce genre de solution sur les prochaines années sera rapide.

Bibliographie

 * http://fabulous-lab.com/blog/2015/01/17/spark-streaming-affichez-vos-donnees-en-presque-temps-reel/
 * http://blog.octo.com/complex-event-processing-cep-de-quoi-sagit-il/
 * http://www.infoq.com/fr/articles/apache-spark-introduction
 * http://searchsoa.techtarget.com/definition/complex-event-processing
 * https://upload.wikimedia.org/wikipedia/commons/3/39/Complex_Event_Processing.jpg
 * http://www.lemagit.fr/conseil/Spark-contre-MapReduce-quelle-solution-pour-les-entreprises
 * http://www.infoq.com/fr/articles/apache-spark-introduction