Le chemin du CEP (Complex Event Processing) vers le Cloud - de StreamInsight à Azure Stream Analytics. Concepte de traitement d'évènements en temps réel et CEP as a Service dans Azure.
3. SQLSaturday Paris 2016
Votre speaker : MARIUS ZAHARIA
Senior Cloud Architect, Cellenza
MVP Azure
Azure Advisor
P-SELLER Azure, Microsoft
Community Manager, AZUG FR
4. SQLSaturday Paris 2016
De StreamInsight à Azure Stream Analytics
Le traitement des évènements
Besoins / scénarii type
Moteurs CEP : la solution
StreamInsight : le (premier) CEP de Microsoft
Azure Stream Analytics : la réponse Cloud
Principes de traitement temporal
Modèles / patterns de requêtes
StreamInsight et Stream Analytics : face à face
Conclusion
5. SQLSaturday Paris 2016
Le traitement des évènements (rappel ?)
Traitement des évènements : méthode de suivi et analyse des flux
d’information par rapport à des repères (évènements) dans le
temps.
Traitement complexe des évènements (Complex Event Processing
- CEP) : traitement en temps réel
De sources singulières ou multiples d’évènements
Possiblement par rapport à des données de référence
Pour identifier des modèles de répétition complexes
6. SQLSaturday Paris 2016
Besoins / scénarii type
Monitoring de réseau
Surveillance intelligente
Gestion et analyse des risques
Commerce électronique
Suivi des ventes
Détection des fraudes
Routage de commandes
intelligent
Analyse des coûts de transaction
Objets connectés
(des capteurs aux voitures et avions)
Gestion des stocks
Analyse des flux web
Alertes financières (portefeuille)
Analyse de prix
Gestion des données de marché
Trading algorithmique
Enrichissement de données
7. SQLSaturday Paris 2016
Moteurs CEP : la solution
Moteurs de Complex Event Processing
TIBCO BusinessEvents / StreamBase
Oracle CEP
WebSphere Business Events
Sybase / SAP ESP
Fujitsu
… Microsoft ?
8. SQLSaturday Paris 2016
StreamInsight : le (premier) CEP de Microsoft
Résolution du problème – en manière spécifique:
Moteur d’exécution: embarqué (dans l’application) ou
serveur « standalone »
Principes: application / adaptateurs in/out /
requête / event / « payload »
Application CEP :
Développement en .NET
Requêtes : LINQ (en .NET)
Adaptateurs développés sur mesure;
exposés en Web Services WCF
var payloadByRegion =
from i in inputStream
group i by i.Region into byRegion
from c in byRegion.HoppingWindow(
TimeSpan.FromMinutes(1),
TimeSpan.FromSeconds(2),
HoppingWindowOutputPolicy.ClipToWin
dowEnd)
select new {
Region = byRegion.Key,
Sum = c.Sum(p => p.Value)
};
10. SQLSaturday Paris 2016
Azure Stream Analytics : la réponse Cloud de Microsoft
Evolution de la résolution:
Application => Job Stream Analytics
Adaptateurs => Entrées et sorties standardisées:
Entrées: Event Hub, IoT Hub (flux), Blob Storage (flux et données de référence)
Sorties: SQL Database, DocumentDB, Topic ou Queue Service Bus, Blob ou Table Storage,
PowerBI !
Formats entrée/sortie: JSON, CSV, (Apache) Avro
Requêtes: type « SQL »
Provisionnement et démarrage très rapide et facile
Scalabilité x1 – x50 (extensible à la demande)
Possibilité de tester des différentes étapes
13. SQLSaturday Paris 2016
Principes de traitement temporal
Temps applicatif vs temps de l’exécution
Intervalles (fenêtres) de temps
« Tumbling »
« Hopping »
« Sliding »
« Snapshot »
« Count »
Agrégations (group by)
Remise en ordre des évènements désordonnés
Traitement des évènements tardive
14. SQLSaturday Paris 2016
Principes de requetage (focus sur Azure SA)
Types de données:
simples (bigint, nvarchar, float, datetime, …)
Complexes : types tableau (array) ou enregistrement (record)
Eléments de langage: SELECT, FROM, INTO, JOIN, GROUP, …
Certains sont plus spécifiques : APPLY, Reference Data JOIN
Gestion temporelle: TIMESTAMP BY, décalage de temps, remise en
ordre
Fonctions (incluses): Scalar (Conversion, Date & Time, Mathematical,
String), Record, Analytic, Aggregate, Geospatial
Autres fonctions pourront être créées sur mesure
15. SQLSaturday Paris 2016
Référence des constructs de langage (Azure SA)
Commandes
• SELECT
• FROM
• WHERE
• GROUP BY
• HAVING
• CASE
• JOIN
• UNION
Extensions de type fenêtre de temps
• Tumbling Window
• Hopping Window
• Sliding Window
• Duration
Fonctions Agrégates
• SUM
• COUNT
• AVG
• MIN
• MAX
Fonctions pour la mise à l’échelle
• WITH
• PARTITION BY
Fonctions date / temps
• DATENAME
• DATEPART
• DAY
• MONTH
• YEAR
• DATETIMEFROMPARTS
• DATEDIFF
• DATADD
Fonctions chaîne
• LEN
• CONCAT
• CHARINDEX
• SUBSTRING
• PATINDEX
Fonctions Statistiques
• VAR
• VARP
• STDEV
• STDEVP
22. SQLSaturday Paris 2016
StreamInsight et Stream Analytics : face à face
• Intervalles temporels
StreamInsight Stream Analytics
Hopping vs Hopping
Tumbling vs Tumbling
- vs Sliding
Snapshot vs -
Count vs -
23. SQLSaturday Paris 2016
StreamInsight et Stream Analytics : face à face
• Entrées et Sorties
StreamInsight: adaptateurs
customisés.
On peut accepter tout type
d’entrée et format
Nécessite du
développement spécifique
Stream Analytics: multitude
de types d’entrées et
sorties, tous prêts à l’emploi
Format prédéfini: CSV,
JSON, Arvo
Moins flexible sinon: pas de
connectivité directement
24. SQLSaturday Paris 2016
StreamInsight et Stream Analytics : face à face
• Exécution / déploiement
StreamInsight:
Unité:
« application StreamInsight »
« process »
Moteur embarqué dans une
application .NET, ou
Serveur autonome (dans une
machine) accessible via web service
WCF
Installation: via installer StreamInsight
Déploiement: applicatif .NET (binaries,
service, endpoints, …)
Stream Analytics:
Unité: « job »
Moteur hébergé dans Azure.
Service en mode PaaS; pas de
visibilité sur le fonctionnement
interne
Installation: rien à faire
Déploiement: service Azure (portail,
PowerShell/CLI, REST API)
25. SQLSaturday Paris 2016
StreamInsight et Stream Analytics : face à face
• Extensibilité
StreamInsight:
Adaptateurs customisés
Format entrée/sortie
customisable
Encoding customisé
User Defined Aggregates /
Fonctions customisées
Stream Analytics:
Pas d’entrées / sorties
customisées
Format fixe (JSON, CSV, Avro)
Encoding: UTF-8
Pas de UDF ou équivalent
Fonctions custom Machine
Learning possibles (en preview)
26. SQLSaturday Paris 2016
StreamInsight et Stream Analytics : face à face
• Evolutivité
StreamInsight:
Produit « mature »
Evolutions mineures
uniquement
Stream Analytics:
General availability
Plein développement
Très évolutif
Mises à jour en rythme Cloud
27. SQLSaturday Paris 2016
StreamInsight et Stream Analytics : face à face
• Scalabilité, disponibilité
StreamInsight:
Embarqué: mono-fil
Serveur autonome: parallélisme
en multi-fil possible (y compris
pour la même requête); gestion
manuelle
Scalabilité: distribution multi-
machine possible
HA: possible si déployé en
mode distribué
Stream Analytics:
Fonctionne potentiellement
en parallélisme; gestion
automatique
Scalable via Unités de
streaming: 1-48
HA: 99,9%
28. SQLSaturday Paris 2016
StreamInsight et Stream Analytics : face à face
• Cout d’utilisation
Licence SQL Server
StreamInsight Standard
StreamInsight Premium =
SQL DataCenter
A la consommation
Per unité de streaming
Per volume de données
traitées
29. SQLSaturday Paris 2016
StreamInsight et Stream Analytics : face à face
• Monitoring et dépannage
StreamInsight:
Monitoring et compteurs de
performance Windows;
compteurs et alertes
customisés (développer)
tooling spécifique dédié
(Flow Debugger);
Stream Analytics
Journaux (logs) – Portail
Azure + API
Test des requêtes (upload
fichiers)
Alertes configurables
30. SQLSaturday Paris 2016
Conclusions – StreamInsight vs Stream Analytics
CEP : certainement un concept plein d’avenir (et de présent !)
StreamInsight : bon pour des applications autonomes, voire
embarquées
Nécessite un investissement de développement
Stream Analytics : partout ou le cloud est une solution viable
Onboarding et setup plus rapide
Scalable et flexible
Paiement à l’utilisation, cout d’entrée accesible