Posts taggés API

techdays_blog2

Ambient Intelligence & Big Data

0

Ambient Intelligence

Les Techdays 2015, organisés par Microsoft, furent l’occasion d’assister à de nombreuses conférences centrées autour du thème de l’Ambient Intelligence. Selon Microsoft, l’Ambient Intelligence est à la fois une vision et déjà une réalité, rendue possible par les avancées technologiques de l’électronique, du cloud, du Big Data et du machine learning. C’est une représentation d’un univers hyper connecté dans lequel la technologie anticipera nos besoins et nos intentions et qui sera centré sur les objets et les interconnexions entre eux. C’est également une réalité car les applications et les objets qui tirent profit de nos actions et des informations à notre disposition existent déjà et nous permettent de faire plus et mieux.

Cette vision est présente principalement dans les différents secteurs suivants :

  • Domotique
  • Internet des objets
  • E-Santé
  • Les villes intelligentes

 

Dans cet article nous nous consacrerons essentiellement à l’internet des objets.

Internet des objets

L’Internet des objets, ou Internet of Things (IOT) en anglais, représente l’extension d’Internet à des choses et à des lieux du monde physique. Il est en partie responsable de l’accroissement du volume de données générées sur le réseau à l’origine du Big Data. Il n’y a pas de définition officielle pour ce terme mais on peut utiliser la définition suivante :

« L’internet des objets est un réseau de réseaux qui permet, via des systèmes d’identification électronique normalisés et unifiés, et des dispositifs mobiles sans fil, d’identifier directement et sans ambiguïté des entités numériques et des objets physiques et ainsi de pouvoir récupérer, stocker, transférer et traiter, sans discontinuité entre les mondes physiques et virtuels, les données s’y rattachant. »

Ce terme est également utilisé pour parler des objets connectés.

L’élément principal d’un objet connecté est le microcontrôleur. Il s’agit d’un circuit programmable capable d’exécuter un programme et qui possède des circuits d’interface intégrés avec le monde extérieur. Il est composé d’un processeur (CPU), de mémoire morte (ROM), de mémoire vive (RAM) et d’entrées-sorties (I/O).

Pour pouvoir déployer le programme sur le microcontrôleur, il faut utiliser un programmateur en tant que passerelle avec l’ordinateur du développeur. Il est également possible d’utiliser des cartes programmables tel qu’Arduino ou encore Raspberry Pi. Les cartes de type Arduino sont des circuits imprimés programmables possédant un microcontrôleur ainsi que des entrées-sorties. Celles de type RaspberryPi possèdent des systèmes d’exploitation intégrés ce qui permet au développeur de les utiliser comme n’importe quel autre ordinateur. Pour citer un exemple d’objet connecté, on peut parler du bracelet Myo. Il s’agit d’un bracelet connecté qui peut envoyer un signal en fonction d’une liste de gestes réalisés par l’utilisateur.

 

Trailer du bracelet Myo
 

Big Data

Le Big Data (parfois appelé données massives ou mégadonnées en français) est un concept qui désigne des ensembles de données si volumineux qu’ils nécessitent de nouveaux outils de gestion de base de données afin d’être stockés, croisés puis analysés pour en obtenir une information utilisable par l’utilisateur final. Le Big Data occupe une place importante dans l’internet des objets. Il est la plaque tournante de la masse de données échangées entre les différents objets.

Le Big Data repose sur trois principes :

Volume

Le volume décrit la quantité de données générées par des entreprises ou des personnes. C’est en général la principale caractéristique à laquelle le Big Data est associé. Les entreprises, avec des volumes dépassant souvent le téraoctet de données doivent trouver un moyen de gérer cette quantité en constante évolution.

Variété

De nos jours, les entreprises sont confrontées au stockage de données de type de plus en plus varié fournis par les réseaux sociaux, les interactions Machine to Machine et les terminaux mobiles en évolution continue. Ces données peuvent aller de coordonnées de géolocalisation à des flux de réseaux sociaux.

Vélocité

