Microsoft Cloud Data Platform

J’ai récemment eu l’occasion de faire une présentation de l’intégralité de la plateforme de données de Microsoft en me focalisant sur ses composantes Cloud et sur ses solutions de Business Intelligence à destination des utilisateurs. Je souhaitais aborder ce sujet de façon exhaustive tout en offrant une grille de lecture qui illustre la richesse et la cohérence de cette offre. Avec le flux continu de nouveautés sur ce thème, accéléré par les innovations sur Azure, il m’a donc semblé utile de proposer une matrice permettant de structurer cette présentation. C’est le résultat de ces réflexions que je souhaite aujourd’hui partager. L’objectif de ce document n’est donc pas d’étudier dans le détail chacune des composantes de l’offre Microsoft mais d’expliquer à quel type de problématique elles répondent et comment elles peuvent s’imbriquer dans une solution de bout en bout. Evidemment, comme souvent dans ce type d’exercice, certains de mes choix restent sujets à discussion, aussi je vous invite à considérer qu’il s’agit d’une première version et à me faire part de vos commentaires pour l’améliorer…

Introduction

La donnée élément clé du cycle de décision

Piloter plus efficacement un système d’information grâce à une meilleure utilisation des données suppose :

  • Un changement de culture qui permette à chacun dans l'organisation de prendre des décisions fondées sur ces données
  • La mise en place de processus et d’outils liés au cycle de vie des données et qui accélèrent leur flux dans toute l'organisation

L’objectif est donc de pouvoir répondre à différents types de question avec les solutions d’affichage ou de manipulation des données les plus adaptées :

  • Que s’est-il passé ? (Rapports statiques)
  • Pourquoi est-ce arrivé ? (Rapports interactifs)
  • Qu’est-il en train de se passer ? (Tableaux de bord temps réel)
  • Que va-t-il se passer ? (Prédictions)

 

Le cycle de vie des données

Le cycle de vie des données peut être décomposé selon trois axes :

  • Tout d'abord, comment collecter et ensuite gérer toutes les données entrant dans l'entreprise ? Au volume de données existant dans l’entreprise s’ajoutent aujourd’hui de nouveaux types de données telles que les données non structurées et les flux de données en continu (« streaming »). Il devient donc nécessaire de faciliter la capture et la gestion de ces données pour les préparer aux étapes suivantes de ce cycle.
  • Une fois ces données recueillies et gérées, il faut être en mesure de les transformer et les analyser et ce, quel que soit leur type, afin de s’assurer qu’elles soient prêtes à être exploitées.
  • Enfin, il faut pouvoir manipuler ces données en utilisant des outils permettant d’obtenir des réponses visuelles pour chaque question que l’on souhaiterait se poser afin de pouvoir prendre des décisions.

image

 

La plateforme de données Microsoft

Microsoft fournit une plateforme de données cohérente offrant la capacité à gérer le cycle de vie des données de bout à bout afin d’en obtenir la meilleure exploitation. Cette proposition de valeur est rehaussée par la flexibilité du choix des éléments constitutifs de la solution à déployer (Cloud ou OnPremise).
Plus concrètement, si l’on considère l’exemple suivant de flux de donnée au sein d’un système d’information, on se rend rapidement compte de la nécessité de proposer un découpage plus fin que la grille d’analyse sur trois axes précédemment évoquée.

image

Sur chacun des axes se distinguent de multiples sous-rubriques en fonction, par exemple, du type de données ou de la nature des transformations opérées. S’y ajoute également la notion de services applicatifs orientés données.
Voici donc la grille d’analyse que je propose afin de passer en revue l’ensemble des composantes de la plateforme de données de Microsoft, en la restreignant volontairement à ses composantes Cloud et aux solutions de Business Intelligence à destination des utilisateurs.

image

L’objectif de la suite de cet article est donc d’établir une correspondance entre chacun des blocs de ce schéma et une ou plusieurs briques de l’offre Microsoft.

Collecter et gérer l’information

Dans un premier temps, il s'agit donc de faire l’inventaire des solutions permettant de capturer et de gérer les données, qu’elles soient structurées ou non, statiques ou propagées en continu, à demeure ou dans le Cloud.

image

Base de données relationnelles

Azure SQL Database

