Soyez sans limite grâce à l’IA

Être un super héros de la connaissance

Vous rappelez-vous de cette scène du film Matrix où Néo apprenait le Kung-Fu en quelques minutes ? Réalité ou Science-Fiction ?

neo kung fu

C’est à minima un mythe intéressant. Pouvoir devenir expert en tout et sur tout ! Apprendre toutes les disciplines de votre choix, en un temps record. Et si on vous offrait cette possibilité, que choisiriez-vous ?
Vous vous projetteriez en expert du secteur financier, qui anticipe avec précision les évolutions des marchés à la simple lecture des indicateurs disponibles ? Ou en polyglotte parfait, traduisant à la volée une vingtaine de langues ? Peut-être que votre désir profond est de sauver des vies, comme par exemple le soignant qui détectera précocement tout début de cancer chez ses patients ?

Et si je vous disais que vous pourriez être tous ces champions, à la fois.

Demander conseil à un personne de confiance

L’humanité pratique la mise en commun des connaissances depuis son commencement. C’est ce principe même de regroupement d’individus intégrant une culture commune qui amena le concept de groupes sociaux, de villes et même de civilisations.  Une conséquence importante de ce regroupement est qu’il n’est pas nécessaire de tout connaître personnellement, mais de diviser les connaissances sur plusieurs personnes, chacune se spécialisant dans un domaine particulier. Afin de résoudre une problématique, demander à son réseau permet de récupérer une partie de cette connaissance et de cette expérience, et donc de résoudre le problème comme si nous la possédions nous-même.

La confiance joue un rôle très important dans ce processus. C’est sur base de la confiance que nous choisissons la personne à qui nous allons nous adresser. Mais comment juger de la pertinence de la connaissance d’une personne ? Un expert gagne ainsi souvent sa réputation grâce à la qualité de son travail passé.

Se pose la question suivante : si un ami arrive à prédire la valeur du cours de la bourse du lendemain, sans jamais se tromper, mais que vous ne puissiez pas comprendre son raisonnement, le considéreriez-vous comme quelqu’un digne de confiance ?

Et si cette personne de confiance n’était pas une personne mais reposait sur l’Intelligence Artificielle ? Les évolutions récentes en capacité de calcul, dans les algorithmes de Machine and Deep Learning permettent dès maintenant d’accéder à la connaissance dans de nombreux domaines.

L’aire de l’expertise artificielle

L’intelligence artificielle (IA) est un vaste domaine dont un en particulier ne cesse de battre des records ces derniers temps, celui de « l’Apprentissage Automatisé » ou « Machine Learning ». Les avancées scientifiques et technologiques sont désormais telles qu’on devine l’arrivée d’une singularité technologique, et d’un bouleversement dans l’usage de nos outils informatiques.

Prenons quelques exemples permettant de se rendre compte de ces avancées et des possibilités apportées par l’IA. Intéressons-nous à des applications liées à la médecine, la compréhension du langage, et l’art. Ces domaines sont pourtant, à priori, réservé aux meilleurs experts humains. Ils demandent un croisement de compétences, d’expérience et de capacités cognitives que seuls les humains peuvent détenir.

Domaine médical

Oui, il est désormais possible de détecter les signes de cancer, avec un gain clair en fiabilité de la détection, en utilisant l’Intelligence Artificielle. Le croyez-vous ?

pathAI
Taux de détection de métastase dans les ganglions lymphatiques. PathAI

Un algorithme intelligent permet donc, dès aujourd’hui, de fournir des indices suffisamment fiables du développement de métastases. Une telle conclusion doit cependant être remise en perspective, puisqu’il s’agit uniquement d’un type de cancer précis dans une zone précise du corps. Et si l’IA seule est déjà efficace, le fait de travailler conjointement avec une équipe médicale permet d’atteindre des records de fiabilité. La démarche est ici importante. Ces chercheurs n’ont pas tenté de remplacer l’humain, mais d’intégrer l’IA comme un expert à part entière associé au personnel médical, finalement comme une personne digne de confiance.

PathAI se base sur une technologie appelée « réseaux de neurones convolutionnels » et dont il est quasiment impossible de tirer un raisonnement compréhensible par un humain. Mais les résultats sont là et la technologie digne de confiance, puisqu’elle aura prouvé sa capacité de compréhension sur des milliers de cas passés. De la même manière qu’un expert devenu crédible grâce à la reconnaissance de la qualité de son travail.

Une difficulté intellectuelle intervient alors. Comment faire confiance à ce réseau de neurones dont nous ne pouvons pas appréhender la logique ? Cela reste un raisonnement logique mais qui ne s’apparente plus à la logique humaine.

Domaine linguistique

Nous parlions aussi de devenir un expert linguiste. Microsoft a récemment annoncé la nouvelle suivante sur son blog : «Historic Achievement: Microsoft researchers reach human parity in conversational speech recognition ».

Les réseaux de neurones sont donc désormais capables de retranscrire une information auditive de façon tout aussi fiable qu’un humain. Ils dépassent même très légèrement l’humain. Traduction simultanée, retranscription parfaite, sous-titrage en temps réel pour malentendants, autant de possibilités ouvertes dès aujourd’hui.

Domaine artistique

Comme dans bien d’autres domaines, l’art commence à se révéler comme un des terrains où les machines peuvent nous accompagner. Les machines ne sont pas encore capables de générer de l’art à proprement parler, mais d’autres approches existent.

neural transfer

Exemple de transfert de style basé sur Van Gogh

Soyons franc, un amateur pourrait se laisser berner et penser qu’il s’agit là d’une œuvre originale de Van Gogh. Ceci prouve que l’IA peut désormais comprendre des phénomènes dépassant la simple analyse de données, pour accéder à ce qui paraissait réservé pour de longues années à l’esprit humain.

Le paradigme de l’IA

L’IA amène donc un changement de paradigme. Deux objectifs sont à distinguer.

  1. Chercher à répondre à une problématique sans nécessiter de redéfinir l’état de l’art (donc sans aller plus loin dans la compréhension même des propriétés),
  1. Chercher à créer un nouveau produit ou service qui nécessite une amélioration de l’état de l’art (donc en approfondissant notre perception des propriétés).

Dans le premier cas, concevoir une architecture basée sur des modèles d’IA existants sera souvent bien plus rapide que d’acquérir une véritable expertise dans le domaine et les propriétés qui le caractérise. Un exemple concret réside dans le domaine de la vision par ordinateur (appelé aussi « computer vision ») où concevoir un réseau de neurones permet en quelques jours d’atteindre l’état de l’art des algorithmes classiques. Et pourtant ces algorithmes classiques nécessitent de maitriser parfaitement de nombreux aspects du traitement d’images puis de les implémenter.

Dans le second cas, l’exemple de PathAI est flagrant. Une équipe de deux personnes, dont une n’ayant pas de connaissance dans le domaine médical, a repoussé les limites de la médecine. Microsoft et les géants de l’Internet (Google, Amazon, Facebook…) possèdent également ces capacités et ces technologies promettant une intelligence supérieure à l’humain dans certains domaines de prédilection de l’Homme, comme la communication.

