Archives de
Étiquette : Automatisation

Big Data dans le cloud : Data Science as a Service

Big Data dans le cloud : Data Science as a Service

Cas d’utilisation dans la Data Science

Le client, Sanofi, troisième entreprise mondial selon le chiffre d’affaires dans le secteur de la santé, pose la problématique de créer un écosystème applicatif pour traiter et analyser l’arrivée d’un flux constant de données cliniques (essais, données patients, etc…). L’environnement se doit d’être sécurisé du fait du recueillement d’informations sensibles liées au monde médical.

Le besoin est très spécifique et fait partie du domaine du Big Data et de la Data Science.

Cela demande, d’une part, la création d’un data center capable d’assurer le stockage d’une volumétrie en constante augmentation et d’autre part la création d’outils permettant d’analyser les données pour en extraire de la valeur métier.

La donnée en question est acquise régulièrement via des laboratoires et tierces entreprises. Un traitement indispensable d’anonymisation, de formatage, et de compression est nécessaire avant d’être ingéré dans le data center.

En moyenne, on ingère 1 Téraoctet de donnée clinique tous les mois pour être traitée et stockée.

Pour rendre la donnée stockée utile, il faut assurer une haute disponibilité et la rendre requêtable d’une façon flexible, performante et en minimisant les coûts, étant donné qu’il s’agit d’une grande volumétrie de data.

En même temps, il faut assurer la sécurité de la donnée pour garantir la confidentialité du client.

Une fois accessible, une application web donnera accès à cette donnée aux utilisateurs, principalement des Data Scientists (internes ou prestaires du client) pour l’analyser.

L’application doit permettre aux Data Scientists de provisionner en « self-service » des machines virtuelles capables d’exécuter des opérations de statistique, big data et machine learning, exigeantes en termes de puissance de calcul.

On doit de même être capable de tracer les coûts par utilisateur ainsi que les flux de données depuis le data center crée.

Une infrastructure de ce genre et des machines dédiées au Data Science de cette puissance auraient un coût très élevé sur des environnements «on-premise».

Dans le cloud on va pouvoir répondre avec des solutions scalables, en donnant accès à des ressources facturées à l’utilisation avec des architectures à la hauteur des plus grandes exigences de sécurité.

DataLibrary

Data Science as a Service

Data Lake

Pour répondre à la problématique du stockage de la data on propose un data center particulier, AWS Data Lake.

Data Lake est un data center centralisé pour tout type de donnée (structurée ou pas) et accessible à plusieurs services comme AWS Glue, AWS Athena, AWS API Gateway et ce d’une façon performante et enrichissante du point de vue métier.

DataLake.

AWS Service Catalog

Ensuite, pour donner accès aux utilisateurs à la donnée stockée nous faisons appel à AWS Service Catalog. Ce service nous permet de provisionner des machines virtuelles (AWS EC2) pour lesquelles on définit la capacité de calcul (Processeurs, CPU, RAM, débit, …) avec des environnements de travail préchargés : langages (Python et R), librairies et outils définis en amont dans des templates Cloudformation.

Service Catalog nous permet de générer un catalogue de machines, chacune avec un environnement de travail spécifique pour répondre aux différents besoins des utilisateurs.

Pour répondre aux besoins en termes de puissance, on choisit les m5.2xlarge, la toute dernière génération d’instance d’AWS, avec des Processeurs Intel Xeon® Platinum 8175 d’une fréquence maximale de 3,1GHz, 8 processeurs virtuels et 32 Gio de mémoire.Service Catalog.

Le prix d’une machine on premise equivalente est proche de 6000 euros.

Grace au modèle de facturation à l’utilisation, on peut donner accès à ces machines aux utilisateurs à un prix de 0,35€ par heure.

Avec Service Catalog on fait aussi la gouvernance de tous les produits provisionnés. On peut provisionner, terminer, hiberner, réveiller nos machines instanciées, à l’image de notre catalogue de produits, d’une façon rapide et flexible.

Ceci va nous permettre entre autres d’avoir une traçabilité complète des produits, leur durée de vie et donc aussi les coûts générés.