Devant l’envergure des données à traiter, il est essentiel pour les entreprises de pouvoir traiter ces informations aussi vite que possible. Beaucoup d’entre elles échouent dans ce domaine fautes de CRM ne pouvant analyser les données en temps réel. En effet, la vitesse de génération et stockage des données tend à évoluer si rapidement avec les nouvelles technologies que le temps que celles-ci soient analysées, elles ne soient déjà plus contractuelles.

 

Le traitement des informations en Big Data se réalise en trois étapes :

Stockage

Comme évoqué précédemment, le stockage de flux de données, très volumineux, requiert des infrastructures spécifiques. Extrêmement mutables, ces données sont en général stockées au travers de bases dans un format « schemaless ». De nos jours, de tels services sont notamment proposés par Microsoft Azure et son système de stockage ou encore Document DB.

Croisement

Afin de pouvoir exploiter les informations stockées, il faut ensuite choisir les critères sur lesquels les analyses auront lieux. En général il s’agit d’une donnée commune aux entrées stockées. On peut penser à l’âge, au sexe et à la localisation d’une personne par exemple dans le cadre d’une étude sociale.

Analyse

C’est le résultat attendu par l’utilisateur final, ou les fournisseurs des données traitées. Il s’agit de donner un propos aux résultats obtenus suite au croisement. La donnée devient alors une information. Dans le cadre d’un entrainement physique, on peut penser à l’ajustement du programme prescrit par exemple.

Afin d’accompagner les besoins de traitements complexes nécessaire dans l’analyse des données, et notamment dans l’analyse prédictive des données qui a pour but de prédire le comportement d’une entité à partir des données qu’elle génère, il existe maintenant de nombreux outils de Machine Learning.

Microsoft, à l’instar de ses concurrents (Amazon, Google, …), a ainsi intégré à Azure des services de Machine Learning. Il existe ainsi des techniques et des langages de programmation spécialisés dans l’analyse de données, tel que R.

 

Profils

Parce que le Big Data demande des compétences spécifiques, on voit apparaître ces derniers temps de nouveaux profils transverses qui accompagnent son essor. Il n’existe pas de définitions formelles de ces nouveaux postes. On parle le plus souvent de Data Analyst mais il devient fréquent de faire la distinction entre Data Engineer et Data Scientist. Bien que, jusqu’à très récemment, il n’existait pas de cursus pour ces profils, des formations commencent à apparaître afin de répondre aux besoins colossaux des grands groupes industriels et technologiques.

Data Engineer

Il est chargé de l’aspect architecture. Son travail est de s’assurer que l’architecture et les programmes permettent d’accéder aux données de façon rapide, simple et claire. Par exemple il va s’occuper du design des bases de données, la récupération des données et de la création d’API et de WebAPI pour permettre d’en faire l’analyse. C’est donc avant tout un profil technique en informatique autant à l’aise en développement qu’en administration de bases de données qu’elles soient relationnelles ou non.

Data Scientist

Une fois que les données existent et sont accessibles, c’est au Data Scientist de procéder à leur analyse. Il va devoir acquérir des connaissances propre au secteur d’activité de l’entreprise et au contexte des données qu’il va traiter. Il a bien entendu une bonne connaissance des langages d’accès aux données (SQL) mais également des outils de Machine Learning, Data Mining et de modélisation de données. Il s’agit bien souvent d’un statisticien reconverti en développeur possédant une bonne culture générale ainsi que de bonnes capacités en communication.

Data Analyst

Le Data Analyst est un mélange des deux profils précédents. Parfois ingénieur ou statisticien, il peut également être issu de parcours managériaux pour les études touchant au B.I., avec de solides compétences en Excel et en modélisation. Seul, il peut déjà offrir des conclusions intéressantes et des éléments de réponses  pertinents à son entreprise afin d’améliorer les décisions prises. Cependant, tout projet complexe nécessitera des profils plus spécialisés comme des Data Engineer et Data Scientist présentés précédemment.

 

Conclusion

