SlideShare uma empresa Scribd logo
1 de 70
Baixar para ler offline
Construire un Data lake managé
1
Sur Google Cloud
Construire un Data lake managé Sur Google Cloud
Ivan Beauvais
Cloud Data engineer
@ibeauvais
Nicolas Dechandon
Cloud Data engineer
@ndechandon
Jean-Baptiste Claramonte
Cloud Data engineer
@jbclaramonte
2
Qui sommes nous ?
#On-premise #Migration #Cloud GCP #Use cases
3
Construire un Data lake managé Sur Google Cloud
Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake ?
Comment je les exploite?
Comment j'orchestre des traitements ?
4
Plan
5
Comment je stocke mes données ?
Comment je stocke mes données ?
Mes données
non structurées
structurées
Cloud Storage
Big Query
Mes services de
stockage
6
Comment je stocke mes données ?
Cloud Storage
Qu’est ce que c’est ?
● Du stockage objet (S3)
● Réparti dans des buckets
● Les fichiers appelés objets sont immuables
● Identifiés par un id qui abstrait la technique
de stockage.
● Pas de limite sur la taille ou le format
● La rapidité du service permet d'être un
cache
7
Cloud storage
Cloud Storage
Comment interagir ?
● CLI : gsutil
● API :REST
● Client : C++, C#, Go, Java, Node.js, PHP,
Python, Ruby
Au quotidien on a l’impression d’interagir avec un
“file system”
Typiquement pour déposer des fichiers plats tels
que des CSV ou JSONL
Cloud
Storage
gsutil ...
8
Cloud storage
9
Cloud Storage UI
● Entrepôt de données
● Serverless
● Centaines de Tera à l’infini
● Requêtage avec une syntaxe type SQL
● On paye pour le stockage et la quantité
de données scannées
BigQuery = data
warehouse
SQL Stockage
10
Bigquery
Big Query
bq ...Comment interagir ?
● CLI : bq
● API : REST
● Client : C#, Go, Java, Node.js, PHP,
Python, Ruby
On charge ou exporte les données depuis GCS
avec ou sans schéma
11
Bigquery
12
Console pour exécuter des requêtes dans Big Query
Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake
?
Comment je les exploite?
Comment j'orchestre des traitements
?
13
Plan
14
Comment je stocke mes données ?
Comment je les intègre ?
Les outils pour intégrer les sources de données
Cloud
Dataflow Big Query
Cloud
Pub/Sub
15
Comment je les intègre ?
Qu’est-ce-que c’est ?
★ La solution de messages
asynchrones de GCP
★ Managé, serverless et scalable
★ Taille max d’un message : 10 Mo
★ Livraison des messages
“at-least-once”
● Donc les consommateurs
doivent se protéger des
éventuelles doublons
16
Comment je les intègre ?
Cloud Pub/Sub
One to Many
Cloud Pub/Sub
17
Comment je les intègre ?
Cloud Pub/Sub
18
Many to One
Comment je les intègre ?
Cloud Pub/Sub
19
Many to Many
Comment je les intègre ?
Stockage et Consommation des
messages
● Les consommateurs se branchent à une
“Souscription”
● Sans “Souscription” les messages sont
perdus
● Les messages sont stockés 7 jours
Pub/Sub
Souscription 1
Pub/Sub
Souscription 2
Cloud
Pub/Sub
20
Comment je les intègre ?
Exemples d’utilisation
Cloud
Storage
Cloud
Pub/Sub
21
Object
event
Cloud
Pub/Sub
trigger
Cloud
Functions
Cloud
Dataflow
Cloud
Pub/Sub
stream
Comment je les intègre ?
Pour intégrer, préparer et analyser de
très large volume de données en batch
ou en streaming temps réel (modèle
unifié)
Dataflow s’occupe de scaler
automatiquement le nombre de
machinesCloud
Dataflow
22
Dataflow
Comment je les intègre ?
Cloud
Dataflow
23
Un exemple de pipeline.
Comment je les intègre ?
Google a ouvert le code avec
Apache Beam
Cloud
Dataflow
24
Comment je les intègre ?
Nativement en Java
Autres langages disponibles:
● python, go, SQL
● scala possible avec scio (par
Spotify)
25
Comment je les intègre ?
Repose sur le principe de “runner” qui
font l’abstraction de la cible d’exécution,
ainsi il est possible d’exécuter un
pipeline Beam sur:
● Dataflow
● Direct (machine local)
● Spark
● Flink
26
Comment je les intègre ?
● En streaming
● Insertion et mise à jour en DML
(INSERT & UPDATE)
● Chargement depuis des fichiers :
○ CSV,
○ JSON (new line delimited),
○ Parquet,
○ Avro,
○ ORC
27
Méthodes d’ajout de données
BigQuery
Comment je les intègre ?
L’essentiel du coût vient du requêtage
Il existe des optimisations possible pour rendre les
requêtes moins coûteuse (et plus rapide au passage)
● Partitionner une table par date
● Clustering sur des champs
Optimisation du requêtage
28
Comment je les intègre ?
Exemple de scénarios d’intégration possibles
BigQueryCloud
Dataflow
29
Comment je les intègre ?
Exemple de scénarios d’intégration possibles
Cloud
Pub/Sub
BigQueryCloud
Dataflow
stream de données
30
Comment je les intègre ?
Exemple de scénarios d’intégration possibles
Cloud
Pub/Sub
BigQueryCloud
Dataflow
Cloud Storage
gsutil cp ... notif
new file
31
Comment je les intègre ?
access
file
Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake
?
Comment je les exploite?
Comment j'orchestre des traitements
?
32
Plan
33
Comment je les exploite ?
Travailler avec la donnée
SQL
notebook
PythonLibraries
Spark
Systèmes existants
● Visualiser
● Explorer
● Calculer
● ...
34
Comment je les exploite ?
3 Grandes catégories
BigQuery
Cloud
Dataflow
Cloud
Dataproc
Cloud Machine
Learning Engine
BigQuery BigQuery
BigQuery
35
Comment je les exploite ?
BigQuery pour l’exploration et le calcul
BigQuery
Query standard SQL
(SQL 2011 compliant)
Create Table From
Query
BigQuery ML
DML : create, update,
merge
Copy table
36
Comment je les exploite ?
BigQuery pour l’exploration et le calcul
Web UI
bq (CLI)
BigQuery
37Custom Application
Cloud
Datalab
API
Services Google Cloud
Comment je les exploite ?
BigQuery pour
l’exploration et le calcul
👍 Scalabilité infinie en théorie
👍 Rapidité, fiabilité
👍 Sécurité & permissions simplifiées
👍 Facturation à l’usage
👎 SQL seulement pour manipuler les
données
👎 Limité par les fonctionnalités de BigQuery
38
Comment je les exploite ?
BigQuery
Et le data-scientist dans tout ça ?
BigQuery
?!
39
Comment je les exploite ?
Calcul avec un autre service managé
BigQuery Cloud Storage
export : csv, avro, json
Cloud Dataproc
BigQuery
import : csv, avro, json, parquet
Cloud Storage
40
Comment je les exploite ?
Dataproc le cluster Hadoop à la demande
Cloud Dataproc
● Create hadoop Cluster
● Submit Job : Spark,
hadoop, pig ..
● Delete Cluster
● Upscaling cluster
● Downscaling cluster
● Automatic deletion
Read/write
Cloud Storage
41
Comment je les exploite ?
Calcul dans un autre service
Google Cloud
👍 Bénéficier des fonctionnalités
supplémentaires: Spark, Bibliothèques
Python, Tensor Flow
👍 Ressources de calcul créées au besoin
👍 Rapidité pour passer d’un monde à un autre
en restant dans la même zone/région
👎 Nécessite l’export import des données et
donc de l’orchestration supplémentaire
👎 Ressource de calcul à dimensionner
soi-même
BigQuery Cloud
Storage
Cloud
Dataproc
Cloud Machine
Learning Engine
42
Comment je les exploite ?
Calcul dans un service
externe
👍 Uniquement pour la compatibilité avec un
système existant
👎 Nécessite l’export import des données
👎 Coût du réseau pour récupérer les
données
BigQuery
43
Comment je les exploite ?
Exploiter la donnée
● Choisir le bon outil en fonction du
besoin :
○ BigQuery si SQL suffit
○ Autres Services managés pour les
autres
○ Service externe si pas le choix
● Données et unités de calcul dans la
même région/zone
● Utiliser l’import export BigQuery
● Privilégier avro/parquet pour les
échanges
● Créer des ressources de calcul au
besoin
44
Comment je les exploite ?
Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake
?
Comment je les exploite?
Comment j'orchestre des traitements
?
45
Plan
46
Comment j’orchestre des traitements ?
Besoin d’orchestration ?
Import
BigQuery
Create
Cluster
Launch Job
Monthly
Export
Table 1
Export
Table 2
Remove
Cluster
Load
BigQuery
Archive Csv
Merge Table
Incoming
CSV
Notify
PubSub
Import
BigQuery
Create
Cluster
Launch Job
Monthly
Export
Table 1
Export
Table 2
Remove
Cluster
Load
BigQuery
Archive Csv
Merge Table
Incoming
CSV
Notify
PubSub
47
Comment j’orchestre des traitements ?
Cloud Functions
call HTTP
Cloud Functions
Triggers:
Languages:
Cloud Pub/Sub
Cloud Storage
48
Comment j’orchestre des traitement
👍 Serverless
👍 Simple à utiliser
👍 Javascript, Python ou Go
👍 Facturation à l’appel
👎 Mémoire et temps de calcul limité
👎 Pour des tâches simples
Cloud Functions
49
Comment j’orchestre des traitements ?
👍 Simple pour consommer et produire des
événements
👍 Suivi des différentes étapes du workflow de
traitement
👍 Permet de développer des logiques
complexes
👎 Logique d’orchestration à coder
👎 Uniquement sur événements
Cloud Dataflow
50
Comment j’orchestre des traitements ?
Cloud Composer
● Apache Airflow managé
● Une tâche = un opérateur
● De nombreux opérateurs pour
Google Cloud
● Un ensemble de tâche = un
DAG
● Chaque DAG est schedulé
● Gestion des permissions :
permet de planifier des tâches
dans des projets différents
● Workflow du dag écrit en Python
51
Comment j’orchestre des traitements ?
Airflow
Dag
start_date
scheduler_interval
Tasks
DataprocClusterCreateOperator
BigQueryOperator
DataProcSparkOperator
DataprocClusterDeleteOperator
52
Comment j’orchestre des traitements ?
Airflow : dag visualisation
53
Comment j’orchestre des traitements ?
Cloud composer pour
l’orchestration
👍 Démarrage de tâches planifiées
👍 Permet de gérer des enchaînements de
tâches complexes
👍 Web UI de suivi des jobs/tâches
👍 Reprise des tâches dans le passé
👎 Complexe
👎 Coût
👎 Mise en place
👎 Pas fait pour coder une logique trop
complexe
Cloud Composer
54
Comment j’orchestre des traitements ?
Orchestration
● Choisir le bon service à utiliser :
○ Tâches simples et rapides dans un
même projet : Cloud Functions
○ Tâches basées sur des
événements, et/ou logique
complexe : Dataflow
○ Workflow de tâches, déclenché
périodiquement : Cloud Composer
● Avoir des taches idempotentes
● Privilégier les petits workflows
de traitement
55
Comment j’orchestre des traitements ?
Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake
?
Comment je les exploite?
Comment j'orchestre des traitements
?
56
Plan
57
Comment je maîtrise mon data lake ?
La disponibilité
L’intégrité
La confidentialitéLa traçabilité
L’authentification
La non répudiation
Que dois je maîtriser ? 58
Comment je maîtrise mon data lake ?
Quels sont mes droits et
devoirs ?
Avant d’utiliser un service en production il faut
connaître notre responsabilité
“AWS est responsable de la protection de
l'infrastructure exécutant tous les services proposés
dans le cloud AWS”
“La responsabilité du client sera déterminée en
fonction des services cloud d'AWS que ce dernier
choisit”
provided by AWS
59
Comment je maîtrise mon data lake ?
provided by CloudOnMove
La responsabilité partagée.
60
Comment je maîtrise mon data lake?
Cloud Deployment
Manager
La disponibilité - SAAS
● Être capable de consommer
(facturation)
● Maîtriser la configuration et la
reproduire facilement entre des
environnements
Infra as code
Mes devoirs lors d’un service SAAS
● Organisation
● Dossier
● Projet
● IAM
● Ressources 80%
● IAM
● Projet
● Ressources 50%
61
Comment je maîtrise mon data lake ?
La disponibilité - PAAS
● Application résistante
(Autoscaling)
● Application robuste (Auto
healing, Retry, Circuit Breaker...)
● Monitoring et alerting complète
Mes devoirs lors d’un service PAAS
Stackdriver
Logging
Tracing
Monitoring
● métriques spécifiques
● alertes
62
Comment je maîtrise mon data lake ?
L'authentification
Cloud Identity pour gérer l’authentification des
utilisateurs
● Nativement lié à GSuite
● Synchronisation d’un AD possible
● Créer des groupes
Les services account pour gérer
l’authentification des machines.
● Attention à la diffusion des clefs et leurs
rotations
Reposez vous sur l’existant.
63
Comment je maîtrise mon data lake ?
La confidentialité
● Protection par GCP
○ Chiffrement des communications “at
REST”
○ Chiffrement des supports
64
● Notre responsabilité
Les rôles et leur héritages sont critiques.
● Organisation
● Projets communs
● Dossiers d’équipes
● Dossier d’applications
● Projets
● Ressources
Comment je maîtrise mon data lake ?
L’intégrité - des données
● Projets producteurs.
● Projets consommateurs.
● Projets dépôts
Notre vision
Nos règles
● Toutes les sources sont conservées
● Une table est processée par un seul
“traitement”
● Toutes nos opérations sont
idempotentes
● Les tables ou leurs partitions sont
immuables
65
Dépôts de donnéesProducteurs de données
Consommateur
Comment je maîtrise mon data lake ?
La traçabilité - des données
Suivi des préconisations RGPD
● Registre de traitement
● Lineage
○ source de données
○ ligne
66
Comment je maîtrise mon data lake ?
La non répudiation
La non répudiation de l'origine prouve que
les données ont été envoyées,
La non répudiation de l'arrivée prouve
qu'elles ont été reçues.
● Les services accounts
○ un compte par correspondant
○ attention aux clés et leurs
rotations
67
Comment je maîtrise mon data lake ?
Comment je stocke mes données ?
Comment je les intègre ?
Comment je maîtrise mon data lake
?
Comment je les exploite?
Comment j'orchestre des traitements
?
68
Plan
69
Merci
70
Questions