Architecture serverless

Architecture

L’architecture de la partie web utilise les briques classiques AWS d’une « single web page application », stockée dans un Amazon Bucket S3 délivrée par le CDN d’AWS, Amazon Cloudfront.

Pour l’authentification, nous utilisons AWS Cognito, lié au LDAP du client donnant accès aux appels API, créée avec AWS API Gateway.

On utilise la base de données No-SQL, Amazon DynamoDB pour stocker toutes les données nécessaires au fonctionnement de l’application.

L’ensemble de l’exécution du code de la partie backend repose sur AWS Lambda.

Ensuite, Service Catalog sert à provisionner et gérer les machines virtuelles, définies avec AWS CloudFormation.

La donnée clinique, stockée dans AWS Lake Formation, se retrouve dans des Buckets S3 « montés » au sein des machines virtuelles, dans un réseau isolé, afin de protéger l’accessibilité de la donnée.

Le versioning des projets sauvegardés par les utilisateurs et l’installation de librairies sont gérés grâce à des Git et Nexus internes pour garder le réseau fermé et éviter toute fuite de données.

Retour client

Le projet, toujours en cours, avec des nouvelles évolutions, réalisé par trois personnes, a été mis en production en moins de 6 mois. Et selon notre client :

« Travailler dans le cloud nous a permis en temps record de déployer une solution à une problématique interne qui autrement aurait nécessité plus de temps, de budget et des solutions on-premise qui auraient complexifié le projet et obligé à faire un plus grand investissement en termes de ressources. »

Notamment l’accès aux machines virtuelles de telles capacité ou d’autres services plus spécifiques comme l’Intelligence Artificielle, ouvrent les portes à la conception de solutions dans des domaines plus spécialisés.

DevOps : concepts et base

DevOps : concepts et base

Le DevOps est un mot à la mode en ce moment dans le monde de l’IT mais il est toujours difficile de cerner exactement ce qu’apporte ce concept protéiforme. Nous allons nous pencher un peu plus sur ce (vaste) sujet et aborder les bases de ce qui constitue le DevOps.

Qu’est-ce que le DevOps ?

Vous l’aurez peut-être deviné, DevOps provient de la contraction des mots développement et opérations. Il s’agit d’une approche culturelle et technique reposant sur des principes agiles et visant à renforcer la collaboration entre les équipes métiers, développement, opérations et assurances qualité dans le but de délivrer des logiciels de manière continue. Cette organisation permet à une entreprise de profiter plus rapidement de certaines opportunités de marché et d’avoir un retour client accéléré.

Dans une approche DevOps, les équipes de développement et d’opérations collaborent pleinement et peuvent même fusionner. Ces équipes travaillent ainsi sur tout le cycle de vie des applications comme l’illustre le schéma au dessus.

Il est important de garder à l’esprit qu’une approche DevOps n’est pas uniquement technique : elle est aussi culturelle et relationnelle. Elle repose sur la communication entre tous les services d’une entreprise au-delà des équipes purement techniques (développement et opérations). L’approche DevOps doit ainsi englober les parties prenantes d’un projet tels que : le marketing, la direction et même les clients…

Les bénéfices d’une approche DevOps

La mise en application de l’approche DevOps au sein des équipes et des environnements garantit de nombreux avantages comme la facilité de la maintenance, l’automatisation des tâches ou l’amélioration de la communication inter-équipes.

  • Publications plus rapides et plus légères.
    La publication fréquente de nouvelles versions d’un logiciel va permettre de mettre à disposition les nouvelles fonctionnalités plus rapidement aux client (gain de compétitivité à la clé). Avec des déploiements plus fréquents, ces derniers sont moins importants et posent potentiellement moins de problèmes. La remontée de bugs est également accélérée.
  • L’automatisation, gage de fiabilité
    Une approche DevOps permet un gain non négligeable en termes de sécurité et de fiabilité. Grâce aux processus automatisés, on ne risque plus d’erreurs humaines liées aux tâches manuelles. De nombreux tests et vérifications automatiques sont effectués avant d’arriver à une phase de déploiement qui devient un non-événement.
  • Automatisation & productivité
    Du fait de cette forte automatisation, on bénéficie aussi d’un gain en termes de productivité. On peut profiter de plus de temps pour travailler sur de nouvelles fonctionnalités au lieu d’effectuer des tâches manuelles et lentes de tests, gestion d’infrastructures ou encore de déploiement.
  • Facilitation de la communication interne
    Le DevOps vise aussi à améliorer la collaboration entre les équipes, qu’elles soient techniques ou non. L’objectif de la philosophie DevOps est d’aligner tout le monde sur le même objectif pour éviter les conflits. Par exemple, de nombreux outils de supervisions retranscrivent sous forme de tableau (dashboard) les données et facilitent la compréhension et le suivi par tous.