Azure SQL Database est un service Cloud de mise à disposition de base de données SQL hautement disponible. Toutes les opérations d’administration et d’optimisation correspondantes sont entièrement prises en charge par Microsoft. Le « provisioning » d’un nouveau serveur ou d’une nouvelle base d’une taille maximale de 500 GB est réalisé en l’espace de quelques secondes. Le service est disponible sur l’ensemble des DCs Azure avec un SLA  de 99.99%. Il est facturé en fonction de la consommation (à l’heure) et propose 6 niveaux de performances pour 3 niveaux de service : Basic, Standard, et Premium. Il offre différentes options (« Self-service restore », « Active geo-replication », « Auto failover »). Azure SQL Database est compatible à 100% avec les outils (Management Studio), les frameworks de développement et les bases de données SQL Server 2014.

image
 
Azure SQL Database offre des fonctions avancées de backup et de réplication inter-datacenters. Les services déjà disponibles comme les Elastic Database Tools, mais surtout les nouveautés comme les Elastic Database Pools, complétés par les Elastic Database Query et les Elastic Database Jobs étendent les possibilités en permettant d’offrir un environnement Database-as-a-Service capable de gérer des charges non prédictibles pour des applications SaaS d’échelle très significative, sans remise en cause des outils de management ou de développement existants.

SQL Server en IaaS

Dans l’environnement IaaS (Infrastructure as a Service) proposé avec Azure, il est également possible d’installer et configurer un serveur SQL et ses services associés, de même que l’on peut déployer des bases de données relationnelles propriétaires Oracle, IBM DB2 ou issues du monde de l’Open Source comme MySQL.
En complément des bonnes pratiques habituelles (indexes, plans de maintenances, optimisation du schéma, des requêtes, de tempdb), il faut veiller à prendre en compte certaines spécificités liées au Cloud et notamment optimiser les entrées/sorties sur le stockage, qui, rappelons-le, est un stockage sur un système de fichiers accessible par le réseau. Il est notamment recommandé d’utiliser :

  • un maximum de disques via Disk Stripping (Windows Server Storage Spaces, jusqu’à 64 disques, séparer fichiers de données et fichiers de logs sur des pools distincts)
  • des achines G ou D (tempdb sur le disque temporaire SSD, Buffer Pool Extension si lecture intensive, sur machines G : In-Memory)
  • Azure Premium Storage et des machines DS (5000 IOPS par disque, max 50 000 IOPS par machine)

Des images pré-optimisées sont d’ailleurs fournies nativement dans la Galerie Azure (« SQL Server 2014 Enterprise Optimized for DataWarehousing on Windows Server 2012 R2 » et « SQL Server 2014 Enterprise Optimized for Transactional Workloads on Windows Server 2012 R2 »).

No SQL

Document DB

Document DB est un service de mise à disposition de base de données NoSQL entièrement géré par Microsoft Azure, à destination des applications Cloud, facilitant le développement itératif et l’évolution du modèle de données. Document DB offre un support natif pour JavaScript, les requêtes SQL, ainsi qu’un traitement transactionnel intégré de JavaScript associé à un modèle fondé sur des documents JSON sans schéma (« Self-describing », « self-contained ») et une indexation automatique.

 image

Table Storage

La plateforme Microsoft Azure offre des services de stockage reposant sur un mécanisme scalable et hautement  disponible (avec une géo-réplication en option) permettant de gérer des volumétries de données très conséquentes, de les exposer via API REST pour un usage intra-Datacenter ou extérieur et de les sécuriser. Au sein de ces services, Azure Table Storage offre des fonctions NoSQL de type « clé/valeur » pour les applications devant stocker de grandes quantités de données non structurées. Les tables constituent un service géré certifié ISO 27001, capable d'évoluer automatiquement pour prendre en charge un débit et un volume conséquents jusqu'à 500 téraoctets, accessible de n'importe où, via des API REST ou des API managées.

Données non structurées

Azure Blob Storage

Autre composante des services de stockage Azure, les Blobs constituent la manière la plus simple de stocker d'importants volumes de données binaires ou de textes non structurés tels que des fichiers vidéo, audio et des images. Il s’agit également d’un service géré certifié ISO 27001, ouvert à des API REST ou managées.

