Databases

A mon arrivé, le projet était déjà en cours de développement et plusieurs sources de données, étaient presque opérationnelles.

L’équipe était constitué d’un responsable projet et de 3 développeurs dont l’un à mi-temps.

Il n’y avait pas de cahier des charges ni de chef de projet mais les membres de l’équipe étaient suffisamment autonomes et professionnels pour surmonter cette difficulté.

Les sources en cours de développement étaient: Eurostat, ESRI, FMI, BCE, BEA

Objectifs du projet Widukind

  • Servir en un point unique, des données macro-économiques provenant de sources différentes.
  • Normaliser le format de sortie
  • Assurer l’archivage et la gestion des révisions
  • Devenir une source de données macro-économiques, durable, fiable et de confiance pour les utilisateurs.
  • Donner la possibilité à des contributeurs de développer des plugins et de nouvelles sources de données.

Ma mission de départ

  • Développer des tests unitaires pour les fetchers existants
  • Documenter le code
  • Créer de nouveaux fetchers

fetcher est le nom donné à chaque module dédié à la récupération d’une source de données.

Contexte de la mission

  • Cette mission a été totalement réalisé en télé-travail.
  • Une conférence skype hebdomadaire permettait de faire le point et de fixer les objectifs de la semaine suivante.
  • Plusieurs dépôts étaient alimentés par des pull-request à partir de nos forks sur Github.
  • Un dépôt privé Github était utilisé pour communiquer sur le projet à l’aide des Issues (environ 700 issues ont été créés. je suis l’auteur des deux tiers environ).

Architecture et outils

  • MongoDB Server 3.x
  • Redis Server
  • Python 3.4
  • Pymongo 3
  • Pandas
  • beautifulsoup4
  • requests
  • lxml
  • UnitTest, Nose, httpretty, flake8, coverage, pep8
  • Git, Github
  • SSH

Mes réalisations

  • Développements de tests unitaires pour les principales fonctionnalités. 64% de couverture environ pour dlstats.
  • Tests fonctionnels génériques pour les fetchers en prévision des nombreuses sources de données à venir
  • Développement de Widukind WEB et Widukind API
  • Développement d’une solution de type swagger light pour l’API Rest.
  • Mise au point d’un environnement de déploiement avec Docker/Compose
  • Déploiement d’un cluster Mongo (3 serveurs)
  • Déploiement d’un serveur Piwik pour le suivi des statistiques de fréquentation du site Web.
  • Remplacement d’ElasticSearch par une solution de recherche full-text MongoDB
  • Nettoyage du code existant et simplifications

Statistiques sur le code produit

Même si la quantité de code produits n’est pas un gage de qualité, il donne au moins une mesure de ma productivité sur les 11 mois de développement.

Ne sont comptées que les lignes de code Python:

  • dlstats: 18 348 sur 19 285
  • widukind-common: 3 647
  • widukind-web: 3 100
  • widukind-api: 3 646

Environ 28 741 lignes de code produits.

Les composants du projet Widukind

Widukind Web

Application WEB pour servir les données et effectuer des recherches multi-critères.

Databases

Series Modal

Series Révisions

Site - Sources.


Challenges:

Ma principale réussite dans cette application est d’avoir réussi à mettre en œuvre une recherche multi-critère avec des données variables d’un dataset à l’autre (dimensions/attributes).

Mon second challenge a été de réaliser cette interface complexe avec Jquery/Ajax sans avoir à utiliser des framework de type SPA comme React.js ou Angular.

Widukind Api

API Rest multi-format (JSON/HTML/SDMX/EVIEWS)

API Json

Site - Sources.

Challenges:

La difficulté pour cette API Rest était de mettre au point les paramètres de recherches dont les composantes varient selon le dataset.

Widukind Dlstats

Moteur principal du projet pour le téléchargement automatique des sources de données et leur stockage.

Sources

Challenges:

Les fournisseurs de données en Open Data proposent des formats plus ou moins normalisés mais avec des interprétations différente de la norme.

C’est le cas de SDMX qui est un format international d’échange de données statistiques.

Plusieurs version cohabitent et leur implémentations par les fournisseurs de données respectent plus ou moins la norme.

Malgré ces difficultés, SDMX est la seule initiative de ce genre à être adopté par un si grand nombre d’acteurs de données économique et nous a permit de développer rapidement des routines de chargements et traitements automatisés.

Widukind Docker

Environnement de déploiement (production/développement) de tous les composants Widukind.

Sources

Widukind Meteor

Essai personnel d’une version Meteor.js de Widukind Web Widukind Meteor

Etat des lieux à ma sortie du projet

L’application Web et l’API REST sont en ligne.

Les sources opérationnelles sont:

Liens