DevOpsBenefits.

Quelques pratiques de l’approche DevOps

L’automatisation étant au cœur de la philosophie DevOps et de nombreuses pratiques y participent mais ces changements techniques impliquent aussi une organisation différente. Voici quelques grandes pratiques DevOps.

  • Intégration continue
    Méthode de développement logiciel permettant d’intégrer régulièrement chaque changement du code au niveau d’un dépôt de code source (GitLab, Bitbucket). A la suite de cette intégration, des opérations automatisées de build et de tests sont lancés avec le nouveau code source.
  • Livraison et déploiement continue
    Il s’agit de l’extension même de l’intégration continue. En effet, si le processus d’intégration continue permet de tester l’application à chaque changement de manière optimale, on peut se permettre par la suite de préparer un livrable ou bien de carrément déployer l’application quand tous les tests sont au vert et ce de manière automatisée.
  • Infrastructure as Code
    Le concept d’Infrastructure as Code se réfère au fait de décrire son infrastructure sous forme d’un fichier texte (JSON/YAML). L’infrastructure peut alors être gérée comme du code source normal en étant versionnée ou encore passée dans un processus d’intégration ou de déploiement continu.
    Grâce aux API proposés par les différents Cloud providers, l’IaC est désormais accessible grâce à des outils comme Terraform ou AWS Cloudformation (pour ne citer qu’eux) qui prennent en entrée ce fichier respectant une certaine norme puis déploient et configurent l’infrastructure décrite de manière automatisée. Cela permet une forte standardisation, une limitation des risques d’erreurs de configuration mais aussi une reproductibilité grandement simplifiée.
  • Monitoring et feedback
    Dans une démarche DevOps le monitoring aussi bien au niveau de l’application que de l’infrastructure est important pour détecter les problèmes de performances, de sécurité ou encore d’expérience utilisateur.
    Cela constitue la boucle de feedback de la démarche DevOps qui permet de mettre en lumière les problèmes posés par les mises à jour et les potentielles améliorations à apporter. (On peut citer par exemple Grafana, qui a été l’objet d’un article précédemment.)
  • Communication et collaboration renforcées
    Au-delà de la partie technique, comme nous l’avons évoqué en début d’article, une démarche DevOps passe aussi par l’amélioration de la collaboration au sein et entre les équipes techniques (développement, opérationnel) et non techniques (marketing, direction …).
    Le DevOps casse les frontières et implique un partage de l’information entre toutes les parties prenantes à un projet dans le but de garder un objectif commun.

cloudappsdevops

En conclusion

L’approche DevOps apporte de nombreux avantages en termes de productivité, de fiabilité et de maintenance. En facilitant la communication entre les pôles d’une équipe, l’approche DevOps est aussi un facteur de cohésion : grâce à des métriques fiables et communes, un environnement peut être analysé et optimisé par l’ensemble de l’équipe. L’automatisation des processus est important aussi bien en termes d’efficacité que de fiabilité. L’approche DevOps reposant sur les concepts d’agilité, les retours utilisateurs peuvent être intégrés rapidement au sein des solutions déployées.