Sommes-nous prêts ?

L’Intelligence Artificielle devient donc cet expert polyvalent, présent à nos côtés comme une capacité latente, prête à vous aider dans vos problèmes quotidiens. Un expert qui s’entraîne et s’améliore grâce à la masse de données s’accumulant dans l’hyper cloud depuis ces 10 dernières années. Un expert qui nous permettra également de deviner, de définir des opportunités nouvelles.

Vous pouvez donc devenir un expert dans le domaine de votre choix. Par quoi commenceriez-vous ?
A moins que la question essentielle soit : êtes-vous prêt à accepter ce nouveau paradigme ?

Posted in Non classé | Leave a comment

Lectures d’Homo InTechus #2 : The Art Of Business Value

À l’heure où nous parlons d’Agilité ou de DevOps pour délivrer au mieux de la valeur, savons-nous vraiment identifier cette valeur que nous souhaitons maximiser ? C’est la question à laquelle tente de répondre Mark Schwartz dans son livre The Art of Business Value.

TABV-cover

La notion de «Business Value» est au cœur de l’Agilité. Elle est même si centrale que sa définition en est oubliée. Le postulat est souvent le même : nous attendons qu’une personne du métier détermine cette valeur pour qu’elle puisse ensuite être découpée en fonctionnalités qui seront livrées selon les priorités fixées.

Malheureusement, la valeur n’est pas une simple formule détenue par le métier mais plutôt quelque chose de propre à chaque organisation et qui doit être découvert. Est-ce alors le rôle du métier ? d’un product owner ? des équipes de développement ? d’un comité X ou Y ?

Nous croyons à tort que le rôle d’un service IT se limite à traiter passivement les demandes du métier. Dans ce contexte, même avec la mise en place de méthodes Agiles comme Scrum, créer de la valeur reste difficile. Si nous souhaitons qu’une équipe agile crée de la valeur, elle doit être impliquée dans son processus de découverte et non se limiter à traiter uniquement de simples demandes.

La bureaucratie : réel obstacle à l’Agilité ?

La littérature Agile désigne souvent le fonctionnement traditionnel d’une organisation comme un obstacle à l’Agilité. La bureaucratie et ses règles sont perçues comme des « impediments » qui empêchent une adoption des principes Agiles. En effet pour fonctionner l’adoption doit être globale à l’organisation. Il s’agit là d’un changement profond à opérer. Et évidemment un tel bouleversement culturel ne se fait pas sans douleur. 

Mais ces obstacles peuvent également apporter des éléments utiles pour identifier la valeur dans l’organisation ; des éléments qu’une équipe Agile ne perçoit pas toujours. Plutôt que d’engager un changement par une approche dite « big-bang », il est préférable d’avancer pas à pas de manière à comprendre réellement l’organisation et ses besoins pour diriger au mieux ce changement.

Une approche Agile pour une adoption de l’Agilité.

Bien qu’elle désavoue les règles, la communauté Agile en est remplie. Les règles sont un moyen d’apporter de bonnes pratiques dans notre travail quotidien. Est-ce que ces règles font de l’Agilité une véritable bureaucratie ? Le problème de la bureaucratie est que les règles ont souvent vocation à ne pas être changées. Elles restent gravées dans la pierre tandis que les bonnes pratiques, elles, évoluent.

L’IT au centre de la valeur

L’IT est souvent réduit au rôle de « service provider » d’une organisation. Le métier formule ses besoins, l’IT élabore un plan et s’il est accepté alors un projet est lancé pour aboutir à un produit final. Ensuite le métier le réceptionne et essaie d’en tirer une valeur ajoutée. C’est une approche très contractuelle qui au final ne permet pas de garantir une création optimale de la valeur. Ici le métier joue le rôle de client et l’IT se charge de traiter la « commande ». Cette isolation des parties les empêchent de réellement collaborer et d’atteindre un but commun.

C’est un piège de considérer le métier comme un client du service IT.  L’IT doit surpasser ce modèle pour devenir aussi bien un interprète de la valeur qu’un fournisseur d’expertises techniques. Son interprétation doit peser sur la stratégie globale de l’organisation tout comme n’importe quel autre département. L’IT doit accompagner l’organisation dans la recherche et la production de Valeur.

Un pipeline pour délivrer de la valeur en continu

Lorsque nous adoptons une démarche Agile pour maximiser la valeur, c’est pour que ce processus soit rapide, transparent et source de feedbacks. Et le meilleur moyen que nous connaissons aujourd’hui  pour y arriver se nomme DevOps : une approche visant à briser les silos et réduire les conflits pour construire une véritable chaîne de production automatisée autour d’équipes unifiées.

En s’installant dans les processus organisationnels, en automatisant les bonnes pratiques qui évoluent et en mesurant les résultats, DevOps permet la mise en place d’un véritable flux de création de valeurs. Les contraintes sont absorbées par le pipeline à la manière d’une boîte noire pour ne réduire les inputs qu’aux besoins métiers et fournir en sortie non pas une simple fonctionnalité mais une fonctionnalité déployée en production. Une nouvelle boucle de feedback se crée permettant à l’organisation de réellement mesurer la valeur produite.


Pour conclure, Mark Schwartz apporte tout un tas d’éléments basés sur son expérience de CIO pour permettre au lecteur de découvrir et mesurer sa « Business Value ». Ne cherchez pas de formule magique dans ce livre car elle n’existe pas, sa définition reste avant tout un voyage. À vous de le découvrir.

« But understand that there is no magic formula for business value that only the business people know. Ultimately, it turns out that business value is what the business values, and that is that. », Mark Schwartz.

Posted in lecture | Tagged , , | Leave a comment

Lectures d’Homo InTechus #1 : Mastery

Quoi de mieux qu’un bon livre pour vous accompagner en cette période estivale.

Mastery

Que ce soit pour un art, un sport ou une compétence particulière, la maîtrise d’un domaine n’est pas uniquement réservée à des gens hyper-talentueux mais bien accessible à tous. C’est ainsi que George Leonard démarre son livre  Mastery: the keys to success and long-term fulfillment.

La maîtrise n’est pas un but mais une longue phase d’apprentissage que l’auteur illustre sous la forme suivante : une succession de plats à chaque fois un peu plus élevés que les précédents appelée The Mastery Curve.

mastery-curve

The Mastery Curve

La progression se fait par légers bonds espacés de phases plus ou moins longues appelées plateaux. Celui en quête de maîtrise doit s’attendre à passer une grande partie de son temps sur un plateau : ce fameux moment qui semble interminable où nous avons le sentiment de ne plus progresser ; celui où la tentation d’abandonner est la plus grande.

Alors pourquoi passer autant de temps sur un plateau ? Continuer à s’exercer sans relâche, échouer puis recommencer est la clé pour atteindre son objectif. Cette étape est nécessaire pour atteindre le plateau suivant. Accepter le plateau sur lequel nous sommes c’est tout simplement suivre sa passion.

