SlideShare une entreprise Scribd logo
Suivi d’activité avec Neo4j
• François Ritaly
• Build Engineer (Build Engineering Team)
• Situé à Paris
• Responsabilités
‒ Développement de plugins Gradle réutilisables
‒ Administration d’Artifactory
‒ Développement d’outils sur mesure
‒ Support aux équipes de développment (builds principalement)
‒ Sentinel (Le sujet de cette présentation)
Qui suis-je ?
Workday Confidential
La mission de mon équipe
• Définir les bonnes pratiques pour les
équipes de développement (dependency
locking, promotion d’artefacts, gestion des
meta-données)
• Fournir des outils génériques (Plugins
Gradle & autres outils sur mesure)
• Administrer les services communs
(Artifactory)
• Assister les équipes de développment
Build Engineering – Notre mission
Workday Confidential
• S’assurer que les règles sont bien suivies
• Chez Workday, les ingénieurs ont beaucoup de
liberté !
‒ Netflix: The Paved Road
• Les outils proposés sont-ils pertinents ?
• Comprendre comment les équipes de
développement travaillent
 On a besoin de réponses a ces questions !
Why We Need Monitoring
Workday Confidential
• Artefacts (Jars, Rpms, “Deliveries”, etc)
• CI Builds (Bamboo, Team City &Jenkins)
• SCM changes (BitBucket, GitHub, Gerritt, etc)
• Dépendences (entre Artifacts, Builds, etc)
• Tickets JIRA (suivi du code)
• Promotions (d’artefacts)
• Meta-données en général
Ce qui nous intéresse…
Workday Confidential
• Pas de source de vérité unique avec toute l’information nécessaire !
• La donnée est disséminée à travers plusieurs systèmes (AF, CI,
JIRA…)
• … est securisée avec des comptes différents (AD, LDAP)
• … est stockée sous différents formats (JSON, XML, CSV, etc)
• … n’est pas toujours facilement accessible
• Accéder à une source est (habituellement) facile
• Accéder à deux sources est déjà plus compliqué
• Pas de language de requête pour requêter la donnée aggregée
Problème: La donnée est partout !!
Workday Confidential
Les besoins
• Accès simple à l’information
• Modèle de données intuitif et unifié
• Language de requête puissant
• Donnée aussi fraîche que possible
 Fréquentes mises à jour
 Mises à jour rapides (performance)
• Capacité de facilement faire évoluer le modèle de données
• Capacité d’exposer l’information aux équipes de développement
(automatisation)
Les besoins
Workday Confidential
• Ne pas compter sur l’utilisateur pour fournir l’information (ou alors
en tout dernier recours) !
• L’information que nous recherchons habituellement existe déjà
ou alors peut-être dérivée, utilisons-la !
Mais surtout !
Workday Confidential
Sentinel – Architecture
Architecture
Workday Confidential
REST API
Web UI
Data
Miner
…
JIRA
Artifactory
Bamboo
BitBucket
Data SourcesUne fondation pour résoudre nos problèmes actuels et futurs
Neo4j
Aggregation
Sanitization
Normalization
• Outil en ligne de commande (écrit en Groovy)
• Fat jar exécutable
• S’exécute toutes les 15 mins depuis Bamboo
• Scanne les data sources contenant l’information utile
• Extrait, nettoie et normalise de manière préemptive l’information
• Détecte les mises à jour de manière incrémentale (performance)
• Crash-proof
• Enchaînement de 59 commandes en séquence
• Un scan dure entre 8 mins et 23 mins
L’extracteur de données
Workday Confidential
• Base de données NoSQL de type graph
• Paradigme adapté à notre problème
• Trés flexible et facile d’utilisation
• Schema-less
• Excellente performance
• Donnée stockée à un seul endroit
• Cypher (Language de requête) !
La base de données: Neo4j
Workday Confidential
• UI consistée de tableaux de bords HTML et graphiques dynamiques
• API REST
• Spring Boot, Thymeleaf, D3.js, Swagger
Les Services
Workday Confidential
Neo4j in a Nutshell
• Les noeuds ont des propriétés (comparable à une Map<String, ?>)
• … peuvent avoir 0-N labels (Typage, Polymorphisme)
Neo4j - Noeuds
Workday Confidential
core
1.0.5 jar
Artifact ArtifactoryFile Workday id com.workday:core
group com.workday
artifact core
version 1.0.5
created 1458713182201
• Les relations représentent un lien entre 2 noeuds
• … ont un nom
• … peuvent être dirigées
• … peuvent avoir des propriétés
Neo4j - Relations
Workday Confidential
Artifact
core
1.0.5 jar
Git Commit
core
5ce1f767
HAS_COMMIT
Language de requête de Neo4j
Un noeud ()
Un noeud avec un label (:Person)
Une relation entre 2 noeuds ()--()
Une relation dirigée avec un label ()-[:PARENT_OF]->()
MATCH (parent:Person)-[:PARENT_OF]->(child:Person)
RETURN parent.name, COLLECT(child.name)
Neo4j - Cypher
Workday Confidential
Extraction de la donnée
Tout démarre avec Artifactory
Workday Confidential
• Dépôt officiel des artefacts, rpms, images Docker
• L’API REST permet de détecter les nouveaux artefacts
Etape 1: Artefacts
Workday Confidential
• URI: com/workday/core/1.0.5/core-1.0.5-javadoc.jar
 Group com.workday
 Module core
 Version 1.0.5
 Type jar
 Classifier javadoc
 ID: “com.workday:core:1.0.5:javadoc@jar”