Mais conteúdo relacionado

Semelhante a Construire un data lake managé - GDG Paris - Juin 2019

Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
Ludovic Piot
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
MongoDB
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
Ludovic Piot
 
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationSession en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
Denodo
 

Semelhante a Construire un data lake managé - GDG Paris - Juin 2019 (20)

Devoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le CloudDevoxx: Tribulation d'un développeur sur le Cloud
Devoxx: Tribulation d'un développeur sur le Cloud
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
 
Présentation Big Data et REX Hadoop
Présentation Big Data et REX HadoopPrésentation Big Data et REX Hadoop
Présentation Big Data et REX Hadoop
 
Morning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slidesMorning tech #2 - Démarche performance slides
Morning tech #2 - Démarche performance slides
 
Oxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performanceOxalide Morning tech #2 - démarche performance
Oxalide Morning tech #2 - démarche performance
 
Nuabee : solution de Plan de Reprise d'Activité Cloud dans le Cloud public d'...
Nuabee : solution de Plan de Reprise d'Activité Cloud dans le Cloud public d'...Nuabee : solution de Plan de Reprise d'Activité Cloud dans le Cloud public d'...
Nuabee : solution de Plan de Reprise d'Activité Cloud dans le Cloud public d'...
 
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
Lost in serverless AWS Lambda, Google Cloud Function, Azure Function quelle s...
 