La maîtrise n’est pas une destination mais un chemin qu’il faut apprécier. Dans son œuvre, l’auteur nous donne les clés qui aideront à passer du statut d’apprenti à celui de maître.

For the master, surrender means there are no experts. There are only learners.

Pourquoi un tel livre ?

Mastery ne traite absolument pas de notre métier et tant mieux ! La vision portée par l’auteur est beaucoup plus large et parlera à toutes celles et ceux en quête d’amélioration dans leurs domaines de prédilection.

Ce que j’ai aimé :

Il met en avant des notions au cœur du Software Craftsmanship (pratiquer et s’améliorer) et de l’Amélioration Continue. Si l’un de ces deux termes vous est familier, ce livre est alors pour vous ! Bonne lecture 😉

Posted in lecture | Tagged , | Leave a comment

Plus d’agilité dans nos stages

Les stages 2016 chez InTech c’est 13 stagiaires issus de 6 cursus universitaires différents qui nous ont rejoint depuis ce printemps pour 6 mois soit un potentiel de plus 1500 j/h répartis sur 8 sujets/projets dont 4 en partenariat avec nos clients et partenaires.

C’est également plus de 20 collaborateurs InTech concernés de près ou de loin par les stages: tuteurs, experts, management et direction.

seminaire-agile-2016Nous avons initié, cette année, le programme collectif Stage AGILE qui vient compléter les actions déjà menées depuis quelques années pour la partie purement technique.

Le stage AGILE, Pourquoi ?

L’objectif de cette démarche est double :

  • d’une part, elle donne aux stagiaires l’occasion d’appréhender l’agilité dès son stage, lui apportant une première expérience Agile au plus proche du terrain.
  • d’autre part, le stage permet aux tuteurs de stages d’expérimenter l’agilité au travers de nouveaux rôles et de nouvelles pratiques. En introduisant l’agilité dans le stage, le tuteur a l’occasion de prendre des rôles divers comme Product Owner, Facilitateur, Expert technique ou fonctionnel voire selon son expérience Coach. Il est intégré à l’équipe Agile avec le(s) stagiaire(s) encadré(s).

Ainsi le Stage AGILE permet à chacun des acteurs de progresser et d’expérimenter des facettes de l’agilité.

Le stage AGILE, Comment ?

Nous avons découpé la démarche en 3 grandes étapes : pre-games, game, feedback !

Etape 1 : les pre-games

connaissanceEn parallèle de l’intégration du stagiaire dans l’entreprise, de la découverte plus en profondeur de son sujet de stage et de la formation technique dispensée par nos Experts Techniques, nous avons initialisé la démarche AGILE en proposant une étape d’initiation aux tuteurs et aux stagiaires:

Tout d’abord nous avons organisé une demi-journée de sensibilisation pour les tuteurs de stage qui n’étaient pas encore à l’aise avec l’agilité.

Puis nous avons mené un séminaire agile pour l’ensemble des stagiaires. Au-delà de la formation théorique, cela a été l’occasion de proposer des Serious Games, des Icebreakers, des Workshops…. A l’issue de ce séminaire, chaque stagiaire a pu avoir une réflexion concrète sur la mise en place de l’agilité dans le contexte de son stage et ainsi rédiger un engagement en conséquence.

Etape 2 : le game

gameTout au long du stage, cette étape permettra aux acteurs de mettre en exergue les principes et bonnes pratiques échangées pendant les différents workshops. Un accompagnement sera proposé par les coachs pendant toute cette phase ainsi qu’une formation de sensibilisation à la qualité logicielle.

Etape 3 : le feedback

feedbackCette étape finale sera l’occasion pour chaque stagiaire de clôturer son activité : finalisation, livraisons, rédaction du rapport de stage. Pendant cette période (août-septembre), nous recueillerons le feedback de chacun en s’interrogeant sur la suite à donner en 2017.

 

Le programme est ambitieux et doit être nourri par la participation de chacun des acteurs impliqués. Il reste également ouvert aux questions, aux idées et autres améliorations, alors n’hésitez pas à prendre contact avec nous.

Peggy Tarillon et Julien Ledoux

Posted in Non classé | Tagged , | Leave a comment

Retour Game Of Code

GOC_logo_2016-01

Game Of Code – 8 et 9 Avril 2016

Lors du week-end du 9 Avril 2016 a eu lieu la première édition du Game Of Code organisée par IT One. Un hackathon luxembourgeois qui s’est déroulé au Forum Geesseknäppchen à Luxembourg Ville pendant deux jours. A l’occasion de cet événement, sept courageux Homo-InTechus se sont lancés dans la bataille pour remporter la victoire ! Chaque équipe devait être composée de trois à quatre membres. Nous avons donc composé deux équipes:

  • InTech 1: CBL, CSA, CTN et MCI
  • InTech 2: LSR, ADE et DPD

(Oui, InTech 1 et InTech 2 sont bel et bien les noms officiels soumis à l’organisation)

img_0003

Organisation

Pour l’événement, les organisateurs avaient mis les petits plats dans les grands. Plusieurs Food Truck, des lits de camp, des douches et un bar, nous avions tout à disposition. Avant le début du concours, nous avions aussi la possibilité d’assister à plusieurs conférences, notamment sur l’intelligence artificielle et la plateforme Azure de Microsoft.

Concours

Lors du hackathon, il y avait deux challenges possibles:

  • Challenge « Tree Of Life »: Révolutionner le monde grâce à l’intelligence artificielle,
  • Challenge « Open Data »: Exploiter les données présentes sur la nouvelle plateforme OpenData du Luxembourg pour améliorer le quotidien des luxembourgeois et des frontaliers avec pour objectif de créer une « Smart Nation ».

Les deux équipes InTech ont choisi le sujet « Open Data » qui semblait plus accessible en 24 heures. Le challenge « Tree Of Life » manquait cruellement d’informations et était beaucoup trop ouvert à notre goût. Pour informations, nous étions 120 participants réparties dans 35 équipes. (dont 25 sur le challenge Open Data)

Avant de débuter la phase de développement, nous avons commencé par un brainstorming général afin de trouver un projet pour chaque équipe InTech. Dans notre quête aux idées, nous pouvions compter sur les présences exclusives de deux mentors de renom, Sébastien Larose et de Nicolas Sanitas (que nous remercions encore une fois pour nous avoir ramené un switch et des câbles réseaux). Afin d’avancer tous ensemble, nous organisions toutes les deux heures un rassemblement collectif pour faire le point sur l’avancement et nous fixer des objectifs pour les deux prochaines heures. Cela permettait aussi de réagir rapidement lorsqu’une tâche était trop ambitieuse et pouvait devenir bloquante, et d’avoir le feedback de l’autre équipe sur l’orientation que l’on donnait à notre projet.