Azure Premium Storage

Avec l'introduction de Premium Storage, Microsoft Azure offre maintenant deux types de stockage durable : Premium et Standard. Le stockage Premium se distingue en permettant de conserver les données sur des disques SSD (« Solid State Drive »). Il est particulièrement adapté aux scénarios OLTP, Big Data et Data Warehousing  (pour des plateformes telles que SQL Server, MongoDB, Cassandra,…) exigeants en termes de performances sur les entrées-sortie et de faible latence (moins de 1ms de latence en lecture). Premium Storage est actuellement disponible pour les Page Blobs et les disques de données utilisés par les Machines virtuelles (Jusqu’à 32 To par machine virtuelle et 50 000 IO/s par machine virtuelle).

WASB

WASB est une implémentation de HDFS (Hadoop Distributed File Store) sur Azure Blob Storage pour le service HDInsight (que nous verrons un peu plus loin dans la suite de cet article). Il constitue une alternative au système de fichiers distribués attachés localement sur les nœuds de calcul d’un cluster Hadoop, avec un accès proposé en utilisant l'URI complet : HDFS: / / <namenodehost>/<path>. Avec WASB, les mêmes données peuvent être stockées dans les Blob Azure. Pour leur usage HDInsight, la syntaxe est : wasb [s]:// <containername>@<accountname>.blob.core.windows.net/ <path>.

image

Azure HDInsight HBase

Azure HDInsight HBase est le service qui permet de configurer dans Azure des clusters HBase pour stocker de gros volumes de données directement dans le stockage Blob Azure avec une faible latence et les analyser avec des jobs Hadoop. HBase est une base de données Apache Open Source NoSQL « orientée colonne » construite sur Hadoop. Elle fournit un accès aléatoire et une forte cohérence pour grandes quantités de données non structurées et semi-structurées. Les données sont stockées dans les lignes d’une table et regroupées au sein d’une ligne par « famille de colonne ». La scalabilité de HBase (fondé sur le modèle « BigTable » de Google) lui permet de gérer plusieurs pétaoctets de données sur des milliers de nœuds. L’implémentation HDInsight HBase se fonde sur l’architecture de scale-out de HBase pour offrir un sharding automatique des tables, une forte cohérence pour les lectures et écritures et un basculement automatique. La performance est renforcée par la mise en cache en mémoire sur la lecture et un débit élevé en écriture.

Data Lake

Azure Data Lake est un référentiel construit comme un magasin de fichiers distribués à très grande échelle, sans limite de taille, pour le traitement analytique de  données volumineuses. Cela permet de stocker au même endroit de multiples types de données (relationnelles, non relationnelles,…) avant toute définition formelle de schéma ou contrainte de transformation et de les analyser dans leur format natif. Azure Data Lake est compatible avec HDFS (Hadoop Distributed File Store - WebHDFS 2.7), ce qui favorise son intégration avec des solutions Hadoop comme Azure HDInsight, Hortonworks, and Cloudera et le rend accessible par l’ensemble des projets Open Source compatibles HDFS (Spark, Storm, Flume, Sqoop, Kafka, R,...). Il fournit un stockage illimité, la possibilité de stocker des fichiers uniques de taille de l’ordre du pétaoctet avec des accès en lecture/écriture bénéficiant d’une haute fréquence et d’une faible latence, qui sont adaptées aux flux volumineux du Big Data.
 
image

Collecte de données en streaming

L’ingestion de données peut être gérée de multiples façons dans Azure.

Azure Service Bus

Azure Service Bus est un service middleware Azure fondé sur la mise en œuvre d’un pattern de « publication/souscription ». Il permet de séparer le trafic de messagerie entre de multiples rubriques (les Service Bus Topics) afin de maximiser le débit.

Azure Event Hub

Event Hub est un service de collecte de données en streaming qui se distingue par sa capacité à proposer un service de réception évolutif, capable de prendre en charge des profils de charge variables, ainsi que des pics causés par une connectivité intermittente. Event Hub offre en effet un mécanisme de type publication-souscription pouvant recevoir des millions d’événements par seconde, tout en conservant l’ordre des évènements. La prise en charge de protocoles standards comme AMQP ou HTTPS permet à de nombreuses solutions de pouvoir interagir avec Event Hub. Des bibliothèques clientes natives existent également pour les plateformes les plus courantes.

