Accéder au contenu principal

Informatique en nuage et architecture pour les data scientists

Découvrez comment les data scientists utilisent le cloud pour déployer des solutions en production ou augmenter leur puissance de calcul.
Actualisé 18 sept. 2026  · 13 min lire

Explorer avec l’IA

ChatGPTClaudePerplexity

Passer à l'échelle au-delà de la machine locale

La data science se situe à l'intersection de nombreux domaines clés.

On peut en distinguer plusieurs piliers, notamment :

  • Le domaine métier
  • La probabilité et les statistiques
  • L'informatique et la programmation logicielle
  • La communication écrite et orale

Le troisième pilier concerne la compréhension de l'informatique et de la programmation.

Même si cela n'est pas toujours évident au premier abord pour les data scientists débutants, ce champ recouvre aussi souvent des sujets comme le DevOps, le cloud computing, les pipelines de données, l'ingénierie des données, la maîtrise des requêtes sur différents types de bases, la conception et le déploiement de logiciels en production, etc.

Par ailleurs, les data scientists doivent développer de solides compétences en programmation, mais ils ne sont pas toujours aussi formés ou expérimentés en informatique, en concepts de programmation ou en architecture et infrastructure logicielles de production que des ingénieurs logiciels aguerris. Au départ, on installe Python et/ou R sur son ordinateur, puis on écrit et on exécute du code dans un environnement de développement intégré (IDE) local, comme Jupyter Notebook ou RStudio.

Avec la montée en puissance de l'analytics avancée et la croissance des équipes data, le besoin d'outils collaboratifs pour livrer des insights, des modèles prédictifs, des systèmes de recommandation, etc., ne cesse d'augmenter. La reproductibilité (notebooks + gestion de versions) fait partie de la réponse, tout comme l'adoption d'outils et de plateformes collaboratifs en ligne, basés sur le cloud.

Les besoins de collaboration s'étendent aussi au-delà des équipes data, car la data science sert avant tout des objectifs métier. Les parties prenantes d'un projet data peuvent ainsi inclure des dirigeants, des responsables de département, ainsi que d'autres profils data : architectes, data engineers, analystes, etc.

Cet article a pour but d'éclairer les data scientists sur ce qui se joue au-delà de l'ordinateur portable ou de bureau, en particulier lorsqu'il s'agit de mettre des solutions de data science en production ou d'augmenter sa puissance et ses capacités de calcul. En fonction de votre expérience sur ces sujets, son contenu devrait intéresser des data scientists de tous niveaux.

C'est parti !

Qu'est-ce que le cloud, exactement ?

Ah, le fameux cloud, encore trop souvent mal compris. Derrière un terme qui peut sembler abstrait, la réalité est pourtant très concrète. Clarifions quelques notions clés avant d'aborder la définition du cloud.

Des ordinateurs reliés qui partagent des ressources forment un réseau. L'Internet lui-même en est le plus grand et le plus connu. Les réseaux domestiques, comme un LAN (Local Area Network) ou un réseau Wi-Fi identifié par un SSID, en sont un autre exemple, à plus petite échelle. Les ressources partagées peuvent être des pages web, des médias, du stockage, des serveurs d'applications, des imprimantes, etc.

Dans un réseau, les ordinateurs sont généralement appelés des nœuds et communiquent via des protocoles bien définis tels que HTTP (HyperText Transfer Protocol), TCP/IP (Transmission Control Protocol / Internet Protocol), etc. Ces échanges couvrent le suivi d'état, la supervision, les requêtes/réponses, et bien d'autres usages.

De plus, les ordinateurs ne se trouvent pas toujours sur site. Applications et données sont souvent hébergées dans des centres de données, qui fournissent l'infrastructure nécessaire (alimentation, refroidissement, sécurité, protection contre les sinistres, etc.) pour exploiter un grand nombre de machines accessibles aux entreprises ou au grand public.

Le coût des ordinateurs et du stockage ayant fortement baissé, de nombreuses solutions reposent désormais sur plusieurs machines qui travaillent de concert et sont peu coûteuses à faire évoluer, plutôt que d'acheter une seule machine ultra-puissante et onéreuse. Travailler "de concert" vise aussi à garantir que l'application continue de fonctionner automatiquement même si une machine tombe en panne, et que le système puisse s'adapter automatiquement à la charge.

Twitter, Facebook, Instagram, Snapchat, Netflix et YouTube illustrent parfaitement des applications cloud qui doivent évoluer dans ces deux dimensions. Il est très rare de les voir complètement à l'arrêt et elles gèrent des millions d'utilisateurs quotidiens.