Comme vous le savez sûrement, lors de l’événement, il était possible de suivre notre aventure via le service Livecoding.tv. De nombreux collaborateurs nous ont suivi et c’était une véritable source de motivation d’avoir des encouragements à toutes les heures de la journée et de la nuit. Nous en profitons donc pour vous dire merci pour votre soutien au cours du week-end.

Pitch et résultats

Après une vingtaine d’heures de développement, nous devions préparer le pitch final. Chaque équipe devait présenter son projet en 3 minutes avec un support visuel de type PowerPoint. Antoine Detante et Camille Thomassin ont pris les places de speakers pour leurs équipes respectives et ont réalisés des très bonnes performances ! Au niveau des résultats, comme vous le savez déjà, aucune des deux équipes n’est montée sur le podium, mais nous n’avons pas démérité et nous étions très satisfaits du travail réalisé.

Conclusion

Cela restera un très bon souvenir collectif, grâce à nos supporters et au bon esprit de l’ensemble des participants. C’était un plaisir de travailler tous ensemble avec une véritable dynamique de groupe. Ce genre de challenge est l’occasion pour nous de travailler d’une façon différente de celle habituellement pratiquée sur les projets : en totale autonomie, les équipes doivent s’organiser pour arriver à un résultat dans des délais très rapides. C’est une expérience très intéressante et très motivante, mais également éprouvante il faut le reconnaître ! Certains ont quand même regretté que les sujets soit donnés en avance et que certaines équipes soient arrivées avec des projets finalisés. 3 minutes sur scène pour présenter le travail de 24h est également un exercice très compliqué. Une petite déception pour être resté au pied du podium cette année. Mais ne nous laissons pas abattre, si l’événement est reconduit l’an prochain, nous sortirons vainqueurs !

Posted in Non classé | Tagged , , , , | Leave a comment

La prise de parole en public

Retour sur le workshop auquel j’ai eu la chance de participer : « Inspirer et convaincre l’audience, la prise de parole dans tous ses aspects ! » animé par Dirk Evenepoel, 2 the Audience pour Paperjam Club le 15 mars 2016.

Le pitch du workshop

« Plus des deux tiers des personnes n’aiment pas parler en public. La plupart des cadres et dirigeants s’attachent à leur expertise technique mais ignorent les autres éléments, souvent plus déterminants comme le non-verbal ou l’interaction avec le public. Comment convaincre et inspirer l’audience, que ce soit en interne ou externe, afin qu’elle se souvienne de vous ? Découvrez par la pratique et des exemples comment faire partie du bon tiers. »

Nuage

« Tout ce qu’il faut retenir »

Ce que j’ai retenu du workshop

Pour placer toutes les chances de notre côté, Dirk propose de suivre la recette suivante :

  • Impliquer suffisamment le public pour capter son attention, pour établir une relation dès le début de l’intervention. Par exemple, en posant des questions directes.
  • Captiver l’auditoire en utilisant le storytelling, les retours d’expérience, le parler vrai. En effet, le public quel qu’il soit sera plus perceptif si vous racontez une histoire de votre vécu (en relation avec le sujet exposé bien sûr ;o))
  • Soigner sa diction :
    • en utilisant les silences au bon moment,
    • en entraînant sa voix : une heure de bouchon = une heure de chant dans sa voiture, à condition de ne pas faire de co-voiturage !!! Cela marche aussi sous la douche mais il faut des voisins compatissants.
    • en établissant une dynamique de la voix : attention à la vitesse d’élocution, au volume et à la tonalité. Au passage, Dirk indique que les tonalités graves (donc masculines) sont mieux perçues que les tonalités aiguës (donc féminines).
  • Répéter, répéter, répéter

Pour la posture, l’expert conseille de :

  • Faire face au public pour garder le contact établi, ce n’est plus le moment de découvrir les slides
  • BOUGER sur scène et utiliser l’espace… cela peut vous permettre de donner du rythme et une certaine dynamique, cependant il faut que cela reste naturel.
  • utiliser les mains et surtout éviter de les laisser dans vos poches
  • Se tenir bien droit et bien centrer : ne pas hésiter à travailler sa posture « debout » : les jambes légèrement écartées, le dos bien droit, la tête bien axée…

Enfin, concernant le contenu et le support de présentation, Dirk nous donne encore quelques règles efficaces :

  • Le support de présentation doit donner envie et ne pas être surchargé : pour cela, il faut travailler le visuel, utiliser l’animation, ne pas se limiter au slide conventionnel (puces/textes)…Comme nous l’avons vu plus haut, il est préférable de démarrer par du storytelling mais il est également possible d’ouvrir sur une citation ou une question adressée au public. Par exemple : « à quoi correspond ce chiffre ? »,
  • La règle des 4 ! Pas plus de 4 points/informations importantes à faire passer, au-delà il y a de fortes chances pour que le public trouve la présentation confuse, voire ne comprenne pas le message,
  • Soignez son ouverture (on l’a dit) mais aussi sa clôture,
  • La pointe d’humour reste la cerise sur le gâteau : à utiliser avec des pincettes, au risque de faire un flop !

Et le stress, me direz-vous ?

Le fameux stress… les jambes qui flagellent, la voix qui se dérobe, les bégaiements qui s’installent, les répétitions et autres tics d’élocution… pas de panique, tout le monde y est sujet, même les orateurs chevronnés !

Dirk relativise : « Dites-vous que tout le monde (ou presque) y est confronté » pour des raisons multiples et variées, notamment selon le vécu de chacun, le contexte de la présentation, le sujet abordé, le public présent …. Comme la pratique d’une langue étrangère ou d’un sport technique, il faut pratiquer un maximum pour acquérir de l’aisance. Vous aurez bien sûr compris que l’on ne se lance pas dans une arène de 500 spectateurs lors d’une conférence comme dans une salle de 10 personnes en plein Comité de direction, que l’on ne présente pas aussi facilement un sujet que l’on ne maîtrise pas encore, que l’on ne pratique pas l’humour comme Gad Elmaleh…

La règle d’or : se lancer en se fixant des objectifs de progressions simples mais atteignables avant chaque représentation ! Pratiquer l’amélioration continue… finalement n’est-il pas encore une fois question d’agilité ?

Mon avis sur le workshop

L’animation était très bonne, tous les trucs et astuces étaient mis en pratique par l’expert… cela faisait une bonne démo live de ce qu’il faut faire ou pas. Le workshop m’a permis de prendre vraiment conscience qu’il faut PREPARER et REPETER un maximum, là où j’ai tendance à faire confiance à mes « talents » d’improvisation…mais aussi qu’il faut oser et se lancer. Merci à Dirk Evenepoel !

À vous de jouer ! Rendez-vous le 23 juin prochain à Kayl pour le premier LuxI/O ou lors d’une de nos prochaines réunions thématiques.

Posted in conférence | Leave a comment

Retour Conférence DotJS

Salle DotJS

DotJS – 7 décembre 2015

Introduction