Transformer et analyser les données

Le monde connecté d’aujourd’hui est défini par le Big Data. En effet, une fois les données collectées, il est nécessaire de les stocker et de les transformer, sachant que les devices et applications connectés peuvent produire des volumes de données très importants.

image

Intégration et orchestration

Azure Data Factory

Azure Data Factory est un service Cloud entièrement géré qui le facilite l’intégration des étapes de stockage, de traitement, et de mouvement de données au sein de pipelines de production, évolutifs et fiables. Azure Data Factory facilite la coordination et la gestion des sources de données relationnelles et non-relationnelles à demeure ou dans le Cloud (SQL Server, Azure Blob, Tables, HDInsight, SQL Databases,…). L’accès aux données locales est pris en charge via une passerelle de gestion des données qui permet une configuration et une sécurisation des connexions aux serveurs SQL locaux. Les mécanismes natifs de supervision d’Azure Data Factory permettent de considérablement réduire les coûts opérationnels.

Power Query

Power Query est un addin Office qui permet de facilement découvrir des données provenant de sources de données publiques ou d'entreprises. Il inclut des fonctions de recherche, ainsi que des capacités de transformation et fusion de données provenant de plusieurs sources. 

Data Warehouse et analyse historique des données

Azure Data Warehouse (Preview)

Azure SQL Data Warehouse est une solution Cloud de DataWarehouse-as-a-service bâtie sur l'architecture de traitement massivement parallèle de SQL Server. Ce service peut dynamiquement se redimensionner en fonction des requêtes (avec une facturation à l’usage). Il permet aux utilisateurs d'utiliser leurs compétences T-SQL existantes pour exécuter des requêtes sur un ensemble de données structurées et non structurées, sur des volumes de l’ordre du pétaoctet. Il supporte les requêtes Polybase qui permettent de requêter simultanément des données Hadoop et des données relationnelles et s'intègre avec les outils existants et des solutions comme Azure HDInsight, Azure Machine Learning, Azure Data Factory ou PowerBI.

Power Pivot

Power Pivot est un addin Excel qui permet de modéliser et transformer très rapidement de gros volumes de données (des millions de lignes) grâce au moteur analytique en mémoire x-velocity (algorithmes Vertipaq). Il permet d’importer ces données de multiples sources (bases de données relationnelles, multidimensionnelles, services Cloud, fichiers Excel, fichiers texte et données sur le Web) dans un seul classeur Excel. Il permet de créer des modèles mettant en œuvre des relations entre des données hétérogènes, de créer des colonnes calculées à l'aide de formules et des mesures personnalisées associées à des indicateurs de performance clé, construire des tableaux et des graphiques croisés dynamiques, afin de pouvoir analyser les données.

Big Data

Azure HDInsight  Hadoop

Azure HDInsight Hadoop est une distribution Apache Hadoop proposée sur le Cloud Microsoft Azure. Hadoop est un framework Open Source Apache qui cible les applications distribuées qui consomment des gros volumes de données. Il est composé de multiples projets. HDFS (Hadoop Distributed File System) est le système de fichiers de Hadoop. Il permet un stockage distribué de fichiers très volumineux (du gigaoctet à plusieurs téraoctets) sur plusieurs ordinateurs. MapReduce est le modèle de programmation qui effectue les opérations de filtrage, de tri et d'autres commandes liées à l'obtention et à la transformation de données en appliquant des algorithmes parallèles et distribués. A ces briques Hadoop s'ajoutent des projets Open Source comme HBase, R, cochon, ruche, Flume, cornac, Avro, Zookeeper, .... Le service HDInsight est architecturé pour gérer et analyser une quantité quelconque de données non structurées ou semi-structurées en proposant des extensions de programmation pour de nombreux langages tels que C#, Java et .NET.

image

Azure HDInsight Spark (Preview)