Lorsqu'un groupe d'ordinateurs est connecté au même réseau et collabore pour accomplir une même tâche (ou un ensemble de tâches), on parle de cluster. On peut le voir comme un seul ordinateur logique, offrant des gains considérables en performance, disponibilité et scalabilité par rapport à une machine isolée. Nous reviendrons sur ces avantages plus loin.

Les termes calcul distribué ou systèmes distribués désignent des logiciels et systèmes conçus pour exploiter des clusters afin d'exécuter des tâches spécifiques, comme Hadoop, Spark ou MapReduce.

Enfin, venons-en au cloud. Au-delà des ressources partagées évoquées, d'autres ressources essentielles incluent des serveurs, des services, des microservices, des réseaux, etc. Un cloud décrit une situation où un même acteur possède, administre et gère un ensemble d'ordinateurs et de ressources partagées interconnectés, généralement pour héberger et fournir des solutions logicielles. Dans ce cadre, même si Internet est bien un réseau, ce n'est pas un cloud puisqu'il n'appartient pas à une seule entité.

Pour approfondir le cloud computing et les concepts clés d'architectures logicielles évolutives et de big data, consultez ma série en trois volets dédiée.

La data science dans le cloud

Nous avons désormais posé le cadre du cloud et des notions associées. Si, jusqu'ici, votre exposition à l'architecture et à l'ingénierie logicielle se limite au développement local, vous vous demandez peut-être en quoi tout cela concerne les data scientists. C'est l'objet de cette section.

Si vous connaissez le processus de data science, vous savez que, bien souvent, l'essentiel du travail s'effectue sur la machine locale du data scientist. On y installe ses langages de prédilection (Python, R) et son IDE favori. L'autre volet clé consiste à installer les bibliothèques nécessaires via un gestionnaire comme Anaconda ou manuellement.

Une fois l'environnement de développement prêt, le flux de travail typique démarre, la donnée étant le principal ingrédient additionnel. Les étapes itératives incluent généralement :

  • Acquisition des données
  • Parsing, nettoyage, mise en forme, transformation et sécurisation des données
  • Analyse et exploration des données, par exemple EDA, statistiques descriptives, ...
  • Construction, validation et test de modèles (prédiction, recommandation, ...)
    • Remarque : si l'on ne construit pas de modèles, il s'agit alors d'identifier des motifs ou tendances, générer des insights actionnables, extraire des informations utiles, créer des rapports, etc. Dans ce tutoriel, nous regrouperons ces cas sous le terme "créer un livrable".
  • Ajustement et optimisation des modèles ou des livrables

Cependant, il n'est pas toujours pertinent ni souhaitable d'exécuter toutes les tâches de data science ou de big data sur son environnement local. Voici quelques raisons majeures :

  • Jeux de données trop volumineux pour tenir en mémoire (RAM) lors de l'entraînement des modèles ou d'autres analyses
  • Puissance de calcul (CPU) locale insuffisante pour exécuter les tâches dans un délai raisonnable — voire impossible
  • Nécessité de déployer le livrable en production, éventuellement comme composant d'une application plus vaste (application web, plateforme SaaS, ...)
  • Préférence pour une machine plus rapide et plus puissante (CPU, RAM, ...) afin d'éviter de saturer la machine locale

Dans ces situations, plusieurs options s'offrent à vous. Plutôt que d'utiliser la machine locale du data scientist, on délègue généralement la charge de calcul à une machine sur site ou à une machine virtuelle dans le cloud (par exemple AWS EC2, AWS Elastic Beanstalk). L'intérêt des machines virtuelles et des clusters auto-scalés est de pouvoir les démarrer et les supprimer à la demande, et de les dimensionner exactement selon les besoins de calcul et de stockage.

Pour le déploiement de livrables en production, intégrés à une application ou à un pipeline de données plus large, les options et défis sont nombreux. Leur étude détaillée dépasse le cadre de cet article.

En complément des solutions et outils de data science sur mesure dans le cloud ou en production, de nombreux services sont proposés par des acteurs majeurs et s'intègrent souvent bien avec des notebooks comme Jupyter. Il s'agit essentiellement d'APIs de big data, de machine learning et d'intelligence artificielle, comme AWS Artificial Intelligence, Databricks, Google Cloud Platform Datalab et Machine Learning, et bien d'autres.