Mon Stockage a la Cloud Attitude
Mon Stockage a la Cloud Attitude Mon Stockage a la Cloud Attitude
Mon Stockage a la Cloud Attitude
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to market
 
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp012014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
2014 03-26-appdevseries-session3-interactingwiththedatabase-fr-phpapp01
 
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPlus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
 
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDBPlus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
Plus de flexibilité et de scalabilité chez Bouygues Télécom grâce à MongoDB
 
Google App Engine - INTRO
Google App Engine - INTROGoogle App Engine - INTRO
Google App Engine - INTRO
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
 
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationSession en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
Poitou Charentes JUG - Traçabilité dans une architecture distribuée avec Node...
 
Les nouveautés stockage dans Windows Server 2012 R2
Les nouveautés stockage dans Windows Server 2012 R2Les nouveautés stockage dans Windows Server 2012 R2
Les nouveautés stockage dans Windows Server 2012 R2
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
Deployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDaysDeployer PHP et MariaDB dans Azure - TechDays
Deployer PHP et MariaDB dans Azure - TechDays
 

Mais de Jean-Baptiste Claramonte

Mais de Jean-Baptiste Claramonte (7)

Hands on drone challenge - xebicon'18
Hands on  drone challenge - xebicon'18Hands on  drone challenge - xebicon'18
Hands on drone challenge - xebicon'18
 
