Ingénieur Cloud DevOps Google Cloud au Club Med
30 mois d'industrialisation Google Cloud pour le programme data « Road 45 » de Club Med : landing zone sécurisée, gouvernance des accès par le code, project factory Terraform self-service, et migration de la BI legacy vers BigQuery sans interruption.
Mission au cœur du programme « Road 45 », la data factory lancée par Club Med début 2022 en pleine crise Covid (~70 villages fermés) : de l'ordre de 8 M€ d'investissement, objectif +3 % de ventes via la personnalisation et la valeur vie client, environ 2 milliards d'enregistrements centralisés sur Google Cloud à travers 12 domaines data. Rôle d'ingénieur Cloud DevOps en deux temps : bâtir et sécuriser le socle GCP, puis migrer la BI historique vers BigQuery.
- de confiance sur le socle GCP
- 30 mois
- domaines data industrialisés
- 12
- interruption pendant la bascule BI
- 0
Technique & responsabilité
Conçu une « project factory » Terraform qui provisionne et câble les dépôts GitLab des équipes — chacun auto-généré avec un socle IaC standard et des accès CI à rotation — pour qu'un non-spécialiste n'ait qu'une configuration minimale à éditer.
socle self-service repris par les équipes data du programme
TerraformGCP IAMGitOpsGitLab CIself-serviceInitiateur et contributeur principal du dépôt d'infrastructure IAM / landing zone GCP (hiérarchie d'organisation, VPC partagé, gouvernance des accès) : le socle sécurisé sur lequel les équipes data ont construit.
socle cloud commun à l'ensemble des équipes du programme
Google CloudTerraformlanding zoneIAMWorkload Identity FederationAzure ADConçu et piloté la bascule « double run » zéro-interruption de la BI historique : SAS et SQL tournent en parallèle, comparent volumes et précision et signalent tout écart avant de basculer la vue exposée du legacy vers BigQuery.
bascule des flux BI sans interruption de service
BigQueryDataformSQLmigration de donnéesqualité des donnéesSASOutillé le double run comme un contrôle de fiabilité de la donnée : assertions Dataform, jeux de test dédiés et comparaison des fichiers de sortie, avec des filtres isolant les corrections de règles métier volontaires des écarts subis — d'abord une passe rapide sur un sous-ensemble partitionné par jour, puis une recette élargie à l'ensemble.
écarts détectés et qualifiés avant bascule, pas après
DataformBigQuerySQLqualité des donnéesdata reliabilitytests de donnéesrecetteIntégré la chaîne de données Google Cloud à l'infrastructure on-premise, avec les outils de la maison : GitLab CI teste et déclenche, OpCon ordonnance, Ansible exécute Dataform en ligne de commande sur une machine maîtrisée, OS Login et Wallix tiennent les accès. L'exploitation pilote les chaînes historiques et les nouvelles au même endroit, avec les mêmes procédures, et le code comme le déploiement restent indépendants de la console du fournisseur.
déploiement des transformations indépendant de la console du fournisseur
DataformGitLab CIAnsibleOpConBigQueryréversibilitéCI/CDPorté le projet pilote de standardisation de Dataform pour les équipes data analysts et data engineering : structure et nommage, exemples de tests, patrons de modèles réutilisables, et provisioning du dépôt GitLab, du projet et du jeu de données Google Cloud en plus des droits.
standard Dataform repris par les équipes data après mon départ
DataformSQLgouvernance techniquestandardisationTerraformAnsibleGitLab CIrevue de codeFait des tests Dataform la documentation exécutable des cas limites d'un chantier de migration — valeur absente, montant entre deux arrondis (arrondi au pair le plus proche), date sur la borne de période — en outillant la fixture pour qu'elle se lise comme le cas qu'elle décrit : génération des UNION ALL, valeurs par défaut, alignement des colonnes, et un tri ajouté en sortie de dataset uniquement en contexte de test, faute de quoi la comparaison est un pile ou face.
les règles implicites retrouvées en migration figées en tests qui échouent si elles changent
DataformSQLtests de donnéestests unitairesqualité des donnéesdocumentationBigQuerySéparé dans le modèle ce qui ne bouge plus de ce qui bouge encore : des vues imbriquées réunissent un historique figé et les données récentes, encore corrigeables et bien plus souvent requêtées — une décision de justesse autant que de coût, avec le partitionnement et le clustering qui vont avec.
relectures fréquentes bornées aux données récentes plutôt qu'à tout l'historique
BigQueryDataformSQLmodélisation de donnéespartitionnementFinOpsoptimisation de requêtesÉcrit un parseur Python qui génère la documentation des règles métier depuis le graphe compilé du projet : la règle est décrite au plus près de la requête qui l'applique, dans un commentaire à balisage maison (@clé valeur) renvoyant à la documentation métier de référence, et le Markdown produit est versionné puis publié. La règle cesse d'être enfouie dans le code au moment précis où on la réécrit.
documentation des règles métier générée depuis le code, pas maintenue à côté
PythonSQLdocumentationDataformoutillage internetransmissionRendu le coût d'une requête visible au moment où elle tourne, et non sur la facture du mois : la CLI Dataform enrichie d'un affichage qui lit le volume lu par action et le multiplie par le tarif à la demande de la région — chaque développeur dispose ainsi d'un indicateur immédiat de partitionnement, de clustering et de jointures, par l'écart entre données lues et données retenues.
le coût de chaque action lisible dans le terminal, avant la facture
FinOpsBigQueryDataformoptimisation de requêtespartitionnementJavaScriptoutillage interneDonné à chaque développeur son espace isolé dans un projet BigQuery partagé : un utilitaire dérive un préfixe de son nom d'utilisateur git et génère les trois fichiers de son poste — alias de commande, identifiants, configuration — si bien que deux exécutions simultanées cessent d'écrire dans les mêmes tables, sans un seul paramètre à saisir à la main. Versions de Node et de la CLI épinglées, pour qu'un écart entre postes ne vienne jamais de l'outil.
des exécutions concurrentes sans collision, sans configuration manuelle
DataformBigQueryexpérience développeurself-serviceenvironnements de développementbashoutillage interneRéconcilié deux chaînes de calcul par le hachage de la ligne entière : les deux sources réunies dans une même table avec un discriminant, comptage par hachage, retrait des lignes reproduites à l'identique, et une assertion qui échoue tant qu'il reste un écart — ne survit à ce filtre que ce qu'il faut expliquer à la main, qu'il s'agisse d'une différence de précision, d'arrondi ou de format de date.
l'écart ramené aux seules lignes qui demandent une explication
BigQueryDataformSQLréconciliation de donnéesdata reliabilityassertionsqualité des donnéesContribué au programme data « Road 45 » de Club Med, né de la crise Covid, en bâtissant le socle cloud des 12 domaines data et en migrant la BI historique vers BigQuery.
12 domaines data industrialisés sur Google Cloud
Google CloudBigQuerydata platformmigrationMis en place une gouvernance des accès entièrement par le code : chaque demande de droit passe par une merge request validée automatiquement en CI avant application — revue, traçabilité et principe de moindre privilège intégrés au flux.
chaque accès tracé et revu via une merge request validée en CI
GCP IAMgouvernancemoindre privilègeGitOpsGitLab CIsécuritéAu-delà du socle d'accès, mise en place de briques transverses de l'organisation : suivi des coûts (FinOps), sécurité (SecOps) et un catalogue de données à l'échelle de l'entreprise.
briques FinOps, SecOps et data catalog déployées à l'échelle de l'org
FinOpsSecOpsGoogle Clouddata governanceTerraform
Humain & managérial
Formé la recrue DevOps interne et ma propre relève côté data, avec une passation soignée à mon remplaçant : l'équipe a gagné en autonomie et a continué sans point de rupture après mon départ.
continuité assurée — montée en autonomie de l'équipe puis reprise sans moi
mentoratmontée en compétencestransmissiontravail en équipePoint de convergence entre les équipes internes de Club Med, deux ESN partenaires (OCTO, Avisia) et des freelances : j'ai fait le lien entre des métiers très différents — data scientists, DBA, réseau, systèmes — autour d'un cadre technique commun.
cadre commun adopté par des équipes de plusieurs organisations
collaborationcoordinationcommunicationtravail multi-équipesD'un rôle aux contours flous, j'ai bâti une équipe cloud DevOps interne autonome : prendre l'initiative de structurer là où le cadre manquait, plutôt que d'attendre qu'on me le donne.
un périmètre flou transformé en une équipe autonome et durable
autonomieprise d'initiativestructurationownershipPour rester fiable sans me laisser déborder, j'ai cadencé le temps de l'équipe en créneaux dédiés — un fil rouge, un temps d'écoute des demandes, un créneau quotidien pour les urgences : de la sérénité par l'organisation.
priorités tenues et urgences absorbées sans désorganiser le fond
gestion du tempsfiabilitécalme sous pressionorganisationAccompagner des profils très variés — data scientists, DBA, administrateurs systèmes, jusqu'à une personne proche de la retraite — vers Git, Terraform et le cloud : expliciter les prérequis insoupçonnés et avancer au rythme de chacun.
montée en compétence d'équipes non-dev vers l'infrastructure-as-code
pédagogiemontée en compétencespatiencesens du collectif
Approche
Exposé la donnée avant de migrer le calcul : la vue BigQuery consommée par la BI a d'abord pointé vers un export Cloud Storage des fichiers produits par la chaîne historique, si bien que la bascule s'est réduite à changer la définition de cette vue vers les tables Dataform — le consommateur n'avait rien à refaire.
un seul point de bascule, côté entrepôt, invisible du lecteur
BigQueryCloud Storagemigration de donnéesconception de vuescontinuité de serviceParti des blueprints Google pour les simplifier en modules maîtrisés et lisibles plutôt que d'empiler des abstractions — priorité constante à ce que les équipes peuvent comprendre et faire évoluer seules.
modules internes repris et maintenus par les équipes
pragmatismesimplicitémaintenabilitéInfrastructure as Code
Vue composée depuis une base de faits vérifiés — un même socle, relu selon l'angle du lecteur.