22 Gestion des événements métiers avec StreamInsight Lionel Barre Architecte Sword Service sa Pascal Varenio Business Analyst Centrics Consulting sa 14/15 Avril 2010
33 Sociétés Centrics Consulting SA est une société de conseil stratégique et de conseil en organisation pour les entreprises et collectivités publiques Sword Service SA est une société de service informatique spécialisée dans les domaines de l’ECM, de la BI et du SIG Fournisseur de solutions logicielles GRC et SIG
44 Plan Introduction L Présentation de système CEP P Introduction architecture L Démonstration L Mise en place d’un projet CEP P Conclusion CEP = Complex Event Processing
55 Plateforme fiable et montée en charge Efficacité IT & DeveloppeursBI en libre service PowerPivot Report Builder 3.0 Master Data Services Gestion Multi-Serveur enrichie Virtualisation & Live Migration Deploiement accéléré de la couche d’accès aux données Sécurité d’entreprise, montée en charge Complex Event Processing Support des dernières innovations hardware Parallel DataWareHouse Plateforme de données complète et intégrée SGBDR dans le cloud Programmation & Outil similaire à SQL Server Auto-Administration, hautement disponible Support MPP pour les DWH de plus de 100To Appliances hautement scalable Integré avec Microsoft BI
66 Streaminsight StreamInsight n’est certes pas une révolution technologie dans le domaine du CEP. Le challenge : Stocker des milliards d’événements dans SQL Server dans le cadre d’une application CEP. Quelles applications : Fraude financière, process industriels, distribution d’électricité, mesure d’audience Web, contrôle d’accès.
77 Streaminsight Microsoft prépare son arrivée sur le marché des plates- formes de CEP (Complex Event Processing) avec un logiciel de traitement des événements à faible latence. Sa version commerciale est attendue pour 2010, le logiciel fait en effet partie de SQL Server 2008 R2. Microsoft joue les synergies avec: 1. SQL Server pour le stockage des événements, 2..NET et Visual Studio pour la programmation. 3.On pourra définir les requetes sur les événements du systèmes en C#, Linq. 4.interconnectée à Biztalk pour faire intervenir le moteur CEP au sein des processus métier.
88 Streaminsight Pour y parvenir, Microsoft a doté StreamInsight d’un kit de développement d’adaptateur. Kit qui va permettre aux partenaires de créer de la valeur ajoutée sur ce moteur CEP et une réutilisation des composants. Il n’empêche, un moteur de CEP qui devient un composant de SQL Server, c’est un signe de banalisation du CEP s’il en est !
99 Plan Introduction Présentation de système CEP P Introduction architecture Démonstration Mise en place d’un projet CEP Conclusion CEP = Complex Event Processing
10 Streaminsight Définition: Complex Event Processing (CEP) is the continuous and incremental processing of event streams from multiple sources based on declarative query and pattern specifications with near-zero latency. Continuous Incremental Multiple source Declarative query Latency -> 0
11 Introduction Différentes sortes d’événements Détection d’événements métier processus Observation, surveillance fonctionnelle Grand nombre d’événements (mesures, …) Evénement métier (alerte, …) Vue fonctionnelle d’événements techniques récupérés à partir de sondes réparties Business Activity Monitoring (BAM) SQL Server 2008 R2 StreamInsight BizTalk Server 2009 orchestration
12 CEP - Problématique Analyse de (plusieurs) flux d’évènements continus dans le but d’en extraire une information pertinente Exemple : Calcul d’agrégation et détection de seuil en continu Corrélation de flux Détection de pattern Particularités : Débit potentiellement élevé Latence de détection faible Flux potentiellement infini Détection basée sur des fenêtres temporelle Temps
13 CEP – Example Calcul d’agrégation basé sur une fenêtre HoppingWindow Tumbling Snapshot Step 10mn Step 1hour
14 CEP : Exemples Capteurs, prédiction de pannes Industrie, Télémetrie (ex : flux de circulation, ascenseur, car2car, surveillance de chaines de production) … Web : profiling dynamique (Click Stream) Détection de fraude Trading algorithmique
15 Comparaison avec les bases de données relationnelles Base de Données relationnelle Données statiques Requêtes dynamiques SELECT… StreamInsight Requête statique from … Données dynamiques
16 Complémentarités BAM et CEP (*) prennent tous deux des événements en entrée (*) BAM = Business Activity Monitoring (BizTalk), CEP = Complex Event Processing (StreamInsight) BAMStreamInsight Unité de traitement principal Activité = processus fonctionnel Fenêtre de temps Fréquence typique des événements Des centaines d’événements par heure Des dizaines de milliers d’événements par seconde Génère typiquement Structure et données dans base de données relationnelle et cubes appels d’API Flux plus fonctionnel Positionnement par rapport aux processus métier plutôt en avalplutôt en amont Latence De la seconde au ¼ h (cubes)Quelques millisecondes
17 Plan Introduction Présentation de système CEP Introduction architecture Démonstration Mise en place d’un projet CEP Conclusion CEP = Complex Event Processing
18 StreamInsight ? La solution StreamInsight est entièrement basée sur le framework.Net Outils de développement Visual Studio.Net Une solution StreamInsight est composée de 3 types d’éléments simples développés en.Net 1. Un ou plusieurs adaptateurs d’entrée (InputDapaters) récupère des données brutes et les transforme en flux ou évènement StreamInsight 2. Des requêtes LINQ qui appliquent la logique métier en retraitant les évènements envoyés par les InputAdapters (agrégation, filtrages) 3. Un ou plusieurs adaptateurs de sortie (OutputAdapters) qui fournissent le résultats des requêtes à des terminaux de consultation
19 CEP : StreamInsight CEP Engine Output Adapters Input Adapters Event Standing Queries Evts sources Evts cibles Matériel, Capteurs Serveurs Web BD, stockage d’événements Bourse, flux RSS Event C_IDC_NAMEC_ZIP BD, stockage d’événements SMS, station de surveillance Tableaux de bord, SharePoint Application de pilotage Event CEP Application at Runtime Données de référence statique IDE.NET C# LINQ Développeur
20 Events Trois types d’évènements Evènements de type ponctuel Evènements intervalles de durée fixe Evènements intervalles de durée initialement inconnue Données associées aux évènements Valeurs fixes Des valeurs ajoutées et définies par l’utilisateur Déterminé par le type d’évènement
21 Types d’évènements Les évènements StreamInsight sont définis par des Types de données.Net Les évènements peuvent définir plusieurs champs de données Certains champs proviennent du RunTime StreamInsight Timestamps And Metadata EnterGate (DateTime) LaneID (int) VehicleType (int) TagID (string) ……………
22 Flux d’évènements Caractéristiques générales d’un flux Série d’évènements éventuellement infinie Types multiples Insertion nouvel enregistrement Changement de durée d’un évènement existant Motifs d’arrivée Rythme régulier (Avec indication de fin de flux) Par Intermittence (aléatoire ou rafale) Arrivée déclassée
23 Réceptivité des requêtes StreamInsight garantie une sortie identique quel que soit l’ordre d’arrivée des évènements Difficile d’atteindre une bonne réceptivité de requêtes CTI (Current Time Element) Inséré dans le flux Indique l’achèvement jusqu’à un timestamp (sans l’inclure)
24 Adapters Entrée (source) et sortie (sink) configurable Typés (données prédéfinies) Generic (données déterminées au binding de la requête) Méthodes Gestion des évènements et des flux Propriétées Indique les fonctionnalités des adaptateurs au runtime
25 Moteur de requête Héberge les requêtes actives Les opérateurs consomment et produisent des flux Les requêtes peuvent être chaînées Les résultats de requêtes sont calculés en séquence Gère les instances de requêtes Démarrage Arrêt Recueillir les statistiques du runtime
26 Modèle de requêtes Requêtes écrites avec LINQ Permet la réutilisation de logique dans plusieurs instances de requêtes Typiquement fournit l’intelligence de toute application StreamInsight Permet l’extention avec du code.Net
27 Dévelopement d’une application StreamInsight Modélisation des évènementCreation d’AdaptersCréation de modèles de requêtesChaîner les modèles de requêtesDémarrage/Arrêt des requêtes
28 Eléments de requêtes Projection Filtrage Jointures Unions Agrégations Event Windows Hopping Window, Tumbling Window Snapshot Window
29 Eléments de requêtes: Projection Création d’un nouveau flux à partir d’une sélection de champs d’un premier flux Possibilité de créer un nouveau type ou référencer un type existant Utilisation d’assignation de champs (Constructeurs interdits) Possibilité d’appliquer des calculs aux données // New type var queryProject = from c in Test1EventStream1 select new { i = c.i * 2, f = c.f * 2 }; // Existing type var realValueStream = from e in InputStream select new MeterWattage { wattage = (double)e.Consumption / 10 };
30 Eléments de requêtes: Filtrage Restriction des évènements du flux de sortie correspondant Propagation des évènements si l’évaluation de la clause where est vrais var queryFilter = from c in someStream where c.i > 10 select c; var filteredStream = from e in ratioStream where e.id == 2 select e;
31 Eléments de requêtes: Jointures Corrélations d’évènements provenant de différents flux Supporte inner joins, equijoins, cross joins Vérification du chevauchement des intervalles de temps Vérification des conditions de jointures var equiJoin = from e1 in stream1 join e2 in stream2 on e1.i equals e2.i select new { e1.i, e1.j, e2.j }; var crossJoin = from e1 in stream1 from e2 in stream2 where e1.i > 3 && e2.j < 10 select new { e1.i, e2.j };
32 Eléments de requêtes: Union Combinaison d’évènements de plusieurs flux en un seul flux Peut être utilisé en cascade pour faire l’union de plus de deux flux // Union of two streams var unioned = stream1.Union(stream2); // Union of three streams var unionTmp = stream1.Union(stream2); var unionFinal = unionTmp.Union(stream3);
33 Eléments de requêtes: Agrégation Agrégations supportées Avg Sum Count Min Max Calculé sur les évènements d’une fenêtre de temps Ne peut être appliquée qu’à des fenêtre temporelles
34 Eléments de requêtes: Fenêtres d’évènements Permet le calcul sur les évènements pendant un intervalle de temps Les opérations suivantes sont permises sur une fenêtre de temps: Agrégation TopK Opérateurs définit par l’utilisateur Les fenêtres sont temporelles Ne modifie pas les évènements sous-jacents
35 Eléments de requêtes: Fenêtre mobile Saut dans le temps d’une durée fixe Défini par la durée de la fenêtre et durée du saut Les opérateurs s’appliquent à l’ensemble des évènements à l’intérieur de la fenêtre
36 Eléments de requêtes: Fenêtre mobile Spécifier l’intervalle Spécifier la taille du saut var snapshotAgg = from w in inputStream.HoppingWindow (TimeSpan.FromHours(1), TimeSpan.FromMinutes(10)) select new { sum = w.Sum(e => e.i) };
37 Eléments de requêtes: variante de la fenêtre mobile Version simplifiée de la hoppingWindow La durée de la fenêtre et du saut sont identiques var snapshotAgg = from w in inputStream.TumblingWindow (TimeSpan.FromHours(1)) select new { sum = w.Sum(e => e.i) };
38 Eléments de requêtes: Fenêtre instantanée Défini par le début et la fin des évènements dans le flux Pas de grille à durée définie Pas de paramètres dans la définition de la fenêtre
39 Eléments de requêtes: Fenêtre instantanée Pas de paramètres Peut spécifier des règles d’entrée/sortie var snapshotAgg = from w in inputStream.Snapshot() select new { sum = w.Sum(e => e.i) };
40 Eléments de requêtes: fenêtre Règles d’entrée/sortie Transformation de Timestamps Contrôle ou modifie le comportement standard des agrégations Actuellement ne permet que le découpage des heures de début et de fin WindowInputPolicy inputPolicy = new WindowInputPolicy(WindowInputPolicy.ClipKind.ClipBoth); HoppingWindowClipOutputPolicy outputPolicy = new HoppingWindowClipOutputPolicy( HoppingWindowClipOutputPolicy.ClipKind.WindowEnd); DateTime alignment = new DateTime(TimeSpan.FromHours(12).Ticks, DateTimeKind.Local); var result1 = from w in inputStream.TumblingWindow( TimeSpan.FromHours(12), alignment, inputPolicy, outputPolicy) select new { Count = w.Count() };
41 Plan Introduction Présentation de système CEP Introduction architecture Démonstration Mise en place d’un projet CEP Conclusion CEP = Complex Event Processing
42 Démo : Surveillance d’autoroutes Autoroutes principales 8 files 2 directions 6 points de mesure Types de véhicules Voiture Bus Camion Ambulance Taxi
43 Séquence des Points de mesure Mesures multiples par véhicule Capture par puce électronique Mesure de vitesse Détermination du type de véhicule
44 Démo: Définition d’un point de mesure EventID – guid TollPointId – numéro du point de mesure 0 à 5 DirectionId – Direction: 0 (Nord) ou 1 (Sud) Lane – file de circulation: 0 à 7 VehicleTypeId – enumeration: 0-car, 1-bus, 2-truck, 3-taxi, 4- ambulance TagId – numéro d’identification du véhicule EnterGate – datetime mesure le point d’entrée du véhicule MillisecondsToPassSpeedCheckPoint – temps de parcours de la zone de 10 mètres ExitGate – datetime mesure le moment de sortie du véhicule
45 Démo : Point de mesure
46 StreamInsight Démo Filtrage et détection avec StreamInsight Points de mesure (Event) TollPointId DirectionId Lane VehicleTypeId TagId EnterGate MillisecondsToPass SpeedCheckPoint ExitGate Données de référence statique Requête LINQ Projection Jointure Filtrage Agrégation Application de pilotage
47 Démo: Expression LINQ Projection Filtrage Jointure de flux Union de flux Fenêtre sautantes Fenêtre mobiles Snapshot Agrégat
48 Plan Introduction Présentation de système CEP Introduction architecture Démonstration Mise en place d’un projet CEP P Conclusion CEP = Complex Event Processing
49 Projets cibles Changer sa vision Database ApplicationsEvent-driven Applications Query Paradigm Ad-hoc queries or requests Continuous standing queries LatencySeconds, hours, daysMilliseconds or less Data RateHundreds of events/secTens of thousands of events/sec or more
50 Projets cibles Basculer d’une vision reporting à une vision temps réel Pourquoi : Un de vos services ne peut plus se contenter de reporting à J +1, nous sommes complémentaires à la BI. Comment : En identifiant un domaine visible, avec un avantage chiffrable en terme financier, qualitatif ou de maîtrise de risques.
51 Logistique & Energie Limite de stock pour un produit Retard de production Panne sur un système Position GPS de véhicules Suivi RFID d’objets Flux de consommation Equilibrage de charge Projets cibles
52 Telecom Pannes ou surcharge de réseau Suivi de parcours web Anomalie et fraude Optimisation geomarketing Projets cibles
53 Finance Limites client et alerte SMS Risques établissement, produit, secteur Opérations anormales Corrélation employés et activité AML, Market Abuse, KYP, KYC Projets cibles
54 Jeux et Web Le domaine du jeu massively multiplayer online game La publicité interactive Click analysis Projets cibles
55 Santé et Assurance Prestation Tarmed Montants et durées «anormaux» Patient au contentieux Détection de Germes et pandémies Sécurité à domicile Projets cibles
56 Mise en place d’une architecture et d’un savoir faire. Ce premier projet doit poser les bases en terme de savoir faire. Penser à la capitalisation et à l’extensibilité de notre périmètre. Nécessité d’architecturer les flux de la solution afin de respecter les besoins en terme de performance. Mise en place de test de plausibilité sur les règles. Démarche
57 Latence : quel temps de réaction voulons nous ? Events / Sec : quel volume en terme de transactions à la seconde Timeframe : Quelle est la période d’analyse Archive : Que doit-on archiver pour démontrer la pertinence Analyse des systèmes existants afin de s’assurer de l’interopérabilité. Pré-requis
58 Plan Introduction Présentation de système CEP Introduction architecture Démonstration Mise en place d’un projet CEP Conclusion CEP = Complex Event Processing
59 L’analyse de streaming doit s’appuyer sur des solutions simples et économiquement viables. SQL Server 2008 R2 vous apporte tous les composants nécessaires. Conclusion
60 Merci