Artifact
core 1.0.5 jar
javadoc
Etape 2: Module Versions
Workday Confidential
• L’artefact est associé à une “Module Version”
 Group com.workday
 Module core
 Version 1.0.5
 ID: “com.workday:core:1.0.5”
ModuleVersion
core 1.0.5
Etape 3: Modules
Workday Confidential
• La module version est associée à un “Module”
 Group com.workday
 Module core
 ID: “com.workday:core”
Module
core
Les 3 concepts ensembles
Workday Confidential
Module
coreArtifact
jar
Artifact
javadoc
jar
Artifact
sources
jar
ARTIFACT_OF
Artifact
jar
Artifact
javadoc
jar
Artifact
sources
jar
ARTIFACT_OF
Version
1.0.5
Version
1.0.7
VERSION_OF VERSION_OF
Version
1.0.6
Etape 4: Résolution des dépendences
Workday Confidential
• Descripteurs Maven / Ivy  Dépendences
• Dépendences  Relations DEPENDS_ON
services
2.0.0
DEPENDS_ON
gson
2.2.2
core
1.0.5
DEPENDS_ON
Etape 5: Extraction des méta-données
Workday Confidential
• Alimentées au moment du build (plugin Gradle propriétaire)
• Capturent l’information suivante:
‒ Gradle, JDK, Machine de build
‒ Builds (Bamboo, Jenkins…)
‒ SCM changes (Git commit)
• Auto-documente les artefacts
Manifest Metadata – SCM Info
Workday Confidential
• WD-Git-Origin ssh://git@bitbucket.acme.com/core/core.git
• WD-Git-Commit e28a60b96f452680c57cb76798def09fd171011f
Artifact
core
1.0.5 jar
Git Commit
core
e28a60…
HAS_COMMIT
Exemples concrets
Liste de tous les artefacts Workday
Workday Confidential
Group Module Latest
Version
Age
(days)
SCM url SCM
change
Build
URL
Latest
JIRAs
com.workday core 1.0.5 120.2 core.git e28a60b9 URL CORE-120
com.workday foo-services 1.3.0 29.1 foo-services.git 146ae135 URL FOO-57
com.workday bar-services 2.2.8 54.8 bar-services.git b538c156 URL BAR-70
… … … … … … … …
Page web accessible avec toutes les dernières versions (donnée toujours à jour)
→ Où se trouve le build associé à ce fichier jar ?
→ Où sont les sources de ce fichier jar ?
Identification des dépendences 1/x (directes)
Workday Confidential
MATCH (dependent:ModuleVersion)-[:DEPENDS_ON]->(dependency:ModuleVersion)
WHERE dependency.id = "com.workday:core:1.0.5”
RETURN dependent.id AS dependent
 Service REST disponible