Introduction à Unikernel (Breizhcamp 2017)
Introduction à Unikernel (Breizhcamp 2017)Introduction à Unikernel (Breizhcamp 2017)
Introduction à Unikernel (Breizhcamp 2017)
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration Docker
 
Unikernel Xebicon 2016
Unikernel Xebicon 2016Unikernel Xebicon 2016
Unikernel Xebicon 2016
 
kubernetes, pourquoi et comment
kubernetes, pourquoi et commentkubernetes, pourquoi et comment
kubernetes, pourquoi et comment
 
Ecosysteme mesos university - devoxx france - 8 avril2015
Ecosysteme   mesos university - devoxx france - 8 avril2015Ecosysteme   mesos university - devoxx france - 8 avril2015
Ecosysteme mesos university - devoxx france - 8 avril2015
 
Google Compute Engine
Google Compute EngineGoogle Compute Engine
Google Compute Engine
 

Construire un data lake managé - GDG Paris - Juin 2019

  • 1. Construire un Data lake managé 1 Sur Google Cloud Construire un Data lake managé Sur Google Cloud
  • 2. Ivan Beauvais Cloud Data engineer @ibeauvais Nicolas Dechandon Cloud Data engineer @ndechandon Jean-Baptiste Claramonte Cloud Data engineer @jbclaramonte 2 Qui sommes nous ?
  • 3. #On-premise #Migration #Cloud GCP #Use cases 3 Construire un Data lake managé Sur Google Cloud
  • 4. Comment je stocke mes données ? Comment je les intègre ? Comment je maîtrise mon data lake ? Comment je les exploite? Comment j'orchestre des traitements ? 4 Plan
  • 5. 5 Comment je stocke mes données ? Comment je stocke mes données ?
  • 6. Mes données non structurées structurées Cloud Storage Big Query Mes services de stockage 6 Comment je stocke mes données ?
  • 7. Cloud Storage Qu’est ce que c’est ? ● Du stockage objet (S3) ● Réparti dans des buckets ● Les fichiers appelés objets sont immuables ● Identifiés par un id qui abstrait la technique de stockage. ● Pas de limite sur la taille ou le format ● La rapidité du service permet d'être un cache 7 Cloud storage
  • 8. Cloud Storage Comment interagir ? ● CLI : gsutil ● API :REST ● Client : C++, C#, Go, Java, Node.js, PHP, Python, Ruby Au quotidien on a l’impression d’interagir avec un “file system” Typiquement pour déposer des fichiers plats tels que des CSV ou JSONL Cloud Storage gsutil ... 8 Cloud storage
  • 10. ● Entrepôt de données ● Serverless ● Centaines de Tera à l’infini ● Requêtage avec une syntaxe type SQL ● On paye pour le stockage et la quantité de données scannées BigQuery = data warehouse SQL Stockage 10 Bigquery
  • 11. Big Query bq ...Comment interagir ? ● CLI : bq ● API : REST ● Client : C#, Go, Java, Node.js, PHP, Python, Ruby On charge ou exporte les données depuis GCS avec ou sans schéma 11 Bigquery
  • 12. 12 Console pour exécuter des requêtes dans Big Query
  • 13. Comment je stocke mes données ? Comment je les intègre ? Comment je maîtrise mon data lake ? Comment je les exploite? Comment j'orchestre des traitements ? 13 Plan
  • 14. 14 Comment je stocke mes données ? Comment je les intègre ?
  • 15. Les outils pour intégrer les sources de données Cloud Dataflow Big Query Cloud Pub/Sub 15 Comment je les intègre ?
  • 16. Qu’est-ce-que c’est ? ★ La solution de messages asynchrones de GCP ★ Managé, serverless et scalable ★ Taille max d’un message : 10 Mo ★ Livraison des messages “at-least-once” ● Donc les consommateurs doivent se protéger des éventuelles doublons 16 Comment je les intègre ? Cloud Pub/Sub
  • 17. One to Many Cloud Pub/Sub 17 Comment je les intègre ?
  • 18. Cloud Pub/Sub 18 Many to One Comment je les intègre ?
  • 19. Cloud Pub/Sub 19 Many to Many Comment je les intègre ?
  • 20. Stockage et Consommation des messages ● Les consommateurs se branchent à une “Souscription” ● Sans “Souscription” les messages sont perdus ● Les messages sont stockés 7 jours Pub/Sub Souscription 1 Pub/Sub Souscription 2 Cloud Pub/Sub 20 Comment je les intègre ?
  • 22. Pour intégrer, préparer et analyser de très large volume de données en batch ou en streaming temps réel (modèle unifié) Dataflow s’occupe de scaler automatiquement le nombre de machinesCloud Dataflow 22 Dataflow Comment je les intègre ?
  • 23. Cloud Dataflow 23 Un exemple de pipeline. Comment je les intègre ?
  • 24. Google a ouvert le code avec Apache Beam Cloud Dataflow 24 Comment je les intègre ?
  • 25. Nativement en Java Autres langages disponibles: ● python, go, SQL ● scala possible avec scio (par Spotify) 25 Comment je les intègre ?
  • 26. Repose sur le principe de “runner” qui font l’abstraction de la cible d’exécution, ainsi il est possible d’exécuter un pipeline Beam sur: ● Dataflow ● Direct (machine local) ● Spark ● Flink 26 Comment je les intègre ?
  • 27. ● En streaming ● Insertion et mise à jour en DML (INSERT & UPDATE) ● Chargement depuis des fichiers : ○ CSV, ○ JSON (new line delimited), ○ Parquet, ○ Avro, ○ ORC 27 Méthodes d’ajout de données BigQuery Comment je les intègre ?
  • 28. L’essentiel du coût vient du requêtage Il existe des optimisations possible pour rendre les requêtes moins coûteuse (et plus rapide au passage) ● Partitionner une table par date ● Clustering sur des champs Optimisation du requêtage 28 Comment je les intègre ?
  • 29. Exemple de scénarios d’intégration possibles BigQueryCloud Dataflow 29 Comment je les intègre ?
  • 30. Exemple de scénarios d’intégration possibles Cloud Pub/Sub BigQueryCloud Dataflow stream de données 30 Comment je les intègre ?
  • 31. Exemple de scénarios d’intégration possibles Cloud Pub/Sub BigQueryCloud Dataflow Cloud Storage gsutil cp ... notif new file 31 Comment je les intègre ? access file
  • 32. Comment je stocke mes données ? Comment je les intègre ? Comment je maîtrise mon data lake ? Comment je les exploite? Comment j'orchestre des traitements ? 32 Plan
  • 33. 33 Comment je les exploite ?
  • 34. Travailler avec la donnée SQL notebook PythonLibraries Spark Systèmes existants ● Visualiser ● Explorer ● Calculer ● ... 34 Comment je les exploite ?
  • 35. 3 Grandes catégories BigQuery Cloud Dataflow Cloud Dataproc Cloud Machine Learning Engine BigQuery BigQuery BigQuery 35 Comment je les exploite ?
  • 36. BigQuery pour l’exploration et le calcul BigQuery Query standard SQL (SQL 2011 compliant) Create Table From Query BigQuery ML DML : create, update, merge Copy table 36 Comment je les exploite ?
  • 37. BigQuery pour l’exploration et le calcul Web UI bq (CLI) BigQuery 37Custom Application Cloud Datalab API Services Google Cloud Comment je les exploite ?
  • 38. BigQuery pour l’exploration et le calcul 👍 Scalabilité infinie en théorie 👍 Rapidité, fiabilité 👍 Sécurité & permissions simplifiées 👍 Facturation à l’usage 👎 SQL seulement pour manipuler les données 👎 Limité par les fonctionnalités de BigQuery 38 Comment je les exploite ? BigQuery
  • 39. Et le data-scientist dans tout ça ? BigQuery ?! 39 Comment je les exploite ?
  • 40. Calcul avec un autre service managé BigQuery Cloud Storage export : csv, avro, json Cloud Dataproc BigQuery import : csv, avro, json, parquet Cloud Storage 40 Comment je les exploite ?
  • 41. Dataproc le cluster Hadoop à la demande Cloud Dataproc ● Create hadoop Cluster ● Submit Job : Spark, hadoop, pig .. ● Delete Cluster ● Upscaling cluster ● Downscaling cluster ● Automatic deletion Read/write Cloud Storage 41 Comment je les exploite ?
  • 42. Calcul dans un autre service Google Cloud 👍 Bénéficier des fonctionnalités supplémentaires: Spark, Bibliothèques Python, Tensor Flow 👍 Ressources de calcul créées au besoin 👍 Rapidité pour passer d’un monde à un autre en restant dans la même zone/région 👎 Nécessite l’export import des données et donc de l’orchestration supplémentaire 👎 Ressource de calcul à dimensionner soi-même BigQuery Cloud Storage Cloud Dataproc Cloud Machine Learning Engine 42 Comment je les exploite ?
  • 43. Calcul dans un service externe 👍 Uniquement pour la compatibilité avec un système existant 👎 Nécessite l’export import des données 👎 Coût du réseau pour récupérer les données BigQuery 43 Comment je les exploite ?
  • 44. Exploiter la donnée ● Choisir le bon outil en fonction du besoin : ○ BigQuery si SQL suffit ○ Autres Services managés pour les autres ○ Service externe si pas le choix ● Données et unités de calcul dans la même région/zone ● Utiliser l’import export BigQuery ● Privilégier avro/parquet pour les échanges ● Créer des ressources de calcul au besoin 44 Comment je les exploite ?
  • 45. Comment je stocke mes données ? Comment je les intègre ? Comment je maîtrise mon data lake ? Comment je les exploite? Comment j'orchestre des traitements ? 45 Plan
  • 47. Besoin d’orchestration ? Import BigQuery Create Cluster Launch Job Monthly Export Table 1 Export Table 2 Remove Cluster Load BigQuery Archive Csv Merge Table Incoming CSV Notify PubSub Import BigQuery Create Cluster Launch Job Monthly Export Table 1 Export Table 2 Remove Cluster Load BigQuery Archive Csv Merge Table Incoming CSV Notify PubSub 47 Comment j’orchestre des traitements ?
  • 48. Cloud Functions call HTTP Cloud Functions Triggers: Languages: Cloud Pub/Sub Cloud Storage 48 Comment j’orchestre des traitement
  • 49. 👍 Serverless 👍 Simple à utiliser 👍 Javascript, Python ou Go 👍 Facturation à l’appel 👎 Mémoire et temps de calcul limité 👎 Pour des tâches simples Cloud Functions 49 Comment j’orchestre des traitements ?
  • 50. 👍 Simple pour consommer et produire des événements 👍 Suivi des différentes étapes du workflow de traitement 👍 Permet de développer des logiques complexes 👎 Logique d’orchestration à coder 👎 Uniquement sur événements Cloud Dataflow 50 Comment j’orchestre des traitements ?
  • 51. Cloud Composer ● Apache Airflow managé ● Une tâche = un opérateur ● De nombreux opérateurs pour Google Cloud ● Un ensemble de tâche = un DAG ● Chaque DAG est schedulé ● Gestion des permissions : permet de planifier des tâches dans des projets différents ● Workflow du dag écrit en Python 51 Comment j’orchestre des traitements ?
  • 53. Airflow : dag visualisation 53 Comment j’orchestre des traitements ?
  • 54. Cloud composer pour l’orchestration 👍 Démarrage de tâches planifiées 👍 Permet de gérer des enchaînements de tâches complexes 👍 Web UI de suivi des jobs/tâches 👍 Reprise des tâches dans le passé 👎 Complexe 👎 Coût 👎 Mise en place 👎 Pas fait pour coder une logique trop complexe Cloud Composer 54 Comment j’orchestre des traitements ?
  • 55. Orchestration ● Choisir le bon service à utiliser : ○ Tâches simples et rapides dans un même projet : Cloud Functions ○ Tâches basées sur des événements, et/ou logique complexe : Dataflow ○ Workflow de tâches, déclenché périodiquement : Cloud Composer ● Avoir des taches idempotentes ● Privilégier les petits workflows de traitement 55 Comment j’orchestre des traitements ?
  • 56. Comment je stocke mes données ? Comment je les intègre ? Comment je maîtrise mon data lake ? Comment je les exploite? Comment j'orchestre des traitements ? 56 Plan
  • 57. 57 Comment je maîtrise mon data lake ?
  • 58. La disponibilité L’intégrité La confidentialitéLa traçabilité L’authentification La non répudiation Que dois je maîtriser ? 58 Comment je maîtrise mon data lake ?
  • 59. Quels sont mes droits et devoirs ? Avant d’utiliser un service en production il faut connaître notre responsabilité “AWS est responsable de la protection de l'infrastructure exécutant tous les services proposés dans le cloud AWS” “La responsabilité du client sera déterminée en fonction des services cloud d'AWS que ce dernier choisit” provided by AWS 59 Comment je maîtrise mon data lake ?
  • 60. provided by CloudOnMove La responsabilité partagée. 60 Comment je maîtrise mon data lake?
  • 61. Cloud Deployment Manager La disponibilité - SAAS ● Être capable de consommer (facturation) ● Maîtriser la configuration et la reproduire facilement entre des environnements Infra as code Mes devoirs lors d’un service SAAS ● Organisation ● Dossier ● Projet ● IAM ● Ressources 80% ● IAM ● Projet ● Ressources 50% 61 Comment je maîtrise mon data lake ?
  • 62. La disponibilité - PAAS ● Application résistante (Autoscaling) ● Application robuste (Auto healing, Retry, Circuit Breaker...) ● Monitoring et alerting complète Mes devoirs lors d’un service PAAS Stackdriver Logging Tracing Monitoring ● métriques spécifiques ● alertes 62 Comment je maîtrise mon data lake ?
  • 63. L'authentification Cloud Identity pour gérer l’authentification des utilisateurs ● Nativement lié à GSuite ● Synchronisation d’un AD possible ● Créer des groupes Les services account pour gérer l’authentification des machines. ● Attention à la diffusion des clefs et leurs rotations Reposez vous sur l’existant. 63 Comment je maîtrise mon data lake ?
  • 64. La confidentialité ● Protection par GCP ○ Chiffrement des communications “at REST” ○ Chiffrement des supports 64 ● Notre responsabilité Les rôles et leur héritages sont critiques. ● Organisation ● Projets communs ● Dossiers d’équipes ● Dossier d’applications ● Projets ● Ressources Comment je maîtrise mon data lake ?
  • 65. L’intégrité - des données ● Projets producteurs. ● Projets consommateurs. ● Projets dépôts Notre vision Nos règles ● Toutes les sources sont conservées ● Une table est processée par un seul “traitement” ● Toutes nos opérations sont idempotentes ● Les tables ou leurs partitions sont immuables 65 Dépôts de donnéesProducteurs de données Consommateur Comment je maîtrise mon data lake ?
  • 66. La traçabilité - des données Suivi des préconisations RGPD ● Registre de traitement ● Lineage ○ source de données ○ ligne 66 Comment je maîtrise mon data lake ?
  • 67. La non répudiation La non répudiation de l'origine prouve que les données ont été envoyées, La non répudiation de l'arrivée prouve qu'elles ont été reçues. ● Les services accounts ○ un compte par correspondant ○ attention aux clés et leurs rotations 67 Comment je maîtrise mon data lake ?
  • 68. Comment je stocke mes données ? Comment je les intègre ? Comment je maîtrise mon data lake ? Comment je les exploite? Comment j'orchestre des traitements ? 68 Plan