Azure HDInsight Spark est le service Azure permettant de provisionner, en une dizaine de minutes, un cluster de serveurs pré-configurés avec le framework Open Source Apache Spark afin d’offrir un traitement parallèle de données pour les applications analytiques du Big Data. Les capacités de calcul du moteur Spark sont optimisées pour travailler en mémoire, privilégier la vitesse et la facilité d'utilisation. HDInsight Spark est compatible avec stockage Blob Azure (WASB). Il permet également l’analyse de données en temps réel, grâce aux connecteurs natifs de Spark, qui permettent d'ingérer des données provenant de nombreuses sources (Kafka, Flume, Twitter, ZeroMQ, sockets TCP) et grâce au support d’Azure Event Hub. 
 
image

Analyse temps réel

Azure Stream Analytics

Le service Azure Stream Analytics est issu des travaux de Microsoft Research. Ce moteur de traitement d’événements permet de traiter des informations issues de multiples sources, notamment les données en provenance d’Event Hub, afin d’analyser en « temps réel » des millions d’événements par seconde.  Stream Analytics permet de comparer plusieurs flux en temps réel, et d’intégrer dans l’analyse des valeurs et des modèles historiques en bénéficiant d’un débit élevé, d’une faible latence et d’une résilience garantie. Stream Analytics permet ainsi la détection des anomalies, la transformation des données entrantes, l’alimentation de tableaux de bord en temps réel et offre la possibilité de déclencher une alerte lorsqu’une erreur ou condition spécifique apparaît dans le flux. Stream Analytics propose un langage SQL pour décrire les transformations souhaitées en fournissant une gamme d’opérations sur une fenêtre d’observation temporelle permettant d’appliquer de simples filtres ou des agrégats plus complexes.
  image

Event Processor Host

Il est possible de développer un service d’analyse en temps réel des données issues de l’Event Hub en implémentant l’interface IEventProcessor et en enregistrant l’objet correspondant dans un EventProcessorHost, qui est thread safe. Au final, une seule interface à connaître et la beauté de cette interface, c'est qu‘elle masque complètement la complexité de ce type de traitement. En effet, du point de vue du développeur, il suffit de parcourir et filtrer une boucle de messages.

image

Azure HDInsight Storm (Preview)

Azure HDInsight Storm est le service qui permet de configurer dans Azure un cluster Apache Storm managé. Apache Storm est un système de calcul Open Source distribué et résilient, pour le traitement de données, en temps réel, avec Hadoop. Ces données peuvent être issues de files d’attente Service Bus ou Hub Event. Les clusters HDInsight Storm peuvent également être configurés sur un réseau virtuel Azure (VNET) extensible avec un VPN, afin d’offrir une communication sécurisée vis-à-vis de ressources localisées au sein d’un DataCenter privé.

image

Analyse prédictive

Azure Machine Learning est un service intégralement géré par Microsoft Azure. Il permet de prévoir les futurs comportements ou tendances, en fondant ces analyses prédictives sur des données précédemment collectées. Azure Machine Learning offre une expérimentation rapide pour créer un meilleur modèle avec l’aide de bibliothèques de modèles réutilisables. Il permet une composition visuelle de bout en bout sur le flux de données et supporte l’environnement de programmation Open Source « R » pour les statistiques et l’exploration de données. Enfin, il est possible de déployer le modèle comme un Service Web hébergé dans Azure.

image

Manipuler l’information et prendre des décisions

Les données ne commencent à avoir de la valeur qu’à partir du moment où l’on est en mesure de les manipuler pour en retirer de nouvelles connaissances. Les solutions à mettre en place doivent proposer une vue de bout à bout de tous les types de données (structurées, non structurées, précédemment archivées ou mis au rebut).
Même si ces données ont été intégrées ou transformées, elles ne sont pas nécessairement localisées au même endroit : il faut donc pouvoir offrir un accès sécurisé à de multiples sources (données internes ou résidant dans les solutions SaaS et autres emplacements externes). Chacun doit avoir la possibilité de pouvoir prendre des décisions sur la base de ces données. Il faut donc rendre ces données disponibles en fonction de l’utilisateur, de ses niveaux d’accès, de ses besoins, et du moment. Enfin, ces données doivent être accessibles en situation de mobilité quel que soit le lieu, l’instant, ou le device utilisé…

image

Power View

Power View est un addin Excel qui permet de facilement créer des rapports visuels interactifs et qui offre une vue analytique par le biais de cartes interactives ou graphiques pour faciliter l’exploration des données et la collaboration autour de la visualisation de ces données.

