Découvrir le cloud avec AWS en développant un data pipeline — Partie 1

Eren GUNDAG
Publicis Sapient France
7 min readMar 8, 2023

Vous souhaitez découvrir le cloud mais ne savez pas par où commencer :

  • les concepts et façons de travailler diffèrent de ceux dont vous avez l’habitude;
  • les sites d’AWS (Amazon Web Services), GCP (Google Cloud Platform) ou encore Microsoft Azure présentent une longue liste de produits aux noms pas toujours parlants;
  • vous craignez que votre apprentissage ne se transforme en cauchemar à la lecture de votre facture.

Bonnes nouvelles :

  • le premier point n’est pas un problème pour vous, bien au contraire ;
  • vous n’avez évidemment pas besoin de tout connaître, seuls quelques services vous seront utiles dans votre domaine ;
  • AWS propose une offre gratuite ainsi qu’une solution pour contrôler vos dépenses.

Le but de cet article est de vous permettre de découvrir AWS et le cloud par la pratique et par une approche directe et incrémentale à travers le développement d’un data pipeline de bout en bout.
J’essaierai de limiter la théorie aux seuls concepts fondamentaux ainsi qu’à une brève présentation des services utilisés.
Pour le reste, je ne peux que vous encourager à lire la documentation proposée sur le site.

Note: L’application de ce tutoriel nécessite l’utilisation de certains services non compris dans l’offre gratuite d’AWS. Prévoyez une facturation d’1 à 5€ dans le cadre de ce tutoriel.

Exercice
Développer un data pipeline en utilisant la puissance du cloud computing au travers de divers services proposés par AWS : staging et stockage des données avec S3, processing avec Lambda, définition de workflow avec Step Functions, processing des données avec Glue, requêtage avec Athena ou encore gestion des droits avec IAM.
Extraction-Transformation-Chargement. Ça doit vous dire quelque chose, non ?

Brève présentation
Le cloud c’est d’abord un terme marketing pour décrire des milliers de serveurs, regroupés dans des dizaines, voire des centaines de datacenters dans le monde.
Ces serveurs sont de la puissance de calcul et du stockage que les entreprises comme Amazon, Google, Microsoft ou d’autres vont louer au travers de services pour du traitement, des bases de données, de l’hébergement de sites web, etc.
Ces infrastructures sont proposées pour une durée déterminée à l’avance ou non et le modèle de facturation dépend de la durée d’utilisation et de paramètres comme la puissance de calcul, l’espace de stockage, etc. Ce qui apporte le grand avantage de la flexibilité au client, d’autant que selon ses besoins, il est très souvent simple de passer à l’échelle au travers de ces services qui sont souvent développés dans cet optique.

Il y a différents types de services :

  • IaaS, pour Infrastructure as a Service : on vous fournit un accès à tout ou partie des infrastructures, c’est à vous de (quasiment) tout gérer;
  • PaaS, pour Platform as a Service : on vous fournit un accès à l’infrastructure mais le prestataire gère également la santé des machines, le passage à l’échelle pour vous mais aussi des fonctionnalités telles qu’une base de données, un serveur e-mail prêts à l’emploi;
  • SaaS, pour Software as a Service : on vous fournit l’accès à un logiciel sous forme de service, comme Google Docs par exemple.

Les services historiques d’AWS sont Amazon EC2 (location de serveurs), Amazon RDS (gestionnaire de bases de données relationnelles) et Amazon S3 (stockage de fichiers orienté objet).

Créer un compte AWS

1. Rendez-vous sur le site d’AWS.

2. Cliquez sur ‘Créer un compte AWS’.

3. Remplissez le formulaire d’inscription.

4. Saisissez les informations de votre moyen de paiement.

Cette étape est nécessaire pour vérifier votre identité et est obligatoire. Comme expliqué par Amazon, 1$ sera facturé puis remboursé.

Vous bénéficierez bien de l’offre gratuite et ne serez facturé que si votre usage en dépasse la limite.

5. Saisissez vos coordonnées téléphoniques.

6. Choisissez le Plan Basique et terminez votre inscription.Parfait ! Connectez-vous à la console AWS.

La console AWS

1. Vous retrouverez ici la liste de tous les services AWS à votre disposition. Ils sont regroupés par catégorie. Évidemment, vous n’aurez pas à tous les connaître.

2. Sous forme de menu déroulant, vous retrouverez cette même liste. Cela vous évitera de retourner sur la page d’accueil pour retrouver un service. Vous y retrouverez également un historique des services récemment consultés.

3. C’est ici que vous retrouverez notamment les informations et paramètres de votre compte et le tableau de bord de votre facturation (nous y reviendrons dans la suite de cet article).

