Slide 1

Slide 1 text

Comment mettre mes BigData dans Google Cloud Platform ?

Slide 2

Slide 2 text

Présentation BigData @ GCP - WeSpeakCloud WeScale La transmission et le partage des connaissances font intégralement partie de nos valeurs chez WeScale. C’est pour cela que nous avons décidé d'organiser, les #WeSpeakCloud, une série d'événements gratuits où nous pourrons apprendre et discuter ensemble sur des sujets actuels qui constituent les technologies et l'environnement Cloud.

Slide 3

Slide 3 text

● Aurélien Perrier ● Sébastien Lavayssière Lancement BigData @ GCP - WeSpeakCloud Les présentateurs

Slide 4

Slide 4 text

Cette session des WeSpeakCloud a pour objectif de présenter une méthode de collecte, de traitement et de stockage d’un ou plusieurs flux de données en utilisant le Cloud de Google. C’est une présentation orienté architecture d’infrastructure et système et non une présentation orientée pour des Data Scientistes même si cette projection des données est pour leur usage. Objectifs de cette session BigData @ GCP - WeSpeakCloud Mes Bigdata dans GCP

Slide 5

Slide 5 text

Besoins de l’application Invention d’un cas client

Slide 6

Slide 6 text

Le client est une société proposant des services autour des réseaux sociaux. Pour la version suivante de son offre de service il a besoin de faire des analyses sur des réseaux sociaux diverses. Objectif de cette application BigData @ GCP - WeSpeakCloud Cas client fictif

Slide 7

Slide 7 text

Objectif de cette application BigData @ GCP - WeSpeakCloud Cas client Data Sources Normalisation Enrichissement Stockage Analytics Visualisation Flux Admin Public

Slide 8

Slide 8 text

Il veut offrir à ces clients : ● Un flux d’information multi-canal sur un sujet donné. ● Une agrégation des données disponibles via une API REST. ● Un dashboard “administrateur” de sélection de messages. ● Un dashboard “client” de projection des messages. Et pour ses collaborateurs : ● Une source d’information facile sur l’historique des tweets d’un sujet. ● Une étude des statistiques du réseau social sur une période de temps. Objectif de cette application BigData @ GCP - WeSpeakCloud Cas client

Slide 9

Slide 9 text

Le flux est disponible via Server-sent Events. Ce protocole, disponible sur HTTP/2, permet la lecture d’un flux en continue. Ce flux peut être utilisé directement par un client. Dans cette démo nous allons utiliser ce flux dans un client web en utilisant HTML5 qui implémente nativement le protocole SSE. Flux de messages “admin” et “client” BigData @ GCP - WeSpeakCloud Cas client

Slide 10

Slide 10 text

Il faut récupérer deux informations nécessaires aux utilisateurs finaux : ● Le top 10 des émetteurs. ● Les statistiques du système (nombre de messages, latence, …). API Agrégation BigData @ GCP - WeSpeakCloud Cas client

Slide 11

Slide 11 text

● Scalabilité de la chaîne de traitement : objectif pseudo-temps réel. ● Traçabilité de bout en bout de la chaîne de traitement. ● Traçabilité des requêtes vers l’API . Besoins techniques BigData @ GCP - WeSpeakCloud Cas client

Slide 12

Slide 12 text

● Démonstration interface “administrateur”. ● Démonstration interface “public”. ● Démonstration de la feuille GSheet. Démo de la solution BigData @ GCP - WeSpeakCloud Présentation au client

Slide 13

Slide 13 text

Architecture Cloud

Slide 14

Slide 14 text

Architecture BigData @ GCP - WeSpeakCloud Schéma injectors Kubernetes Injectors Twitter Mastodon PubSub Topic Raw PubSub Topic Raw

Slide 15

Slide 15 text

PubSub ● Middleware Oriented Message ● Service Managé ● Publisher/Subscriber ● Scalabilité automatique Kubernete Engine ● Kubernetes ● Service managé ● Intégration dans GCP ● Scalabilité automatique GRPC ● Protocole ● Implémenté dans PubSub ● Amélioration des performances par rapport à HTTP + Json Outils utilisés BigData @ GCP - WeSpeakCloud PubSub - GKE - gRPC

Slide 16

Slide 16 text

Architecture BigData @ GCP - WeSpeakCloud Schéma normalizer Kubernetes Normalizers Raw Raw Mastodon Twitter Normalized Natural Language API

Slide 17

Slide 17 text