Nous nous sommes rendus le lundi 7 décembre 2015 au Théâtre de Paris afin d’assister à la conférence dotJS.

Cette conférence fait partie du groupe des dotConferences, qui comprend notamment :

  • dotSwift
  • dotScale
  • dotGo
  • dotCSS
  • dotSecurity
  • et donc dotJS

La conférence dotJS se targue d’être la plus grande conférence javascript en Europe. Chaque année, elle accueille des speakers prestigieux présentant des sujets divers et variés : cette année était notamment annoncé Brendan Eich, l’inventeur du langage.

1 millier de personnes étaient attendues cette année.

Organisation

Après avoir récupéré nos badges, nous avions un peu de temps avant le début de la première session de conférences. Nous en avons donc profité pour échanger avec les différents partenaires de l’event.

Il est à noter que l’event se déroulant au Théâtre de Paris, une seule conférence se déroulait à la fois.

On peut notamment citer :

wakanda

une plateforme javascript utilisée pour gérer l’ensemble des applis webs et mobiles. Elle se base notamment sur des outils et frameworks open source tels que AngularJS, ionic, Apache Cordova … et possède également un IDE intuitif qui comprend un outil de conception, un éditeur de code (JavaScript, HTML, CSS), un gestionnaire du modèle objet.
Un point intéressant est la génération d’objets à partir d’une base de données. Il est alors possible de surcharger ce modèle, et même de recréer des liens qui n’existeraient pas dans la base relationnelle.
https://wakanda.github.io/

platform.sh

une solution d’intégration continue PAAS qui se veut developer friendly, en permettant aux développeurs de se concentrer sur le code en laissant la plateforme gérer la partie DevOps. (génération d’environnement à la volée, cloud hosting …)
https://platform.sh/

clusterpoint

qui se veut être une troisième alternative aux bases de données SQL et No SQL en rassemblant les points forts de ces deux types (data and computation scalability + strong transactional consistency). Utilisation du javascript dans des query SQL  https://www.clusterpoint.com/

Conférences du matin

Nous nous sommes ensuite rendus dans l’amphithéâtre pour assister à la première session de conférences.

salle

Voici les sujets qui nous ont été présentés :

Modern async JS, par Christophe Porteneuve (@porteneuve)

A propos de la problématique des callback en javascript et de la gestion de l’asynchrone, et plus précisément l’écriture du code qui peut vite devenir incompréhensible à la lecture. (cf. callback hell)

Pour rester dans le système des callback, Christophe commence par nous présenter Async.js. Ce petit module fournit plusieurs fonctions qui permettent des traitements asynchrones. Cela ne demande pas de connaissances supplémentaires, il n’y a pas de perte de performances, le module est bien maintenu (@caolan). Mais cela ne résout que quelques problèmes initialement identifiés.

Puis, les promises nous ont été présentées. Elles existent déjà depuis un long moment, pas seulement en Javascript. Elles sont maintenant natives dans ES6. Avantages : elles sont fiables (un seul callback garanti), elles sont composables mais cela ajoute un nouveau niveau d’abstraction, il y a des légers problèmes de performance et l’exécution du code n’est pas vraiment très facile à comprendre (je ne parle même pas du débogage).

Les générateurs : un générateur est un type de fonction spécial qui fonctionne comme une fabrique (factory) d’itérateurs.

Exemple de générateur :

function* idMaker(){   
	var index = 0;   
	while(true)     
		yield index++; 
}  
var gen = idMaker();  
console.log(gen.next().value); // 0 
console.log(gen.next().value); // 1 
console.log(gen.next().value); // 2

Mais les générateurs ne sont pas asynchrones. Alors quel est le rapport avec notre problème ?

Si on combine les générateurs avec les promises, cela permet d’avoir du code asynchrone, mais écrit comme du code synchrone. Cette méthode est déjà expérimentée dans la librairie task.js.  

La bonne nouvelle, c’est que l’arrivée de ES7/2016 nous apportera deux nouveaux mots clé: async/await. Cela permet de régler les problèmes d’écriture de code : du code asynchrone écrit comme du code synchrone.

Lien vers les slides

Hyperdrive, par Mathias Buss (@mafintosh)

Mathias a publié beaucoup de modules sur NPM (750 modules avec une équipe de 3 personnes).  Il nous a présenté l’un deux, hyperdrive, qui est un module de partage de fichiers en peer2peer. Le principe est simple, et les concepts utilisés pour le développement du module étaient intéressants.

Le fonctionnement repose sur le partage via URL et sur un système de Hash qui permet de partager un fichier en plusieurs parties de tailles réduites.

Il permet entre autre de faire du Streaming vidéo…

Lien vers les slides / Dépôt github du projet hyperdrive

Dealing with Garbage, par Samuel Saccone, Software Engineer chez Google (@samccone)

Comment détecter et régler les problèmes de fuites mémoire ?