L’approche DevOps serait donc le saint Graal du monde de l’IT ? Sans doute mais la mise en place des principes DevOps est toujours une gageure quelle que soit la structure. La bonne application des pratiques nécessite des équipes volontaires aussi bien dans la technique (CI/CD et utilisations d’outils IaC) que dans le relationnel (partage de l’information renforcée, amélioration de la communication). Comme souvent, une bonne synchronisation des équipes et l’application de bonnes pratiques sont la base d’un travail efficace.

Réseau mondial, où centraliser ses données ?

Réseau mondial, où centraliser ses données ?

Introduction

Grâce à ses multiples régions à travers le monde, AWS offre la capacité de créer une infrastructure réseau couvrant la totalité du globe. Dans ce cadre la question de l’emplacement des données se pose : doivent-elles être centralisées dans une région, ou réparties selon les besoins ?
Pour apporter un élément de réponse à cette problématique, nous nous sommes penchés sur les vitesses de transfert de données inter-région. Pour cas d’usage, nous avons pris un environnement Windows avec des utilisateurs travaillant sur des machines pour traiter/manipuler des données de projets hébergées sur un serveur de fichiers.

Un peu de théorie

Lorsque qu’un message est envoyé d’une machine à une autre, il va mettre un certain temps pour parcourir le chemin à travers le réseau. Ce temps est appelé la latence. On peut consulter un tableau des latences entre les régions AWS sur le site www.cloudping.co :

graphique-1

On vous déconseille de transférer des fichiers de São Paulo à Mumbai.

Lors du transfert d’un fichier, plusieurs messages sont échangés entre les machines, notamment à l’initialisation de la connexion puis durant le transfert car le fichier va être découpé en plusieurs messages. Le nombre d’échanges est dépendant du protocole de communication utilisé. Plus il y a d’échanges, plus la latence va impacter le temps total de transfert.

En pratique

Durant nos tests, en plus de comparer les temps de transfert entre les régions, nous avons également voulu voir l’impact de la version de Windows Server du côté de l’hébergeur et de la consommation des données.

Notre protocole de test :

  • Infrastructure réseau répartie sur les régions Oregon, Ireland et Singapore (liaison avec VPC peering)
  • 4 serveurs Windows Server 2008 R2, 2012 R2, 2016 et 2019 par région
  • Fichiers de test : un dossier de 400Mo contenant 210 fichiers allant de 52k à 100Mo
  • Outils de transfert : robocopy

La mise en place de l’infrastructure et les tests ont été automatisés à l’aide des services AWS CloudFormation et AWS System Manager.

Infrastructure réseau :

Infra Reseaux TestQuatre type de Windows Server (2008 / 2012 / 2016 / 2019) dans trois régions AWS distinctes (Oregon / Ireland / Singapore)

Les latences observées entre les régions :

  • Oregon – Ireland : 160 ms
  • Oregon – Singapore : 170 ms
  • Ireland – Singapore : 190 ms

Résultats des transferts :

graphique-2

graphique-3

graphique-4

On peut constater plusieurs points :

  1. Les temps de transfert sont sans commune mesure à l’intérieur d’une même région.
  2. La liaison Oregon-Ireland est plus rapide qu’Oregon-Singapore
  3. Selon la version de Windows Server, on peut avoir près de 50% de temps de chargement en plus.

Conclusion

Malgré la qualité des connexions réseaux, la distance entre les données et les utilisateurs est un facteur primordial pour une expérience de travail optimale. Il faut donc privilégier les courtes distances.

Pour pallier ce problème, nous pouvons nous appuyer sur l’offre End User Computing d’AWS qui fournit des machines de travail au plus près des données : Amazon WorkSpaces et Amazon AppStream 2.0. L’un est un service de desktop streaming et l’autre d’application streaming.

Tous deux sont accessibles par internet depuis le monde entier et utilisent des protocoles sécurisés et optimisés. En les intégrant dans un domaine Active Directory, ils offrent une porte d’entrée sécurisée vers votre système d’information, sans contraintes de mise en place de configuration réseau entre vos utilisateurs ou prestataires externes.

Vous voulez en savoir plus sur les possibilités de déploiement de Amazon WorkSpaces et Amazon AppStream 2.0 ? N’hésitez pas à nous contacter !