● Utilisation de “Sentiment Analysis”. ● AutoML ● Présentation d’un indice entre -1 et 1: ○ Supérieur à 0 : sentiment positif. ○ Inférieur à 0 : sentiment négatif. Outils utilisés BigData @ GCP - WeSpeakCloud Natural Language API

Slide 18

Slide 18 text

Et pourquoi pas ? BigData @ GCP - WeSpeakCloud Dataflow / Dataproc Cloud Dataflow Cloud Dataproc Service managé permettant l'exécution de pipeline “Beam” ou de job “Spark”. Utilisation: micro-batch et streaming. Cas d’utilisation serverless. Service managé permettant l'exécution de job “Spark” sur une architecture Hadoop. Utilisation: batch

Slide 19

Slide 19 text

Architecture BigData @ GCP - WeSpeakCloud Schéma consumer Kubernetes Consumers Normalized BigTable BigTable Aggregator DataStore Stats CloudScheduler MemoryStore Count Aggregator (listener) Schedule

Slide 20

Slide 20 text

BigTable ● Base de donnée ● Orienté colonne ● Orienté BigData MemoryStore ● Redis ● Service Managé ● Gestion du cache ● Accès rapide à la donnée DataStore ● Base de donnée ● NoSQL ● Disponibilité ● Lecture rapide Outils utilisés BigData @ GCP - WeSpeakCloud BigTable - MS - DS

Slide 21

Slide 21 text

● Cron Job ● PubSub ou HTTP triggers Outils utilisés BigData @ GCP - WeSpeakCloud Cloud scheduler

Slide 22

Slide 22 text

● Calcul de la clef. ● Exemple de code ● Regardons la table ○ cbt -instance "test-instance" read "test-table" Zoom sur ... BigData @ GCP - WeSpeakCloud Les data dans BigTable...

Slide 23

Slide 23 text

Users Users Public Admin Architecture BigData @ GCP - WeSpeakCloud Consommation k8s Consumers Public Aggregator DataStore MemoryStore Validated Istio S S E BigTable BigQuery Google Sheet DS Admin S S E Normalized

Slide 24

Slide 24 text

Google Sheet ● SaaS ● Tableur ● Intégration avec GCP facilité BigQuery ● Service Managé ● Analytics BigQuery DataSet ● Public ou privé ● Mapping ou repo ● Dataset à la journée (?) Outils utilisés BigData @ GCP - WeSpeakCloud GSheet - BQ - BQDS

Slide 25

Slide 25 text

SELECT ms.user.cell.value as user, ms.sentiment.cell.value as sentiment FROM `slavayssiere-sandbox.test_bq.ms` WHERE rowkey LIKE 'twitter-#kubernetes-%' ORDER BY ms.data.cell.timestamp DESC LIMIT 100 Zoom sur ... BigData @ GCP - WeSpeakCloud Les requêtes dans BigQuery...

Slide 26

Slide 26 text

● en Golang ● Serverless ● Intégration avec une API Gateway… à venir ! Outils utilisés BigData @ GCP - WeSpeakCloud Cloud function

Slide 27

Slide 27 text

● Javascript Style ● Exemple de code Zoom sur ... BigData @ GCP - WeSpeakCloud Le développement dans...

Slide 28

Slide 28 text

Architecture : schéma global BigData @ GCP - WeSpeakCloud Kubernetes Injectors Twitter Mastodon Raw Raw Normalizers Mastodon Twitter Norm Consumers BigTable BigTable Agg-app DS Scheduler MS Agg-listen Pub & Priv BigQuery Google Sheet Trig Users Valid

Slide 29

Slide 29 text

Architecture Infrastructure

Slide 30

Slide 30 text

Infrastructure Google Cloud - Schéma général BigData @ GCP - WeSpeakCloud

Slide 31

Slide 31 text

Infrastructure Kubernetes - outils utilisés BigData @ GCP - WeSpeakCloud Outils Identity-Aware Proxy External DNS Prometheus Operator Istio Helm

Slide 32

Slide 32 text

Infrastructure as Code BigData @ GCP - WeSpeakCloud Outils Terraform Outil IaC, Base de connaissance Infrastructure. Gcloud Commande CLI officielle Google Cloud Plateform, Création / modification / suppression de ressources. Kubectl Commande CLI Kubernetes, Création / modification / suppression de ressources au sein d’un Cluster.

Slide 33

Slide 33 text

