Tag Archives: EmbDDB

Des nouvelles de MyDMAM

​L’anniversaire de ses 5 années est passé il y a quelques semaines, et c’est le moment de profiter de cette fin d’année 2017 pour faire le point. Le projet n’est pas mort, il n’est même pas en arrêt ! Alors pourquoi n’y a t-il pas eu de nouveautés depuis un certain temps et qu’est ce qui bloque avec MyDMAM ?

La dette technique (Wikipedia)

Le vieillissement du socle technique écrit et pensé en 2012 se fait sentir. Sans rentrer dans les détails, MyDMAM repose sur des technologies qui ne sont plus supportées depuis plusieurs années, et ces technologies montrent elles-mêmes des vraies limites car elles ne sont pas non plus utilisées pour ce qu’elles savent faire le mieux.

Cinq solutions s’ouvrent alors :

  • Continuer à avancer avec ces technologies, coûte que coûte
  • Tout repenser de A à Z, avec d’autres technologies, qu’il va falloir tester et maîtriser
  • Maintenir moi-même ces technologies et les faire évoluer
  • Repenser ce socle technique
  • Laisser tomber MyDMAM et penser un autre type d’outil

Avec une certaine évidence, le choix de repenser le socle technique c’est imposé, ce qui se résume à repenser :

  • Un moteur de base de données
  • Un moyen de communication inter-instances
  • Et de fait revoir l’architecture de la topologie actuelle (instances qui communique entre elles à travers une base de données)

Et en substance, l’ensemble des tâches à effectuer :

  • Penser une structure de données pour de l’échange inter-nodes
  • Permette à des nodes de se voir, de se parler entre eux, de se détecter eux même, sans point central, ni de node « master »
  • Stocker des données en local pour chaque node. Des données de travail, comme des tâches, des statuts, des références, mais pas des données médias.
  • Synchroniser ces données entre nodes au fil de l’eau
  • De la tuyauterie Java (injection de dépendances, instanciation dynamique, tests unitaires)
  • Et enfin, adapter le legacy code avec ces nouvelles API

Bref, je suis en train d’écrite une base de données distribuées dans MyDMAM. C’est très complexe, ça prend du temps, et les problèmes rencontrés sont à la hauteur du défi, et font perdre un temps considérable de travail. Je commence tout juste à entrevoir la sortie.

Pourquoi s’infliger tant de travail ? Il existe 1001 technologies pour stocker des données. Il en existe moins qui soient modernes, robustes, faibles et performantes. Il en existe très peu qui soient aussi simple à mettre en place quand on commence une installation de 0 : par exemple les prerequis techniques pour un cluster Hadoop sont hors de portée d’un utilisateur « simple » qui veut faire quelques tests. Et de fait, ça sera là cas pour beaucoup de technologies.

Ce travail a débuté depuis plus d’un an, et j’ai plus valider de nouveaux outils en tests dans MyDMAM depuis cet été : EmbDDB. Cela progresse, l’implémentation de base n’est pas encore terminée, il restera encore des tests fonctionnels à faire, en plus de toutes adaptations des fonctions actuelles. MyDMAM restera avec ElasticSearch mais quittera Cassandra, un bel outil, mais si mal utilisé ici.

Je crois en ce projet qui rendra MyDMAM plus fiable, plus évolutif, plus bidouillable. Et de fait plus simple à exploiter.

Il y aura d’autres travaux après, comme au niveau de la gestion des sessions Web et API REST. Mais c’est une autre histoire.