La refonte et l'expansion de Metrio

Metrio est une application web permettant aux grandes organisations et aux municipalités de mesurer, analyser et communiquer leur performance en développement durable.

Afin de les accompagner dans leurs objectifs, Metrio permet aux utilisateurs de rassembler des données provenant de sources distinctes et d’en retirer un maximum d’information. Ils peuvent ainsi non seulement analyser de multiples facettes de leurs performances environnementales, mais également mettre en évidence les points à améliorer afin d’ajuster leurs opérations en conséquence.

Qu’est-ce que ces organisations utilisaient avant Metrio? Des feuilles Excel. Beaucoup de feuilles Excel. L’agrégation manuelle de différentes sources de données. Des bases de données disjointes. Des analyses manuelles, prônes à l’erreur.

Metrio simplifie la tâche des utilisateurs en leur permettant de centraliser l’ensemble des données nécessaires à l’élaboration d’indicateurs pertinents pour eux. Chaque indicateur est configuré spécifiquement pour les besoins du client.

La discussion initiale

À notre arrivée dans le projet, en 2012, Metrio était utilisé par une quinzaine de clients. Configurer un compte Metrio pour un nouveau client était une opération fastidieuse et assez manuelle. Essentiellement, une copie complète de l’application était effectuée à partir d’un compte existant similaire, puis modifié pour répondre aux besoins du nouveau client. Non seulement le processus était-il soporifique, mais il impliquait également que chaque compte de client était maintenu séparément.

Les besoins naissants

Impossible donc de rendre disponible à tous les clients une nouvelle fonctionnalité d’un seul coup. Il fallait prendre le temps de copier le code nécessaire dans chacune des copies de l’application ou se résigner à ce qu’un seul client puisse profiter de la fonctionnalité en question. Les différentes applications étaient donc de plus en plus difficiles à faire évoluer, en plus d’être un cauchemar en maintenance!

Nous avons alors discuté avec le client de nos inquiétudes faces à ce processus, une réflexion qui a finalement mené au développement de la version 2 de Metrio par notre équipe. Nous avons démontré à notre client qu’il y avait des économies de temps importantes à faire sur la configuration des comptes et que cela aurait un impact majeur sur la force de son offre de service.

Présentation des indicateurs dans Metrio

Les indicateurs de chaque compte sont sur son accueil, où ils y sont accessibles par catégorie

La refonte

C’est ainsi que l’équipe de Metrio décida de faire appel à nous pour bâtir une solution plus robuste, moderne et flexible, qui répondrait aux attentes des clients actuels en plus de supporter une évolution très rapide dans les années à venir.

Afin de se faire une idée claire de la situation actuelle, nous avons commencé par configurer deux comptes pour de nouveaux clients avec la première version de Metrio. Cet exercice fut très révélateur et mis en lumière dès le départ certaines des lacunes mentionnées précédemment. Avec cette expérience en tête, nous avons pu aider le client à déterminer de manière efficace les buts à se fixer pour la prochaine version de Metrio.

Les objectifs de la refonte étaient clairs:

Nous avons donc tenté de réduire Metrio à ses concepts de base afin de bien identifier les points communs à tous les comptes clients, pour ensuite attaquer les objectifs en se basant sur ces concepts. Puisque les objectifs de cette nouvelle version étaient différents de ceux de Metrio 1, nous avons adapté les technologies et l’architecture du projet en conséquence.

Une app pour les gouverner tous

Tous les comptes de Metrio font maintenant partie d’une même application, tout en étant complètement isolés les uns des autres. Chaque client a donc accès à de nouvelles fonctionnalités sur une base régulière, et il n’y a maintenant qu’une seule version de l’application à maintenir et déployer. Cette technique a aussi comme effet secondaire d’uniformiser la présentation des comptes.

PHP + MYSQL → RUBY + MONGODB

Afin de conserver la possibilité d’écrire du code par client pour des besoins hautement personnalisés, nous avons choisi d’utiliser le langage ultra-flexible Ruby ainsi qu’une base de donnée “sans schéma”. Cette combinaison possède certaines limitations, mais permet d’atteindre un objectif important de la refonte d’une façon relativement efficace.

Côté technique

Lorsque que certains indicateurs d’un client ne sont pas gérées par l’application générique, nous avons la possibilité d’écrire un Rails::Engine. Le code sur mesure d’un client et ses tests sont donc isolés dans un dossier, sans être en conflit avec le reste de l’application.

Flash -> SVG

Pourquoi bâtir une application pour le futur avec un outil du passé? Nous avons changé l’outil graphique pour l’excellent Highcharts, ce qui permet une grande variété de visualisations ainsi qu’un haut niveau de personnalisation.

Exemple de l'outil de graphiques de Metrio

La technologie qui propulse Highcharts est flexible et supporte de nombreux types de graphiques

Configuration de compte

Dans Metrio 1, chacun des indicateurs devait être programmé sur mesure. Dans la nouvelle version, chaque compte est configuré par un fichier YAML. Ce choix permet d’utiliser une syntaxe simple et rigoureuse, et rend la configuration de compte accessible aux non-dévelopeurs. Grâce à cette méthode de configuration, on peut même envisager créer une interface web permettant la configuration complète d’un compte!

Côté technique

Pour simplifier la configuration de compte, nous avons mis sur pied un mini-langage avec Treetop permettant de reconnaître des expressions mathématiques et de les évaluer dans le contexte de Metrio.

Les résultats

Un an après le lancement de la nouvelle version, les effets sur Metrio ont été considérables. Le nombre de clients n’a pas seulement augmenté : il a triplé. La clientèle est également beaucoup plus diversifiée qu’elle ne l’était, notamment en raison de la nouvelle flexibilité de l’application. En effet, la conception et la configuration d’indicateurs sur mesure se font nettement plus rapidement qu’auparavant (selon notre expérience, un gain de 300%!)

Mais surtout, grâce entre autres à une meilleure connaissance des besoins des clients, la version 2 de Metrio repose aujourd’hui sur des fondations beaucoup plus robustes que sa version précédente. Grâce à cette nouvelle structure, de nouvelles fonctionnalités sont régulièrement développées et bien d’autres améliorations au produit sont prévues dans les mois à venir.

La capacité à allier créativité dans la conception et efficacité dans l'exécution place Hookt dans une catégorie à part. Cette combinaison d'expertises leur a permis de réaliser avec brio tous les mandats que nous leur avons confié au fil des ans et c'est vers eux que nous nous tournons pour relever nos défis Web les plus importants.

Pierre-Alexandre Hurtubise Associé, Metrio