Introduction
Il était une fois la data
Depuis les années 1980 jusqu’à 2010, période à laquelle je me suis totalement passionné pour l’informatique et le développement d’applications, un super informaticien se distinguait avant tout par son expertise dans un ou plusieurs langages (tels que Basic, Fortran, C, C++, Java, PHP, etc.). Depuis lors, la diversité et le nombre de langages n’ont cessé de croître, amenant toujours plus de confusion. À cette confusion se sont ajoutés de nouveaux systèmes et architectures toujours plus innovants mais aussi bien plus complexes. Aujourd’hui, soyons honnête, les paysages informatiques ressemblent trop souvent à des imbroglios technologiques qui ne peuvent plus adresser de manière efficace les véritables enjeux pour lesquels ils ont été conçus. Pire, il devient impossible de maintenir ces systèmes ou applications ne serait-ce qu’à cause du nombre d’expertises diverses qu’ils requièrent.
En plus de cela, il faut prendre en compte une certaine réalité : nous en demandons toujours plus à nos programmes ! Ces derniers doivent en effet mieux réagir, exécuter des tâches toujours plus complexes et interagir avec des systèmes de plus en plus hétérogènes. Ils doivent aussi, bien sûr, s’adapter aux environnements et règles métiers qui sont aussi en perpétuelle mutation. Pour faire simple, nos applications doivent pouvoir faire ce que nous, humains, pouvons faire, mais mieux, plus vite et sans erreurs ! Elles doivent en outre composer avec l’existant.
La conséquence directe est que la plupart des programmes sont devenus, au fil du temps, trop complexes. Certains sont même devenus tellement difficiles à maintenir que plus personne n’ose les toucher. Exceptions imprévues, processus complexes ou non maîtrisés… sont quelques exemples de ces grains de sable qui mettent régulièrement en échec les applications les mieux huilées. Certains diront que ces programmes ne fonctionnaient pas si mal jusque-là. Sans doute, mais pour encore combien de temps ? Force est de constater que ces programmes s’apparentent progressivement à une sorte de juxtapositions d’exceptions et de nouveaux besoins. La résultante n’est malheureusement pas toujours cohérente dans son ensemble. À ce rythme, et en continuant à ajouter des rustines dans les programmes, il est clair que le château de cartes risque de s’écrouler.
Nous sommes par ailleurs entrés dans l’ère de la digitalisation. Les applications doivent donc dorénavant acquérir des capacités quasi-humaines : vision par ordinateur, décision, compréhension de texte, prévisions, etc. Jusqu’alors, à un problème donné, la solution informatique proposait naturellement une approche procédurale et déterministe. Cette approche, si elle convient encore - et fort heureusement - pour la plupart des traitements, devient vite limitée dès lors que l’on aborde ces demandes plus complexes.
Parfois aussi le problème se trouve à la source. C’est le cas, par exemple, quand les utilisateurs ont eux-mêmes du mal à décrire leurs besoins, ou qu’ils n’arrivent tout simplement pas à s’entendre sur une approche commune. Tous ceux qui ont été impliqués dans des projets informatiques connaissent bien évidemment cette plus ou moins longue phase de spécifications qui précède la réalisation du système ou de l’application. Cette étape est indispensable pour définir et décrire son comportement. Une fois celle-ci terminée sont en général produits un certain nombre de documents. Mais voilà, ces documents de spécifications ne sont malheureusement pas toujours exhaustifs ou sont déjà obsolètes lorsque les applicatifs sont déployés. Tout va en effet très vite - trop vite - et les programmes ne peuvent pas toujours suivre le rythme infernal des changements métiers.
Pour toutes ces raisons, il semblerait que notre bonne vieille approche traditionnelle atteigne ses limites. Mais alors, comment créer des systèmes résilients, ouverts et évolutifs ? Comment faire en sorte que l’informatique tienne enfin sa vieille promesse d’interopérabilité ? Et surtout, comment enfin faire en sorte que les systèmes informatiques reflètent la réalité des besoins utilisateurs à tout moment, et de manière durable ?
Certains invectiveront, à ce stade, l’avènement du no-code ou du low-code. Cette approche est intéressante mais sans doute insuffisante pour répondre à tous ces enjeux.
D’autres mettront en avant les infrastructures de type « micro-services » qui offrent de leur côté un virage acceptable en proposant de gérer la pluralité des technologies via leur propre spectre d’utilisation. Mais elles non plus ne résolvent en rien tous les problèmes mentionnés précédemment.
Mettons de côté tout de suite l’idée d’un super langage - j’ai envie de dire, encore un - qui se superposerait à ceux existants. En effet, d’autres s’y sont essayés depuis que l’informatique existe, mais sans succès. Et, très honnêtement, cela ne résoudrait pas tous les problèmes évoqués.
Non, il faut une nouvelle approche, un nouveau paradigme qui dépasse et complète la bonne vieille approche procédurale. Et d’ailleurs, pourquoi ne pas imaginer que les langages tels que nous les connaissons soient relégués au second plan ? Voilà un changement de paradigme qui pourrait en bousculer plus d’un. En y réfléchissant bien, c’est un peu ce qui s’est passé pour l’assembleur au début de l’ère informatique. Qui, en effet, code encore en assembleur ? D’autant que si l’on regarde ce que proposent Copilot, Code Llama et d’autres générateurs de code, on voit bien que cette idée de relégation est loin d’être fantasque ; mieux, elle est déjà sans doute à l’œuvre.
Cette nouvelle ère qui se dessine accorde une importance primordiale à l’information elle-même, plutôt qu’à la manière rigoureuse de la traiter. Cependant, cette transition n’est pas soudaine, elle s’est amorcée progressivement depuis longtemps. Après tout, nous avons toujours été entourés de données, n’est-ce pas ? D’ailleurs, quelle entreprise n’est pas aujourd’hui « data driven » ? En réalité, le véritable changement réside dans notre façon de percevoir les données et non plus nécessairement leur exploitation proprement dite.
Rappelez-vous il y a quelques années quand ces data n’étaient qu’une source, voire une contrainte avec laquelle il fallait composer ! Les données étaient alors rétrogradées au rang de carburant pour ces processus/programmes. Le terme de carburant n’est d’ailleurs pas spécialement approprié par rapport à la vision de l’époque, car contrairement au carburant qui est indispensable au fonctionnement d’un moteur, les données, elles, étaient perçues comme secondaires.
Il a fallu l’avènement du décisionnel et de la Business Intelligence dans...
Pourquoi ce livre ?
On trouve de nombreux ouvrages sur les données et leurs enjeux, et tout particulièrement aujourd’hui. On trouve aussi beaucoup de documentation sur les technologies qui permettent de comprendre, récupérer, manipuler ou transporter les données. De fait, dans la constellation des solutions de gestion de données, il doit exister un livre pour chacune d’entre elles. L’idée de cet ouvrage n’est surtout pas d’ajouter un nouvel élément à cette constellation. L’objectif est plutôt de faire le lien entre différents ouvrages, d’être un guide pratique indispensable pour ceux qui veulent mettre un pied dans le vaste monde de la data.
Certains m’en voudront peut-être, mais on n’y parlera pas - encore - du tsunami de données qui se déverse sur les entreprises et dans nos vies courantes, de la loi de Moore, etc., tout cela étant aujourd’hui une évidence et surtout une réalité. Ce qui est important est que ces données sont une richesse brute - « Data is the New Oil » - qu’il faut exploiter mais surtout maîtriser et contrôler. Cet ouvrage n’abordera pas non plus tous les cas d’usage autour de la donnée parce qu’en réalité tous les cas d’usage utilisent de la donnée. Elle n’est donc pas un sujet, c’est LE sujet.
Ce livre vous propose de découvrir comment maîtriser la puissance des données en appréhendant de manière pragmatique ses concepts, son vocabulaire et ses solutions ou implémentations technologiques. Un projet très ambitieux, certes, mais dont l’objectif est de dépasser les simples constats tout en vous propulsant dans le monde extraordinaire et parfois sauvage des données. Voyez ce livre comme une sorte de couteau suisse, une boussole pour vous aider à mieux vous repérer dans cette jungle de concepts, d’architectures et de terminologies.
Un guide de survie !
Vous avez sans doute déjà compris les grands enjeux et les perspectives offertes par les données....
Pourquoi une seconde édition ?
Cette seconde édition se devait tout d’abord d’apporter un écho à l’IA générative. Tout le monde est maintenant familier avec ces IA (ChatGPT, MidJourney, Dall.E, etc.) qui sont totalement en train de bouleverser les usages du numérique. L’intelligence artificielle est désormais au centre de toutes les initiatives de digitalisation et est évoquée par tous les dirigeants qui la considèrent comme un moyen de stimuler leur croissance ou comme une nécessité pour ne pas perdre un avantage compétitif.
L’avenir de l’informatique passe sans nul doute par l’IA. Par répercussion, il est évident que la gestion des données va devenir sa clé de voûte, et donc plus que jamais le cœur stratégique des futurs systèmes d’information. C’est un changement fondamental de paradigme pour les entreprises qui jusqu’alors priorisaient plutôt la gestion des processus métier au travers de leurs progiciels (ERP, CRM, etc.).
C’est donc à l’aube de cette profonde mutation technologique que cette seconde édition voit le jour et se tourne car il est inconcevable aujourd’hui de ne pas maîtriser toute la chaîne de valeur de la data.
Qui dit mutation technologique dit aussi changements organisationnels. Cette seconde édition est aussi l’occasion de développer plus en profondeur les nouvelles initiatives et architectures de données telles qu’elles sont pratiquées concrètement de nos jours. Alors, que l’on fasse du Data Mesh au travers d’une...
À qui s’adresse ce livre ?
Vous l’aurez compris, ce livre s’adresse à tous ceux qui veulent aborder la donnée dans une approche pragmatique et large. Étudiants, ingénieurs de données (Data Engineers), Data Scientists, développeurs, chefs de projets mais aussi CDO (Chief Data Officer) ainsi que tous ceux qui veulent mieux comprendre et traiter les données, trouveront dans ce manuel différentes clés afin de mieux appréhender et maîtriser ce nouvel or noir. Cet ouvrage se veut ludique et pragmatique et permet d’aborder en toute simplicité les multiples concepts liés à la data, il est donc accessible à tous.
Bien sûr, cette approche de la donnée n’a pas pour prétention d’être exhaustive. Certains diront même qu’elle ne va pas assez loin dans les détails. Ils auront raison car l’idée directrice de cet ouvrage est véritablement une base solide pour mieux comprendre l’univers autour de la donnée.
Vous pouvez aussi retrouver d’autres exemples et cas d’usage plus poussés sur mon site https://datacorner.fr
Afin d’illustrer certains concepts ou matérialiser des exemples, le langage Python est souvent utilisé dans cet ouvrage car il s’agit d’un des langages les plus appropriés pour gérer les données, si ce n’est le plus courant. Mais que ceux qui ne sont pas familiers avec ce langage se rassurent, sa connaissance n’est absolument pas un prérequis à la lecture de ce livre.
Pour finir et vous laisser - enfin - vous plonger dans ce monde merveilleux de la data, j’ajoute que certains détails sur des concepts présentés dans ce livre peuvent évidemment être remis en question. En effet, certains concepts et architectures mentionnés ou expliqués dans cet ouvrage (comme la Data Fabric, les Data Lake, etc.) ne possèdent pas de définition au sens strict et reconnu. Le but de cet ouvrage est avant tout de fournir un recueil d’expérience concret...