Image d'illustration de l'article Datagotchi - application de science prédictive pour les élections.

Datagotchi - application de science prédictive pour les élections.

Datagotchi est un projet de science prédictive qui prédit les votes des participants liés à leurs habitudes de vie.

Les points clés

  • Développer une application ludique de prédiction de vote pour les élections Canadienne, US et Québécoise.
  • Gestion de plusieurs éditions (USA, Canada, Québec)
  • Infrastructure devant supporter 2 000 000+ requêtes journalières.

Le contexte

Datagotchi est une application de science prédictive qui se veut ludique et gamifiée.

En répondant à des questions sur ses habitudes de vie, un modèle de machine learning prédit l’intention de vote des répondants.

L’objectif est double, d’un côté elle cherche à démontrer que les habitudes de vie trahissent son orientation politique dans la majorité des cas, de l’autre, elle agrège les résultats des répondants pour en faire des statistiques utiles à des fins de recherche.

Bien sûr, il ne s’agit pas d’orienter le choix politique mais bel et bien d’analyser si le style de vie des utilisateurs a une corrélation directe avec son vote.

L’application est développée par le CLESSN (Chaire de leadership en enseignement des sciences sociales numériques) de l’université Laval à Québec.

Période de vote

L’application a connu un fort succès au Québec, puis au Canada pour enfin finir par être utilisée dans les élections américaines.

Architecture

L’infrastructure a énormément évolué au fil du temps, d’abord à base de clusters de containers orchestrés, nous avons dû augmenter les capacités de répondants drastiquement pour faire face à la demande croissante d’utilisation. En période électorale, l’application connaissait une affluence soudaine du fait qu’elle se retrouvait en page d’accueil de plusieurs journaux nationaux.

On a tous la même habitude : on lit nos journaux le matin. Ainsi, avec Datagotchi directement accessible, on avait un afflux massif de visiteurs dès 8h. Ce pic était tel qu’il était simplement impossible de pouvoir scaler suffisamment rapidement les containers et répondre à tout le monde dans un temps décent. Il fallait préparer l’infrastructure en conséquence et scaler automatiquement notre infra peu avant le pic attendu.

Nous avons ensuite migré l’infrastructure vers du Serverless pour pouvoir répondre à plusieurs millions de requêtes journalières.

Évidemment, pour toutes les étapes de ce parcours, nous avons effectué beaucoup de tests de charge avec différentes topologies pour nous assurer qu’aucun bottleneck n’était présent.

Côté technologie, l’application est développée en Python avec Django et en React. Le passage en serverless a été fait en Node.js dans des fonctions Lambda.