image

Power Map

Power Map est un addin Excel qui s’inspire des travaux de Microsoft Research sur le projet « WorldWide Telescope ». Il ajoute une nouvelle dimension en offrant la possibilité de tracer visuellement des données géographiques et temporelles sur Bing Maps, d'analyser ces données en 3D et de créer des visites interactives que l’on peut partager.

Power BI

Power BI est service Cloud d'exploration de données visuelles qui permet d'analyser les données et créer des rapports. Il intègre des fonctions d’acquisition et de préparation des données similaires à celles de Power Query. Il permet la consolidation de plusieurs sources de données, à demeure ou dans le Cloud, pour définir leur structure, leur transformation, leur analyse, leur exploration, puis leur partage sécurisé au sein de l’organisation. Les rapports interactifs sont construits en ligne ou avec Power BI Desktop par simple drag-and-drop d’une large gamme de contrôles de visualisation de données. Ils sont accessibles en ligne (HTML5), via Power BI Desktop ou depuis une application mobile.

 image

Datazen

Datazen est une solution récemment acquise par Microsoft, qui offre des fonctions très avancées de visualisation interactive de données et d’indicateurs de performance sur des scénarios connectés ou déconnectés pour tout type de device.

image[105]

Services de données d’application

Lorsque l’on souhaite bâtir une application dans le Cloud, il y a de multiples points à considérer pour implémenter certaines fonctions comme la recherche, ou pour améliorer la réactivité et les performances par des mécanismes de cache. Il devient alors pertinent de s’intéresser à la mise en œuvre de services applicatifs orientés données (cache, service de recherche, …).

image

Cache Applicatif

En fournissant un accès optimisé sur les données via un stockage en mémoire (localement ou sur un service dédié), les différents services Microsoft Azure Cache offrent un premier niveau de réponse à ce type d’exigence. Les services de Cache ajoutent des options de contrôle et de résilience supplémentaires telles que la haute disponibilité pour garantir que les données mises en cache soient conservées.

In-Role Cache

Il s'agit d'un cache auto-hébergé, accessible via le SDK Azure permettant d'effectuer la mise en cache à l'aide d'une instance dédiée Web Role ou de Worker Role pour une application déployée dans un Cloud Service PaaS. Cette solution offre une certaine flexibilité en termes d'options de déploiement et de taille, mais se limite à ce contexte d’utilisation. La facturation correspond à celle du Cloud Service hébergeant le Cache.

Azure Redis Cache

Azure Redis Cache est un service construit sur la solution Open Source Redis Cache. Ce service donne accès à un cache Redis sécurisé, dédié et géré par Microsoft. A la différence du In-Role Cache, un cache créé à l'aide d'Azure Redis Cache est accessible depuis n'importe quel type d’application Azure.

Service de recherche

Azure Search est un service Cloud qui facilite l'ajout de fonctions de recherche à un site web ou une application. Ce service est fondé sur le moteur de recherche Elasticsearch. Il offre donc la recherche « full-text », ainsi que des fonctions plus avancées telles que les suggestions de requête basées sur une saisie partielle, le surlignage et la navigation à facettes. Il intègre le support du langage naturel, en appliquant des règles linguistiques en fonction de la langue spécifiée. Enfin, et surtout, il est entièrement géré. Cette approche « Search as a Service » élimine la complexité liée à la configuration ainsi qu’à la gestion d’un index de recherche et permet de bénéficier d’une haute disponibilité sur le service, de son adaptation à la charge (capacité de stockage et de recherche) et des mises à jour du moteur.

Conclusion

Microsoft propose une plate-forme de données complète et cohérente pour gérer le cycle de vie des données en offrant une totale flexibilité sur le choix de solution à demeure ou dans le Cloud. Le périmètre traité dans cet article était volontairement limité aux services orientés données de la plateforme Cloud Microsoft Azure et leur utilisation conjointe avec la gamme d’outils Microsoft de Business Intelligence accessibles en mode Self-Service.
La matrice suivante établit une correspondance entre chacune des dimensions liées au cycle de vie des différents types de données et la ou les briques proposées par Microsoft pour répondre aux problématiques sous-jacentes.

image