4. La région dans laquelle se trouve le datacenter où vous lancez vos services.
A priori, pour votre projet, vous choisirez la région la plus proche de vos données. Cela limitera logiquement les temps de transport réseau. De plus, chaque datacenter est soumis aux lois de la région (par exemple le RGPD) dans laquelle il est implanté.
Notez que les différents services ont une tarification différente selon la région, les différences sont souvent minimes mais existent. De même, certains nouveaux services, nouvelles fonctionnalités ou options peuvent arriver dans certaines régions avant d’autres.
Je vous conseille de garder la région Ohio pour ce tutoriel. Dans tous les cas, choisissez en une et tenez-vous-y. En effet, les instances des services que vous lancez s’affichent par région. Cela vous facilitera la tâche lorsque vous voudrez les arrêter ou les supprimer pour éviter d’être facturé inutilement.
Notez également que certains services, particulièrement les nouveaux, ne sont pas toujours disponibles dans toutes les régions.

Plan de l’exercice/Étapes du pipeline

1. Nous créerons un dépôt de données sur le service de stockage S3 sur lequel nos sources chargeront leurs données.

2. A la réception de ces données, nous déclencherons un pipeline composé :

  • d’une fonction Lambda qui décompressera ces données et les déplacera dans notre datalake, stocké lui aussi sur S3;
  • d’un job Glue, service ETL d’AWS basé sur Spark, pour convertir nos données au format parquet;
  • d’un crawler Glue qui analysera le répertoire où seront stockées nos données et mettra à jour son catalogue.

3. Catalogue qui nous permettra de requêter sur nos données depuis le service Athena.

Amazon S3

Amazon Simple Storage Service (Amazon S3) est un service de stockage de données objet. C’est l’un des services historiques d’AWS et l’un des, si ce n’est le, plus populaires.
En plus de stocker vos données, ce service vous promet performances, scalabilité, disponibilité et durabilité (de 99,999999999 % selon Amazon).

Vous pourrez notamment configurer simplement les droits d’accès pour chaque fichier (lecture, modification, suppression…), choisir le mode de chiffrement des données, définir une date d’expiration des données, les versionner, ou encore les répliquer.

Amazon vous permet même de stocker vos données selon différentes classes, selon la fréquence d’accès de ces données par exemple et d’optimiser les coûts, pensez à une architecture Hot-Warm-Cold.

Structure d’Amazon S3

Amazon S3 est organisé en buckets dans lesquels sont stockés des objets (des fichiers).
Chaque objet se compose de données, mais aussi d’une clé et de métadonnées. La clé identifie de façon unique l’objet dans un bucket.
Des policies et ACL (Access Control List, liste de contrôle d’accès en français) sont associés à ces buckets et ces objets pour en gérer l’accès et la modification.

Amazon S3 sera le service central de notre exercice. Nous y déposerons nos données en staging, les stockerons après transformation et y accéderons depuis notre service de requête.

1. Rendez-vous sur le service S3.

Notez ici que la région AWS est Global. Vous retrouverez sur cette page tous vos buckets, quelque soit la région où vous stockez vos données. De même, votre bucket sera accessible de n’importe où (à condition d’avoir les autorisations nécessaires). Ce qui est bien pratique mais rend donc nécessaire l’unicité globale du nom de votre bucket.

2. Cliquez sur Create bucket.

3. Définissez le nom de votre bucket.
Ce premier bucket contiendra les données de staging de notre data pipeline. Je vous propose de l’appeler staging suivi d’un suffixe vous permettant de valider le critère d’unicité.De manière générale, essayez de donner à toutes vos ressources des noms explicites et cohérents entre eux systématiquement.

4. Choisissez la région où seront stockées vos données.
Attention, on ne parle pas ici de disponibilité mais bien du stockage des données.

5. Choisissez si oui ou non vos données seront accessibles publiquement. Ici, laissez le choix par défaut.
Note: ce paramètre dépend avant tout de votre projet. Si vous hébergez les images de votre site web sur S3, vous ne bloquerez pas l’accès public à ces données. Dans ce tutoriel, nous restreindrons nos données aux services qui le nécessitent.

6. Cliquez sur Create bucket.

7. Réitérez l’opération et créez un second bucket pour les données de votre datalake, dans mon cas datalake-ddp.

Dans la prochaine partie, nous commencerons à développer notre pipeline avec le service Lambda que nous utiliserons pour décompresser les données reçues dans notre bucket de dépôt. Cette partie sera également l’occasion pour nous de découvrir la gestion des droits et de la sécurité sur AWS.

--

--