Les TechDays furent ainsi l’occasion de mettre en lumière cette nouvelle discipline liée à l’essor des objets connectés. Alors qu’hier les données étaient générées directement par les utilisateurs, avec ce que cela  implique concernant leur quantité et leur qualité, l’Ambient Intelligence vise aujourd’hui à automatiser la collecte de ces données, notamment via les objets connectés et les initiatives autour de l’Open Data, afin d’améliorer les services proposés. La masse de données  en augmentation constante issue de cette transformation a donc entrainé la formation de nouveaux profils spécialisés  et de nouveaux outils capables de les aider à traiter cette quantité phénoménale d’informations. On peut gager que ce n’est que le début de cette révolution qui sera au cœur des décisions de demain dans les grandes entreprises  avec un réel impact sur notre quotidien.

 

Introduction à Propel 2 par William Durand

1

Le nouveau Lead Developper William Durand (@couac) a présenté la future version de l’ORM Propel. La conférence ne s’adressait pas uniquement aux nouveaux utilisateurs Propel, car elle était divisée en deux parties :

  • présentation de Propel 1.6
  • présentation de Propel 2

Cette nouvelle version est une refactorisation complète de l’ORM Propel 1.6, qui lui même est déjà porté en PSR-0.

Pour rappel, PSR-0 a pour but d’éviter la mise en œuvre de plusieurs mécanismes d’auto-chargement de classes lorsque l’on utilise des composants provenant de projets différents. Ce mécanisme se base sur un certain nombre de règles concernant à la fois le nom des fichiers, leur contenu ainsi que leur organisation.

Nombre de personnes associent Propel à un ORM Active Record, mais ce n’est pas le cas, les concepts de table et l’enregistrement sont séparés. On y retrouve même l’API Active Query qui permet d’écrire les requêtes SQL comme des phrases.

 

Par exemple :

 

<?php

use Acme\Job;

$jobs = JobQuery::create()
       ->_if(preg_match('/^[A-Z]{2}$/', $location))
             ->filterByCanton($location)->
       ->_else()
             ->filterByCity($location)->
       ->_endif()
       ->find();

 

A la différence de Doctrine 2 (l’autre acteur du marché des ORM PHP), Propel 2 reste sur de la génération de code et se veut ainsi être plus rapide, facilitant ainsi  les développements.

Propel utilise également beaucoup de Behaviors (portion de code réutilisable dont on dispose dans nos fonctions métier), tels que :

  • l’archivage : fonctionne sur le model du soft-delete. Avec ce système l’objet supprimé est alors déplacé dans une autre table, ce qui a un impact sur les tables contenant des milliers d’entrées car cela réduit le nombre de données à traiter.
  • Nested set : qui permet de représenter des données hiérarchisées dans une base de données relationnelle.
  • Géocodable : qui permet de localiser une entrée automatiquement si les champs street et city ont été définis et renseignés.
  • Mais bien d’autres encore comme Agregate Colum, Delegate, i18n, Timestampable, Sortable, etc

Tous les behaviors sont disponibles depuis Propel 1.6 et font désormais partie du corps. De ce fait, ils seront toujours maintenus dans la nouvelle version.

Un autre avantage de Propel, qui a un impact direct sur les temps de réponse, est la pré-génèreration de requêtes SQL. Par exemple pour les recherches par clef primaire.

Pour cette nouvelle version de Propel, l’équipe s’est essentiellement concentré sur le cœur de métier, c’est-à-dire l’ORM, et a décidé de réutiliser des composants proposés par la communauté. Notamment  les 5 composants Symfony2 suivants :

Ce qui à permis de supprimer beaucoup de code existant et de l’homogénéiser. Par exemple si on n’utilise pas le validator Propel, on n’a pas de code généré évitant ainsi de polluer le code. Il ne sera présent que si on en a vraiment besoin. Il faut également noter que les tables et relations se décrivent toujours en XML.

Depuis 2005, la rédaction de la documentation de Propel n’a cessé de croître. Pour cette nouvelle version, nous aurons le droit à une documentation totalement réécrite, et cerise sur le gâteau, l’équipe a prévu de la traduire dans toutes les langues. Affaire à suivre !

Reste à attendre la très prochaine version alpha release prévue courant de l’été 2012 afin de se faire notre propre opinion.

Vous pourrez retrouver les slides de cette conférence ici :

https://speakerdeck.com/u/willdurand/p/introduction-to-propel2