Infrastructure as Code BigData @ GCP - WeSpeakCloud Etapes de construction de l’infrastructure ● Utilisation des layers Terraform et de Gcloud pour construire l’infrastructure ● Utilisation de Helm et Kubectl pour les objets Kubernetes ● Bash pour les lier toutes les parties ...

Slide 34

Slide 34 text

Infrastructure as Code BigData @ GCP - WeSpeakCloud Layer-Base VPC Public DNS Private DNS IAM Private Subnet Secondary Range pods Secondary Range services NAT

Slide 35

Slide 35 text

Infrastructure as Code BigData @ GCP - WeSpeakCloud Layer-Bastion VPC Private DNS Private Subnet Bastion Public DNS S S H Outils d’administration HTTP

Slide 36

Slide 36 text

Infrastructure as Code BigData @ GCP - WeSpeakCloud Layer-Kubernetes VPC Private Subnet Secondary Range pods Secondary Range services Kubernetes Node Pool Node-a Node-b Node-c

Slide 37

Slide 37 text

Infrastructure as Code BigData @ GCP - WeSpeakCloud Layer-Data VPC BigTable Node-a Node-b Node-c Cloud Scheduler PubSub - topic 1 PubSub - topic 2 PubSub - topic 3 PubSub - topic n PubSub - sub 1 PubSub - sub 2 PubSub - sub 1

Slide 38

Slide 38 text

Infrastructure as Code BigData @ GCP - WeSpeakCloud Layer-Services VPC Private Subnet Kubernetes BackendConfig Public BackendConfig IAP

Slide 39

Slide 39 text

Infrastructure Istio BigData @ GCP - WeSpeakCloud Kubernetes istio-system normalizer injector consumers app-* agregato r twitter APIs Twitter proxy proxy mastodon proxy proxy proxy proxy twitter mastodon APIs Mastodon svcentry svcentry svcentry svcentry Istio-Gateway-IAP svcentry svcentry svcentry Istio-Gateway-Public

Slide 40

Slide 40 text

Scalabilité BigData @ GCP - WeSpeakCloud Schéma général Kubernetes namespace: custom-metrics service-account Deployment + Service custom-metrics-stackdriver-adapter APIService v1beta1.external.metrics.k8s.io v1beta1.custom.metrics.k8s.io namespace applicatif Deployment application HorizontalPodAutoscaler Pub/sub

Slide 41

Slide 41 text

Tips

Slide 42

Slide 42 text

Problèmes rencontrés BigData @ GCP - WeSpeakCloud Etapes ● Istio : temps de propagation des “ServiceEntry” ● Global Load-Balancer HTTP avec GCP : Pilotage avec les “Ingress” de GCE ● Gestion de la traçabilité via PubSub...

Slide 43

Slide 43 text

Code applicatif : exemples BigData @ GCP - WeSpeakCloud ● Go-mods ● Conteneurisation multi-stage ● SDK Golang Google Cloud Platform ● Server-sent Events Par l’exemple sur “app-sse” et “aggregator” !

Slide 44

Slide 44 text

Observability BigData @ GCP - WeSpeakCloud Jaeger Prometheus + Grafana Kiali SourceGraph

Slide 45

Slide 45 text

Conclusion enfin la FIN...

Slide 46

Slide 46 text

● intégration des bucket backend sur les Ingress GKE … ("ingress-gce" issues # 33) ● Enrichissement des données (Natural Language API & autres...) ● Intégration de pipeline automatisés pour ○ Dataproc ○ Dataflow ● intégration des endpoints Cloud Functions dans le périmètre du LB HTTP IAP ● authentification de la GSheet par rapport aux appels REST vers la plateforme La suite... BigData @ GCP - WeSpeakCloud Pour aller plus loin...

Slide 47

Slide 47 text

Questions ?

Slide 48

Slide 48 text

● Vous pouvez retrouver tout le code de cette démonstration sur: https://github.com/WeScale/bigdata-on-gcp ● La présentation est disponible sur SpeakerDeck (lien dans le github) ● La vidéo sera disponible sur notre chaîne Youtube : WescaleTV Sur Github... BigData @ GCP - WeSpeakCloud Retrouver la présentation et le code...

Slide 49

Slide 49 text

23 rue Taitbout 75009 Paris www.wescale.fr | blog.wescale.fr Aurélien Maury Directeur Technique 06 76 24 69 67 [email protected] Sébastien Lavayssière Flying Designer 06 24 99 47 48 [email protected] Aurélien Perrier Cloud Builder 06 30 05 45 87 [email protected]