Dependent
com.workday:foo-
services:1.3.0
com.workday:foo-
services:1.2.5
com.workday:bar-
services:2.2.8
com.workday:bar-
services:2.2.7
…
Orchestration de builds
Workday Confidential
Producing build Consuming build
Bamboo Build
CORE
BUILT
Artifact
core 1.0.5
jar
ModuleVersion
core 1.0.5
ARTIFACT_OF
ModuleVersion
foo-services 1.3.0
ARTIFACT_OF
Bamboo Build
FOO-SERVICES
Artifact
foo-services 1.3.0
jar
BUILT
DEPENDS_ON
DEPENDS_ON
Release notes automatisées
Workday Confidential
Version 1 Version 2
Bamboo Build
CORE #11
BUILT
Artifact
core v1
jar
Git Commit
core
5ce1f767
HAS_REVISION
Git Commit
core
ee2a0e22
HAS_REVISION
Bamboo Build
CORE #12
Artifact
core v2
Jar
BUILT
PARENT_REVISION
JIRA Issue
CORE-120
LINKS_TO
Identifier les changements associés à un JIRA
Workday Confidential
Trouver toutes les mentions d’un JIRA dans les
commentaires de commit
Input: JIRA issue
Output: Set of SCM changes
JIRA Issue
CORE-120
Git Commit
core
5ce1f767
Git Commit
core
5954ff88
Git Commit
core
ee2a0e22
Règle: “Aucune dépendence dynamique permise”
Raison: Les builds doivent être reproductibles
Dynamic versions: 1.+, LATEST, [1.0, 2.0[
Détection des violations de règles
Workday Confidential
Page HTML listant toutes les infractions à la règle
ModuleVersion
baz 4.2.10
ModuleVersion
pmd-checks
1.+
DEPENDS_ON
Conclusion
Workday Confidential
• Service mis en production
• Neo4j est l’outil parfait pour capturer la donnée qui nous intéresse
‒ Très facile de refactorer / enrichir la donnée
• Cypher nous permet de comprendre la donnée aggregée
• Fondation solide pour de futurs services
‒ Partie difficile: Extraire la donnée
‒ Partie facile: Créer de nouvelles requêtes sur la donnée existante
• Decisions basées sur des faits ! Plus de suppositions
• Approche holistique
Q & A
Thanks for attending
Workday Confidential
TM

Contenu connexe

Tendances

Explorez vos données avec apache zeppelin
Explorez vos données avec apache zeppelinExplorez vos données avec apache zeppelin
Explorez vos données avec apache zeppelin
Bruno Bonnin
 
Spark tools by Jonathan Winandy
Spark tools by Jonathan WinandySpark tools by Jonathan Winandy
Spark tools by Jonathan Winandy
Paris Data Engineers !
 
Delta lake - des data lake fiables a grande échelle
Delta lake - des data lake fiables a grande échelleDelta lake - des data lake fiables a grande échelle
Delta lake - des data lake fiables a grande échelle
françois de Buttet
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le Cloud
Victor Coustenoble
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
Microsoft
 
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Microsoft Décideurs IT
 
GAB 2017 PARIS - Azure Data Lake La Big Data 2.0 par Jean-Pierre Riehl et Fab...
GAB 2017 PARIS - Azure Data Lake La Big Data 2.0 par Jean-Pierre Riehl et Fab...GAB 2017 PARIS - Azure Data Lake La Big Data 2.0 par Jean-Pierre Riehl et Fab...
GAB 2017 PARIS - Azure Data Lake La Big Data 2.0 par Jean-Pierre Riehl et Fab...
AZUG FR
 
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
GUSS
 
SQL Saturday Paris 2015 - Polybase
SQL Saturday Paris 2015 - PolybaseSQL Saturday Paris 2015 - Polybase
SQL Saturday Paris 2015 - Polybase
Romain Casteres
 
Modélisation de données pour MongoDB
Modélisation de données pour MongoDBModélisation de données pour MongoDB
Modélisation de données pour MongoDB
MongoDB
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
Victor Coustenoble
 
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
Jean-Pierre Riehl
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
Lilia Sfaxi
 
June Spark meetup : search as recommandation
June Spark meetup : search as recommandationJune Spark meetup : search as recommandation
June Spark meetup : search as recommandation
Modern Data Stack France
 
SQLSaturday Paris 2014 - Ce que tout DBA doit savoir sur la configuration et ...
SQLSaturday Paris 2014 - Ce que tout DBA doit savoir sur la configuration et ...SQLSaturday Paris 2014 - Ce que tout DBA doit savoir sur la configuration et ...
SQLSaturday Paris 2014 - Ce que tout DBA doit savoir sur la configuration et ...
GUSS
 
Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...
Mathias Kluba
 
DataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTDataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoT
Victor Coustenoble
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft Techdays
Victor Coustenoble
 
Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6
MongoDB
 
Azure Stream analytics / Event Hub
Azure Stream analytics / Event HubAzure Stream analytics / Event Hub
Azure Stream analytics / Event Hub
Michel HUBERT
 

Tendances (20)

Explorez vos données avec apache zeppelin
Explorez vos données avec apache zeppelinExplorez vos données avec apache zeppelin
Explorez vos données avec apache zeppelin
 
Spark tools by Jonathan Winandy
Spark tools by Jonathan WinandySpark tools by Jonathan Winandy
Spark tools by Jonathan Winandy
 
Delta lake - des data lake fiables a grande échelle
Delta lake - des data lake fiables a grande échelleDelta lake - des data lake fiables a grande échelle
Delta lake - des data lake fiables a grande échelle
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le Cloud
 
Azure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides KeynoteAzure Camp 9 Décembre 2014 - slides Keynote
Azure Camp 9 Décembre 2014 - slides Keynote
 
Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"Rendez vos objets connectés intelligents avec la "Lambda architecture"
Rendez vos objets connectés intelligents avec la "Lambda architecture"
 
GAB 2017 PARIS - Azure Data Lake La Big Data 2.0 par Jean-Pierre Riehl et Fab...
GAB 2017 PARIS - Azure Data Lake La Big Data 2.0 par Jean-Pierre Riehl et Fab...GAB 2017 PARIS - Azure Data Lake La Big Data 2.0 par Jean-Pierre Riehl et Fab...
GAB 2017 PARIS - Azure Data Lake La Big Data 2.0 par Jean-Pierre Riehl et Fab...
 
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
[JSS2015] Azure SQL Data Warehouse - Azure Data Lake
 
SQL Saturday Paris 2015 - Polybase
SQL Saturday Paris 2015 - PolybaseSQL Saturday Paris 2015 - Polybase
SQL Saturday Paris 2015 - Polybase
 
Modélisation de données pour MongoDB
Modélisation de données pour MongoDBModélisation de données pour MongoDB
Modélisation de données pour MongoDB
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
 
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
Azure Data Lake, le big data 2.0 (Global Azure Bootcamp Paris 2017)
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
June Spark meetup : search as recommandation
June Spark meetup : search as recommandationJune Spark meetup : search as recommandation
June Spark meetup : search as recommandation
 
SQLSaturday Paris 2014 - Ce que tout DBA doit savoir sur la configuration et ...
SQLSaturday Paris 2014 - Ce que tout DBA doit savoir sur la configuration et ...SQLSaturday Paris 2014 - Ce que tout DBA doit savoir sur la configuration et ...
SQLSaturday Paris 2014 - Ce que tout DBA doit savoir sur la configuration et ...
 
Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...
 
DataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTDataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoT
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft Techdays
 
Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6Les nouveautés de MongoDB 3.6
Les nouveautés de MongoDB 3.6
 
Azure Stream analytics / Event Hub
Azure Stream analytics / Event HubAzure Stream analytics / Event Hub
Azure Stream analytics / Event Hub
 

Similaire à GraphTour - Workday: Tracking activity with Neo4j (French version)

Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
Laurent Guérin
 
JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014
telosys
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
Laurent Guérin
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
Laurent Broudoux
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
Stéphane Liétard
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
VISEO
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautés
Mathieu Elie
 
Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012
Alexandre Morgaut
 
Poitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchPoitou charentes JUG - Elasticsearch
Poitou charentes JUG - Elasticsearch
David Pilato
 
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
Tugdual Grall
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
Stéphane Traumat
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
Emmanuel Hugonnet
 
Présentation PFE: SmartAudit
Présentation PFE: SmartAuditPrésentation PFE: SmartAudit
Présentation PFE: SmartAudit
Mohamed Ayoub OUERTATANI
 
I don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry piI don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry pi
adelegue
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
hibnico
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
Microsoft
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
MSDEVMTL
 
Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - Elasticsearch
David Pilato
 
What's Next Replay! Lyon 2011 - A. Cogoluegnes
What's Next Replay! Lyon 2011 - A. CogoluegnesWhat's Next Replay! Lyon 2011 - A. Cogoluegnes
What's Next Replay! Lyon 2011 - A. Cogoluegnes
Zenika
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
Ludovic Piot
 

Similaire à GraphTour - Workday: Tracking activity with Neo4j (French version) (20)

Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
 
JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014 JUG Nantes - Telosys Tools - Avril 2014
JUG Nantes - Telosys Tools - Avril 2014
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautés
 
Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012Carnet de Route du Développeur - ENSIMAG 2012
Carnet de Route du Développeur - ENSIMAG 2012
 
Poitou charentes JUG - Elasticsearch
Poitou charentes JUG - ElasticsearchPoitou charentes JUG - Elasticsearch
Poitou charentes JUG - Elasticsearch
 
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
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Présentation PFE: SmartAudit
Présentation PFE: SmartAuditPrésentation PFE: SmartAudit
Présentation PFE: SmartAudit
 
I don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry piI don't always write reactive application but when I do, it run on raspberry pi
I don't always write reactive application but when I do, it run on raspberry pi
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
Lyon JUG - Elasticsearch
Lyon JUG - ElasticsearchLyon JUG - Elasticsearch
Lyon JUG - Elasticsearch
 
What's Next Replay! Lyon 2011 - A. Cogoluegnes
What's Next Replay! Lyon 2011 - A. CogoluegnesWhat's Next Replay! Lyon 2011 - A. Cogoluegnes
What's Next Replay! Lyon 2011 - A. Cogoluegnes
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
 

Plus de Neo4j

BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Neo4j
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Neo4j
 
Atelier - Architecture d’applications de Graphes - GraphSummit Paris
Atelier - Architecture d’applications de Graphes - GraphSummit ParisAtelier - Architecture d’applications de Graphes - GraphSummit Paris
Atelier - Architecture d’applications de Graphes - GraphSummit Paris
Neo4j
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
FLOA - Détection de Fraude - GraphSummit Paris
FLOA -  Détection de Fraude - GraphSummit ParisFLOA -  Détection de Fraude - GraphSummit Paris
FLOA - Détection de Fraude - GraphSummit Paris
Neo4j
 
SOPRA STERIA - GraphRAG : repousser les limitations du RAG via l’utilisation ...
SOPRA STERIA - GraphRAG : repousser les limitations du RAG via l’utilisation ...SOPRA STERIA - GraphRAG : repousser les limitations du RAG via l’utilisation ...
SOPRA STERIA - GraphRAG : repousser les limitations du RAG via l’utilisation ...
Neo4j
 
ADEO - Knowledge Graph pour le e-commerce, entre challenges et opportunités ...
ADEO -  Knowledge Graph pour le e-commerce, entre challenges et opportunités ...ADEO -  Knowledge Graph pour le e-commerce, entre challenges et opportunités ...
ADEO - Knowledge Graph pour le e-commerce, entre challenges et opportunités ...
Neo4j
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysis
Neo4j
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
Neo4j
 

Plus de Neo4j (20)

BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid ResearchHarnessing the Power of NLP and Knowledge Graphs for Opioid Research
Harnessing the Power of NLP and Knowledge Graphs for Opioid Research
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and BioinformaticiansBiomedical Knowledge Graphs for Data Scientists and Bioinformaticians
Biomedical Knowledge Graphs for Data Scientists and Bioinformaticians
 
Atelier - Architecture d’applications de Graphes - GraphSummit Paris
Atelier - Architecture d’applications de Graphes - GraphSummit ParisAtelier - Architecture d’applications de Graphes - GraphSummit Paris
Atelier - Architecture d’applications de Graphes - GraphSummit Paris
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
FLOA - Détection de Fraude - GraphSummit Paris
FLOA -  Détection de Fraude - GraphSummit ParisFLOA -  Détection de Fraude - GraphSummit Paris
FLOA - Détection de Fraude - GraphSummit Paris
 
SOPRA STERIA - GraphRAG : repousser les limitations du RAG via l’utilisation ...
SOPRA STERIA - GraphRAG : repousser les limitations du RAG via l’utilisation ...SOPRA STERIA - GraphRAG : repousser les limitations du RAG via l’utilisation ...
SOPRA STERIA - GraphRAG : repousser les limitations du RAG via l’utilisation ...
 
ADEO - Knowledge Graph pour le e-commerce, entre challenges et opportunités ...
ADEO -  Knowledge Graph pour le e-commerce, entre challenges et opportunités ...ADEO -  Knowledge Graph pour le e-commerce, entre challenges et opportunités ...
ADEO - Knowledge Graph pour le e-commerce, entre challenges et opportunités ...
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysis
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
 

GraphTour - Workday: Tracking activity with Neo4j (French version)

  • 2. • François Ritaly • Build Engineer (Build Engineering Team) • Situé à Paris • Responsabilités ‒ Développement de plugins Gradle réutilisables ‒ Administration d’Artifactory ‒ Développement d’outils sur mesure ‒ Support aux équipes de développment (builds principalement) ‒ Sentinel (Le sujet de cette présentation) Qui suis-je ? Workday Confidential
  • 3. La mission de mon équipe
  • 4. • Définir les bonnes pratiques pour les équipes de développement (dependency locking, promotion d’artefacts, gestion des meta-données) • Fournir des outils génériques (Plugins Gradle & autres outils sur mesure) • Administrer les services communs (Artifactory) • Assister les équipes de développment Build Engineering – Notre mission Workday Confidential
  • 5. • S’assurer que les règles sont bien suivies • Chez Workday, les ingénieurs ont beaucoup de liberté ! ‒ Netflix: The Paved Road • Les outils proposés sont-ils pertinents ? • Comprendre comment les équipes de développement travaillent  On a besoin de réponses a ces questions ! Why We Need Monitoring Workday Confidential
  • 6. • Artefacts (Jars, Rpms, “Deliveries”, etc) • CI Builds (Bamboo, Team City &Jenkins) • SCM changes (BitBucket, GitHub, Gerritt, etc) • Dépendences (entre Artifacts, Builds, etc) • Tickets JIRA (suivi du code) • Promotions (d’artefacts) • Meta-données en général Ce qui nous intéresse… Workday Confidential
  • 7. • Pas de source de vérité unique avec toute l’information nécessaire ! • La donnée est disséminée à travers plusieurs systèmes (AF, CI, JIRA…) • … est securisée avec des comptes différents (AD, LDAP) • … est stockée sous différents formats (JSON, XML, CSV, etc) • … n’est pas toujours facilement accessible • Accéder à une source est (habituellement) facile • Accéder à deux sources est déjà plus compliqué • Pas de language de requête pour requêter la donnée aggregée Problème: La donnée est partout !! Workday Confidential
  • 9. • Accès simple à l’information • Modèle de données intuitif et unifié • Language de requête puissant • Donnée aussi fraîche que possible  Fréquentes mises à jour  Mises à jour rapides (performance) • Capacité de facilement faire évoluer le modèle de données • Capacité d’exposer l’information aux équipes de développement (automatisation) Les besoins Workday Confidential
  • 10. • Ne pas compter sur l’utilisateur pour fournir l’information (ou alors en tout dernier recours) ! • L’information que nous recherchons habituellement existe déjà ou alors peut-être dérivée, utilisons-la ! Mais surtout ! Workday Confidential
  • 12. Architecture Workday Confidential REST API Web UI Data Miner … JIRA Artifactory Bamboo BitBucket Data SourcesUne fondation pour résoudre nos problèmes actuels et futurs Neo4j Aggregation Sanitization Normalization
  • 13. • Outil en ligne de commande (écrit en Groovy) • Fat jar exécutable • S’exécute toutes les 15 mins depuis Bamboo • Scanne les data sources contenant l’information utile • Extrait, nettoie et normalise de manière préemptive l’information • Détecte les mises à jour de manière incrémentale (performance) • Crash-proof • Enchaînement de 59 commandes en séquence • Un scan dure entre 8 mins et 23 mins L’extracteur de données Workday Confidential
  • 14. • Base de données NoSQL de type graph • Paradigme adapté à notre problème • Trés flexible et facile d’utilisation • Schema-less • Excellente performance • Donnée stockée à un seul endroit • Cypher (Language de requête) ! La base de données: Neo4j Workday Confidential
  • 15. • UI consistée de tableaux de bords HTML et graphiques dynamiques • API REST • Spring Boot, Thymeleaf, D3.js, Swagger Les Services Workday Confidential
  • 16. Neo4j in a Nutshell
  • 17. • Les noeuds ont des propriétés (comparable à une Map<String, ?>) • … peuvent avoir 0-N labels (Typage, Polymorphisme) Neo4j - Noeuds Workday Confidential core 1.0.5 jar Artifact ArtifactoryFile Workday id com.workday:core group com.workday artifact core version 1.0.5 created 1458713182201
  • 18. • Les relations représentent un lien entre 2 noeuds • … ont un nom • … peuvent être dirigées • … peuvent avoir des propriétés Neo4j - Relations Workday Confidential Artifact core 1.0.5 jar Git Commit core 5ce1f767 HAS_COMMIT
  • 19. Language de requête de Neo4j Un noeud () Un noeud avec un label (:Person) Une relation entre 2 noeuds ()--() Une relation dirigée avec un label ()-[:PARENT_OF]->() MATCH (parent:Person)-[:PARENT_OF]->(child:Person) RETURN parent.name, COLLECT(child.name) Neo4j - Cypher Workday Confidential
  • 20. Extraction de la donnée
  • 21. Tout démarre avec Artifactory Workday Confidential • Dépôt officiel des artefacts, rpms, images Docker • L’API REST permet de détecter les nouveaux artefacts
  • 22. Etape 1: Artefacts Workday Confidential • URI: com/workday/core/1.0.5/core-1.0.5-javadoc.jar  Group com.workday  Module core  Version 1.0.5  Type jar  Classifier javadoc  ID: “com.workday:core:1.0.5:javadoc@jar” Artifact core 1.0.5 jar javadoc
  • 23. Etape 2: Module Versions Workday Confidential • L’artefact est associé à une “Module Version”  Group com.workday  Module core  Version 1.0.5  ID: “com.workday:core:1.0.5” ModuleVersion core 1.0.5
  • 24. Etape 3: Modules Workday Confidential • La module version est associée à un “Module”  Group com.workday  Module core  ID: “com.workday:core” Module core
  • 25. Les 3 concepts ensembles Workday Confidential Module coreArtifact jar Artifact javadoc jar Artifact sources jar ARTIFACT_OF Artifact jar Artifact javadoc jar Artifact sources jar ARTIFACT_OF Version 1.0.5 Version 1.0.7 VERSION_OF VERSION_OF Version 1.0.6
  • 26. Etape 4: Résolution des dépendences Workday Confidential • Descripteurs Maven / Ivy  Dépendences • Dépendences  Relations DEPENDS_ON services 2.0.0 DEPENDS_ON gson 2.2.2 core 1.0.5 DEPENDS_ON
  • 27. Etape 5: Extraction des méta-données Workday Confidential • Alimentées au moment du build (plugin Gradle propriétaire) • Capturent l’information suivante: ‒ Gradle, JDK, Machine de build ‒ Builds (Bamboo, Jenkins…) ‒ SCM changes (Git commit) • Auto-documente les artefacts
  • 28. Manifest Metadata – SCM Info Workday Confidential • WD-Git-Origin ssh://git@bitbucket.acme.com/core/core.git • WD-Git-Commit e28a60b96f452680c57cb76798def09fd171011f Artifact core 1.0.5 jar Git Commit core e28a60… HAS_COMMIT
  • 30. Liste de tous les artefacts Workday Workday Confidential Group Module Latest Version Age (days) SCM url SCM change Build URL Latest JIRAs com.workday core 1.0.5 120.2 core.git e28a60b9 URL CORE-120 com.workday foo-services 1.3.0 29.1 foo-services.git 146ae135 URL FOO-57 com.workday bar-services 2.2.8 54.8 bar-services.git b538c156 URL BAR-70 … … … … … … … … Page web accessible avec toutes les dernières versions (donnée toujours à jour) → Où se trouve le build associé à ce fichier jar ? → Où sont les sources de ce fichier jar ?
  • 31. Identification des dépendences 1/x (directes) Workday Confidential MATCH (dependent:ModuleVersion)-[:DEPENDS_ON]->(dependency:ModuleVersion) WHERE dependency.id = "com.workday:core:1.0.5” RETURN dependent.id AS dependent  Service REST disponible Dependent com.workday:foo- services:1.3.0 com.workday:foo- services:1.2.5 com.workday:bar- services:2.2.8 com.workday:bar- services:2.2.7 …
  • 32. Orchestration de builds Workday Confidential Producing build Consuming build Bamboo Build CORE BUILT Artifact core 1.0.5 jar ModuleVersion core 1.0.5 ARTIFACT_OF ModuleVersion foo-services 1.3.0 ARTIFACT_OF Bamboo Build FOO-SERVICES Artifact foo-services 1.3.0 jar BUILT DEPENDS_ON DEPENDS_ON
  • 33. Release notes automatisées Workday Confidential Version 1 Version 2 Bamboo Build CORE #11 BUILT Artifact core v1 jar Git Commit core 5ce1f767 HAS_REVISION Git Commit core ee2a0e22 HAS_REVISION Bamboo Build CORE #12 Artifact core v2 Jar BUILT PARENT_REVISION JIRA Issue CORE-120 LINKS_TO
  • 34. Identifier les changements associés à un JIRA Workday Confidential Trouver toutes les mentions d’un JIRA dans les commentaires de commit Input: JIRA issue Output: Set of SCM changes JIRA Issue CORE-120 Git Commit core 5ce1f767 Git Commit core 5954ff88 Git Commit core ee2a0e22
  • 35. Règle: “Aucune dépendence dynamique permise” Raison: Les builds doivent être reproductibles Dynamic versions: 1.+, LATEST, [1.0, 2.0[ Détection des violations de règles Workday Confidential Page HTML listant toutes les infractions à la règle ModuleVersion baz 4.2.10 ModuleVersion pmd-checks 1.+ DEPENDS_ON
  • 36. Conclusion Workday Confidential • Service mis en production • Neo4j est l’outil parfait pour capturer la donnée qui nous intéresse ‒ Très facile de refactorer / enrichir la donnée • Cypher nous permet de comprendre la donnée aggregée • Fondation solide pour de futurs services ‒ Partie difficile: Extraire la donnée ‒ Partie facile: Créer de nouvelles requêtes sur la donnée existante • Decisions basées sur des faits ! Plus de suppositions • Approche holistique
  • 37. Q & A Thanks for attending Workday Confidential
  • 38. TM