Pour une comparaison approfondie de la data science et de l'analytics avancée en production versus en développement, avec des recommandations de langages, bibliothèques, frameworks et plateformes, consultez ma série en trois parties sur le sujet. Ma série sur les architectures logicielles et big data évolutives complète également très bien la partie cloud computing.

Architecture logicielle et attributs de qualité

L'architecture logicielle consiste à concevoir un système logiciel, généralement dans le cloud, représentant un produit, un service ou un système de calcul orienté tâches. Vous entendrez aussi parler d'architecture de système ou d'architecture logicielle, des termes globalement équivalents.

Concevoir une architecture implique de choisir les langages et technologies appropriés (le stack), les composants, bibliothèques, frameworks, plateformes, etc. Ces choix exigent une analyse poussée, notamment au regard de la finalité du système et des arbitrages à opérer. Cette dimension requiert des compétences, connaissances et retours d'expérience qu'un profil comme l'architecte logiciel acquiert avec le temps.

Autre volet essentiel de l'architecture et de l'ingénierie des systèmes : les attributs de qualité ou exigences non fonctionnelles, particulièrement critiques pour des solutions réelles en production.

Les exigences non fonctionnelles incluent généralement :

  • Disponibilité
  • Performance
  • Fiabilité
  • Scalabilité (verticale et horizontale)
  • Extensibilité
  • Utilisabilité
  • Modularité
  • Réutilisabilité

Dans cet article, nous passons brièvement en revue quatre des plus importantes : disponibilité, performance, fiabilité et scalabilité. Il s'agit d'une approche qualitative, sans entrer dans des métriques précises.

Disponibilité signifie que le système est accessible et fonctionne correctement. Cela recouvre de nombreux aspects et dépend fortement de la fiabilité et de la scalabilité. "Fonctionner correctement" implique que le système réponde comme prévu, au moment voulu — pour un utilisateur final (Facebook, Netflix) ou pour un ensemble de services cloud traitant des données, par exemple.

Fiabilité désigne la capacité du système à opérer sans pannes ni erreurs. Plus un système fonctionne ainsi, plus il est dit tolérant aux pannes. Comme il est difficile d'anticiper et de tester tous les cas d'usage et cas limites, atteindre 100 % de fiabilité est rarement possible. Les défaillances ont des causes variées : bugs, problèmes d'environnement, ressources limitées (CPU, RAM, disque, ...), etc.

Performance décrit la rapidité d'exécution des tâches par le système, autrement dit le temps nécessaire pour accomplir une action donnée. Prenez YouTube : vous attendez qu'une vidéo se charge et démarre dans un délai raisonnable. Plus Google optimise la performance de YouTube, plus la lecture démarre vite, plus les utilisateurs sont satisfaits et moins ils abandonnent l'application. À l'inverse, un service trop lent décourage l'usage. Heureusement, c'est rarement le cas.

Enfin, la scalabilité représente la capacité du système à maintenir un niveau de performance donné malgré l'accroissement de la charge. La charge correspond au nombre de requêtes simultanées adressées au système.

Un exemple parlant : l'ouverture des ventes de billets pour une grande tournée ou un match très attendu. Sur un site comme Ticketmaster, les requêtes simultanées peuvent se chiffrer en centaines de milliers dès l'ouverture. Selon la capacité du système à monter en charge, la performance peut chuter drastiquement, voire le service se retrouver indisponible — deux scénarios à éviter.

Pour y répondre, on peut faire évoluer le système verticalement ou horizontalement. La montée verticale consiste à remplacer les machines par des équipements plus puissants (CPU, plus de cœurs, plus de RAM, ...) et plus fiables — souvent coûteux.

La montée horizontale, elle, s'appuie sur des machines standards et peu coûteuses, peu puissantes isolément, mais capables ensemble d'absorber la charge. Comme cette approche nécessite plusieurs ordinateurs, il faut mettre en place des mécanismes pour gérer automatiquement les pannes d'un ou plusieurs nœuds (failover), etc.

Conclusion

Nous espérons avoir éclairé les nombreux aspects qui dépassent le développement local, dans la perspective de mises en production bien réelles. Comprendre les concepts d'architecture et de calcul dans le cloud est essentiel lorsqu'on travaille sur des solutions data en production ou que l'on a besoin de ressources et de puissance de calcul supplémentaires.

N'hésitez pas à partager vos retours en commentaire. Pour aller plus loin, suivez @innoarchitech sur Twitter, abonnez-vous à la newsletter InnoArchiTech et découvrez le blog InnoArchiTech. Vous pouvez également consulter mon cours sur l'IA et le machine learning orientés objectifs.

Sujets
Cloud