Une démonstration de comment utiliser la console de Chrome pour diagnostiquer les fuites mémoire et présentation de son outil drool, qui permet de détecter automatiquement les fuites mémoire et de les analyser. (https://github.com/samccone/drool)

Lien vers les slides

Vidéo : http://www.thedotpost.com/2015/12/samuel-saccone-dealing-with-garbage

http/2 is here, now let’s make it easy, par Rebecca Murphey (@rmurphey)

Rebecca nous a présenté http/2 et pourquoi il n’était pas encore très utilisé. Selon elle, il n’est pas encore utilisé pas parce que les développeurs ne veulent pas, mais parce qu’il n’existe pas « d’écosystème » complet prêt à l’accueillir (comme les serveurs, les navigateurs…).

Lien vers les slides

Vidéo : http://www.thedotpost.com/2015/12/rebecca-murphey-http2-is-here-now-lets-make-it-easy

Pause repas

Ne vous inquiétez pas, y’en aura pour tout le monde !!! (ou pas …)

En effet, le repas se déroulait dans les couloirs, où des plateaux de miniatures étaient disséminés un peu partout, le problème, le nombre de personnes … en quelques minutes, tout était vide.

Nous nous sommes donc divisés en groupes de 2 pour chercher les … pizzas, denrée rare mais nourrissante.

A noter qu’une montagne de fromage se trouvait sur une table, mais qu’elle n’a pas fait beaucoup d’émule étant donné la présentation style “oeuvre d’art contemporaine”.

screen

Conférences de l’après midi

Elle s’est découpée en deux parties, tout d’abord des présentations en temps limité (environ 10-15 minutes), puis des présentations plus longues.

Henrik Joreteg : Pocket-sized JavaScript

Henrik part du constat que le javascript sur mobile est lent et peu performant. Il propose ensuite une approche qui consiste à  s’appuyer sur les bonnes idées des gros frameworks type Angular et utiliser des nouvelles techniques (Virtual DOM et WebWorkers) afin de produire du code minimaliste pour une application javascript sur mobile beaucoup plus rapide.

Vidéo + slides : http://www.thedotpost.com/2015/12/henrik-joreteg-pocket-sized-javascript

Tim Caswell : Teaching Kids Programming using Web Browsers and Real Robots

http://www.thedotpost.com/2015/12/tim-caswell-teaching-kids-programming-using-web-browsers-and-real-robots

Petite surprise pour cette présentation , le speaker Tim Caswell  est venu sur scène avec son jeune fils de 9 ans : Jack . Il a mis en place un langage simplifié (peu de symboles) et utilise un IDE comprenant des bonnes fonctions de validation et coloration syntaxique afin de  rendre plus  accessible la programmation à des enfants. Son fils nous a fait ensuite une demo live, en codant un petit programme permettant d’allumer des LEDs.

Andre Medeiros : The whole future declared in a var

André est l’inventeur du framework javascript Cycle.js.

Il nous a présenté la notion de “Micro-Service”.

Nouveau paradigme → programmation fonctionnelle réactive

Analogie avec Excel → dès que variable change les cellules avec des formules qui la contiennent se mettent à jour.

Les concepts important à retenir sont :

  • Scalabilité
  • Pas de serveur requis
  • Encapsulé

Exemple d’implémentation :

  • Amazon
  • Pay by use

RxJS (ReactiveX)

Présentation du framework “ReactiveX”.

Les concepts important à retenir sont :

  • Reactive programming
  • Gestion de stream
  • Très similaire à Scala dans les concepts

Pour plus de détail :

http://www.thedotpost.com/2015/12/andre-medeiros-the-whole-future-declared-in-a-var

Etienne Margraff : VorlonJS

Présentation de VorlonJS : un outil de debugging multi navigateur, open source et extensible.

Il permet de débugguer du JavaScript, en apportant la possibilité de débugguer plusieurs devices en même temps.

Il permet également de débugguer des mobiles.

http://vorlonjs.com/

Slides : http://fr.slideshare.net/emargraff/dotjs-lightning-talk-vorlonjs

Johannes Fiala : How to end manual REST-API client coding

Démonstration de comment créer une API rapidement avec Spring Boot, puis documenter les différentes opérations et générer rapidement le code client javascript avec l’outil de Swagger Codegen

http://www.thedotpost.com/2015/12/johannes-fiala-how-to-end-manual-rest-api-client-coding

  • Eric Schoffstall ; Real world webRTC
    • Eric Schoffstall est le créateur de Gulp.
    • Gulp 4.0 arrive bientôt, cela avait pris du retard à cause d’un bogue NPM.
    • Eric s’est lancé dans une boîte faisant du speed-dating par WebRTC ; il a dû faire en sorte que ça fonctionne sur tous les navigateurs. Beaucoup de galères pour IE, Safari… et sur mobile.
    • Pour Android, il a utilisé Crosswalk.
    • Pour iOS, il a utilisé iosrtc.
    • Pour IE / Safari, il a dû recourir au plug-in TEMASYS.
    • Comme ça a été l’enfer pour lui, il a voulu faciliter le travail des autres pour la suite, et a lancé http://rtc.works : rtc-everywhere ; un setup cross platform pour webRTC.
  • Forbes Lindesay : conception de Pug
    • Pug est le nouveau nom du langage de templating Jade.
    • Le talk décrit comment concevoir un outil de transpilation tel que Pug: il a montré comment coder un lexer, parser, code generator et linker.
    • Un talk intéressant pour ceux qui veulent contribuer à un projet de transpilateur (Babel, Webpack, Less, Sass etc.).

Conclusion

Voilà qui conclut une journée bien dense avec un grand nombre de conférences portant sur des thèmes assez variés.

Retour en Lorraine avec des goodies plein les poches!

Astronautes

Posted in conférence | Tagged , , , | Leave a comment

Directive PSD2 : Comment l’Europe force le secteur bancaire de détail à innover.

En novembre dernier, le parlement européen a adopté la nouvelle directive sur les services de paiement : la PSD2 « Payment Service Directive 2 » (ou DPS2 « Directive sur les Paiements et Services version 2 ». Cette directive a pour vocation de faciliter l’innovation dans le secteur bancaire en créant les conditions qui permettront, aussi bien aux grands acteurs qu’à de nouveaux entrants, de créer de nouveaux produits et services. Cette directive modifie ainsi de manière profonde la manière dont les banques de détails vont pouvoir interagir avec leurs clients dans les années à venir.
Cette directive est entrée en vigueur en janvier 2016 pour application et transcription dans les lois nationales d’ici à janvier 2018.

Les mesures principales de cette directive tournent autour de l’introduction de deux nouvelles catégories d’acteurs. Les A.I.S.P (Account Information Service Provider) et les P.I.S.P (Payment Initiation Service Provider).

Account Information Service Provider

Ces nouveaux acteurs permettront aux clients des banques d’accéder aux informations liées à leurs comptes bancaires, sur des applications en ligne autre que celles conçues par les banques elles-mêmes. Ces acteurs vont permettre de rapatrier ces informations, quelle que soit la banque dans laquelle elles sont domiciliées. Ce client aura ainsi la possibilité de consulter et obtenir des services sur l’ensemble de ses comptes bancaires sur une interface unique.

Account Access avant PDS2

Account Access après PDS2

Il va de soi, afin de limiter les dérives, que les informations liées aux comptes bancaires d’une personne ne pourront pas être consultées sans son consentement explicite.

Des acteurs de ce type se sont déjà créés avant que la législation ne les y autorise vraiment. Ils extraient les informations contenues dans les sites de web-banking des banques (directement depuis le code HTML), en demandant les données de connexion à leurs utilisateurs.

Afin de permettre de créer des conditions de fonctionnement plus saines pour ces acteurs (notamment pour ce qui concerne l’authentification), la directive prévoit que les banques seront dans l’obligation de fournir ces informations aux A.I.S.P. via un système d’API. Dans ce cadre, l’E.B.A (European Banking Authority) a été désignée afin de créer un RTS (Regulatory Technical Standard) concernant l’authentification et des recommandations sur le contenu des API en tant que telles.

Payment Initiation Service Provider

Ces acteurs vont jouer un nouveau rôle dans le cadre des paiements en ligne. Dans le cadre d’un achat chez un marchand, au moment de payer, le client aura de nouvelles possibilités par rapport aux services de paiements actuellement disponibles. Il pourra ainsi donner une autorisation directe au site internet du marchand pour qu’il se connecte à son établissement bancaire, et lui débite directement son compte du montant de son achat.

PSP avant PDS2

PSP après PDS2

Cette démarche se fera bien entendu dans un cadre très strict en termes d’authentification et de validation de la transaction, afin de garantir une sécurité optimale.

Tout comme pour les A.I.S.P, les banques seront dans l’obligation de fournir aux P.I.S.P des API qui leur permettront de faire les interactions nécessaires afin de mener à bien ces nouveaux types de transactions. L’E.B.A est aussi désignée afin de fournir les R.T.S et recommandations nécessaires concernant ces communications.

Conséquence de la Directive pour les banques

Deux conséquences principales sont à considérer concernant les banques.

La première est au niveau de leurs relations avec leurs clients. Les A.I.S.P vont potentiellement intervenir dans une part importante des interactions avec leurs clients. Ces interactions, qui sont actuellement effectuées à travers les guichets des agences physiques (dont la fréquentation est en constante baisse), et via les applications bancaires dont ils sont propriétaires, sont un des piliers majeurs de leurs stratégies de fidélisation. Il leur faudra compenser cette probable volatilité, s’ils ne veulent pas voir leurs chiffres d’affaires baisser d’une manière conséquente.

La deuxième conséquence concerne les systèmes d’informations des banques. Ils devront être profondément modifiés pour permettre la mise en place d’APIs, afin d’interagir avec les A.I.S.P et P.I.S.P. Ces modifications devront aussi accompagner les changements que les banques devront effectuer afin de s’adapter à ces nouveaux marchés. Ces changements, dont la bonne exécution aura un impact de premier ordre sur la capacité des banques à savoir répondre aux nouveaux besoins de leurs clients, devront s’effectuer dans des délais relativement courts, compte tenu des impératifs de mise en application de la PDS2.

En conclusion, cette directive qui est à replacer dans un ensemble de dispositions voulu par la commission européenne afin de créer un “marché digital unique” pour 2020, fait entrer réellement les banques dans le monde du digital. La manière dont celles-ci sauront répondre à ces changements influencera d’une manière importante leurs chiffres d’affaires et leurs résultats opérationnels pour la décennie à venir.

Paul & Philippe

Posted in Non classé | Leave a comment

Monnaies virtuelles et blockchain, rupture ou évolution ?

Qu’est ce qu’une monnaie virtuelle ?

Les monnaies virtuelles sont des monnaies numériques non réglementées qui sont émises, gérées et dont les échanges sont validés par des programmes informatiques. Elles sont en général acceptées et utilisées à l’intérieur de communautés fermées mais peuvent également, comme le Bitcoin être utilisées pour des achats de biens réels et être échangées contre des monnaies fiduciaires. Il ne faut pas confondre monnaies virtuelles et monnaies électronique. La monnaie électronique est définie comme une valeur stockée sous forme électronique, émise après réception de fonds dont le montant ne doit pas être inférieur à la valeur de l’unité monétaire émise, et acceptée comme moyen de paiement par des tiers autres que l’émetteur.

Les monnaies virtuelles peuvent être centralisées ou décentralisées comme le Bitcoin. Les crypto-monnaies sont un type particulier de monnaies virtuelles dont les principes de fonctionnement reposent sur des algorithmes cryptographiques.

Quels sont les principes de fonctionnement de ces monnaies ?

Les crypto-monnaies décentralisées fonctionnent en général sur le principe de la blockchain. La blockchain peut être vue comme un grand livre de toutes les transactions ayant été effectuées depuis la création de la crypto-monnaie. Le fichier blockchain est copié sur chacun des ordinateurs qui participent au fonctionnement de la monnaie. Les portefeuilles des utilisateurs sont matérialisés par un paire de clés publique/privée utilisée pour accéder au portefeuille et valider les transactions. Pour qu’une transaction représentant un échange de monnaie soit acceptée par le système, elle doit avoir été validée par un ordinateur du réseau. Dans le cas du Bitcoin, le processus de validation se nomme le minage. Les ordinateurs participant au réseau essaient de valider une transaction (en réalité un ensemble de transactions regroupés sous la forme d’un bloc) en résolvant un challenge mathématique. Le premier ordinateur qui résout le challenge valide le bloc et l’insère dans la blockchain. De la monnaie est créée à chaque validation et donnée à celui qui a résolu le challenge en guise de récompense.

 Qui est en charge de la gestion de ces systèmes ?

Les systèmes de monnaies virtuelles sont créés par des communautés de développeurs indépendants qui font évoluer le programme informatique qui gère le fonctionnement du système. Les utilisateurs peuvent créer de nouveaux comptes soit en téléchargeant le programme et en l’exécutant sur leur ordinateur, soit en s’inscrivant sur une plate-forme d’échange telle que Paymium par exemple. Dans certains cas comme Ripple, le système est géré par une société qui s’occupe alors de la gestion des comptes et des participants au réseau et qui fait évoluer le programme.

 Combien y a-t-il de monnaies virtuelles en circulation aujourd’hui ?

Le site coinmarket.com recense les monnaies virtuelles réellement utilisées ainsi que leur valorisation. Il y a actuellement 639 monnaies listées. La principale est le bitcoin qui possède une capitalisation d’un peu plus de 3 milliards d’euros. Un bitcoin vaut 207,87€ au 23 septembre 2015. La valeur des monnaies virtuelles est très volatile à cause notamment des faibles volumes échangés et des aspects spéculatifs liés à leur utilisation. La capitalisation totale des 10 plus importantes monnaies virtuelles est de 3,49 millairds d’euros. 

Qui sont les utilisateurs de ces monnaies ?

L’une des caractéristiques de ces monnaies a trait à l’anonymat des utilisateurs. Il n’est donc pas aisé de savoir qui sont les utilisateurs. Elles sont utilisées pour faire des achats de biens réels sur les sites qui les acceptent, pour réaliser des échanges de monnaies entre utilisateurs ainsi que pour spéculer. Les monnaies virtuelles principales peuvent être échangées contre des monnaies fiduciaires par l’intermédiaire de places de marché. Le bitcoin peut être utilisé pour acheter des biens.

Quels sont les avantages de ce type de monnaies ?

Les monnaies virtuelles possèdent plusieurs avantages. Tout d’abord, elles sont utilisables par n’importe quelle personne qui télécharge le programme sans contrôle préalable. Alors que l’ouverture d’un compte bancaire prend plusieurs jours voire plusieurs semaines, l’entrée dans un système de monnaie virtuelle et la première transaction peuvent se faire en quelques minutes. L’exécution des transactions est également plus rapide. Elle prend environ 10 minutes pour le Bitcoin alors que l’exécution d’un virement international prend plusieurs jours. Un autre avantage est lié à la décentralisation des systèmes qui sont très résilients et ne possèdent par de point unique de défaillance (Single Point of Failure). De même contrairement aux monnaies fiduciaires contrôlées par des Etats ou des Banques Centrales, les monnaies virtuelles ne sont pas contrôlées et l’exécution des systèmes est uniquement gérée par des algorithmes, ce qui baisse également le coût des transactions qui est proche de zéro.

Quels sont principaux risques ?

Les risques sont liés aux avantages. L’absence de contrôle lors de l’entrée dans le système combinée à l’anonymat en fait des systèmes adaptés aux cas où l’on veut dissimuler les transactions aux autorités, comme par exemple les échanges de monnaies non fiscalisés (travail au noir, …) ou l’achat de marchandise interdite. L’utilisation pour le blanchiment d’argent est également possible mais reste cependant difficile dans la mesure ou il nécessite le passage par une place de marché, or les places de marchés ont mis en place des procédures de vérification des utilisateurs respectant toutes les contraintes réglementaires. Les autres risques concernent la volatilité de ces monnaies dont la valeur peut très rapidement se déprécier (le bitcoin qui vaut aujourd’hui environ 208 € valait plus de 1000 euros il y a moins de 2 ans. Enfin et en particulier pour les monnaies encore peu utilisées, les systèmes peuvent disparaître du jour au lendemain en cas de faille de sécurité ou si un nombre suffisant d’utilisateurs le souhaite.  

Quels sont les moyens déployés pour arrêter ces arnaques ? Quels sont les pouvoirs d’action des États ?

La difficulté d’empêcher les utilisations frauduleuses de ces monnaies est l’un des freins principaux à leur déploiement à grande échelle et à la généralisation de leur utilisation. Le seul moyen actuellement en place pour limiter ces utilisations est la non acceptation en tant que monnaie fiduciaire et l’obligation assignée aux places de marché de respecter les mêmes contraintes que les banques en matière d’anti blanchiment et de connaissance des clients. Certains pays interdisent purement et simplement l’utilisation de monnaies virtuelles. En France, l’échange de Bitcoin contre une monnaie ayant cours légal est considéré comme la fourniture d’un service de paiement et implique de disposer d’un agrément de prestataire de services de paiement (établissement de crédit, établissement de monnaie électronique ou établissement de paiement) délivré par l’ACPR. 

A quel avenir ces monnaies virtuelles sont-elles vouées ?

Il est peu probable que les monnaies virtuelles remplacent les monnaies fiduciaires à court terme, notamment à cause de la difficulté de contrôler les échanges et les entrées/sorties dans le système par les institutions financières. En revanche, les principes de confiance décentralisées mis en œuvre dans la blockchain sont particulièrement innovants et pourraient être utilisés pour dématérialiser les titres de propriétés de tout bien et en accélérer les échanges en court-circuitant les acteurs de confiance classiques et notamment les officiers ministériels, de même pour la tenue de registres de possession de titres qui pourraient également être stockés dans une blockchain. Enfin, certaines grandes banques commencent à se regrouper pour envisager l’utilisation de blockchain pour l’exécution des paiements interbancaires, ceci afin d’en diminuer le coût tout en les accélérant.

Posted in Non classé | Leave a comment

Repoussons les limites des performances avec MongoDB !

Pré-requis

Pour bien comprendre cet article, je vous conseille de vous familiariser un minimum avec les concepts de MongoDB. (document, collection, requête, index, projection)

Focus sur le tuning des performances !

Requêtes et analyses

Contexte : Vous avez une idée toute simple. Un réseau social ou les utilisateurs peuvent s’exprimer avec une limite de 140 caractères.

Vous êtes le futur créateur de Twitter.

Vous optez pour une base de données MongoDB.

Très bien, on crée notre première collection : tweet

On génère quelques documents de cette forme :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  "_id" : ObjectId("56d419f5581cb5bdae8a43fc"),
  "content" : "Mon premier tweet !",
  "author" : "johnny",
  "date" : ISODate("2016-02-05T14:53:48.808Z"),
  "likes_count" : 2,
  "retweets_count" : 1,
  "likes" : [
    "bradley",
    "greg"
  ],
  "retweets" : [
    "greg"
  ]
}

On écrit nos premières requêtes :

1
db.tweet.find({author:"johnny"}).sort({date:-1})

Notre prototype commence à voir le jour !

Les jours passent, les utilisateurs adhèrent au concept ! déjà 1 million de tweets !

On s’aperçoit rapidement que nos requêtes sont interminables. On décide donc d’utiliser l’analyseur de requêtes MongoDB :

1
db.tweet.find({author:"johnny"}).sort({date:-1}).explain()

Et là c’est le drame :

1
2
3
4
5
6
7
"executionStats" : {
  "executionSuccess" : true,
  "nReturned" : 10,
  "executionTimeMillis" : 3000,
  "totalKeysExamined" : 0,
  "totalDocsExamined" : 1000000
}

On comprend qu’il faut 3 secondes pour récupérer 10 tweets (et accessoirement scanner 1 million de documents…). On va rajouter quelques index !

Indexation

On décide donc d’indexer les champs sur lesquels on requête :

1
db.tweet.createIndex({author:1,date:-1})

On analyse de nouveau notre requête :

1
2
3
4
5
6
7
"executionStats" : {
  "executionSuccess" : true,</span>
  "nReturned" : 10,</span>
  "executionTimeMillis" : 100,</span>
  "totalKeysExamined" : 10,</span>
  "totalDocsExamined" : 10</span>
}

On est sauvés. Avec ce genre de performances on va pouvoir bientôt passer en prod !

Les semaines passent et nous voilà avec 100 millions de tweets. Les requêtes commencent légèrement à ralentir. Au départ vous vous dites que la solution est le sharding…

Puis vous tombez par hasard sur la doc MongoDB paragraphe covered query (*)

Covered Query

D’après cette doc, un index couvre une requête si :

  • tous les champs de la requête font partie de l’index (ça parait ok !)
  • tous les champs retournés font partie de ce même index

Ça veut dire quoi ? Et bien qu’on peut faire encore mieux !

Grossièrement, l’index précédent prend effectivement en compte tous les champs de votre requête. Le problème c’est que votre application est obligée d’aller chercher sur disque les 10 documents qui ont matché la requête pour retrouver les champs non-indexés !

On peut éviter ça de façon simple. Imaginons que vous ne vouliez afficher que l’auteur, le contenu, la date, et les nombres de likes et de retweets (ce qui est fait actuellement sur twitter et à mon sens ce n’est pas un hasard).

On va supprimer l’index précédent et en créer un nouveau :

1
db.tweet.createIndex({author:1,date:-1,likes_count:1,retweets_count:1,content:1})

Il suffit d’ajouter une projection à votre requête précédente :

1
2
3
4
db.tweet.find(
  {author:"johnny"}, //query
  {_id:0,author:1,date:1,likes_count:1,retweets_count:1,content:1} //projection
).sort({date:-1})

Analysons cette requête :

1
2
3
4
5
6
7
"executionStats" : {
  "executionSuccess" : true,
  "nReturned" : 10,
  "executionTimeMillis" : 20,
  "totalKeysExamined" : 10,
  "totalDocsExamined" : 0
}

Conclusion : avec un simple tuning de votre index et l’ajout d’une projection vous avez divisé par 5 votre temps de requêtes !

Aller plus loin :

Attention :

Il ne faut pas abuser des covered queries. Les gros index prennent de la place en mémoire.

Mon conseil :

Cibler un ou deux use cases principaux de votre système. (l’exemple de twitter n’est pas anodin, récupérer les derniers tweets est LE use case principal de l’application)

Couvrez les quelques requêtes qui répondent à ces use cases et vous aurez gagné significativement en performance !

Posted in Non classé | Leave a comment